C 开发非x86操作系统

C 开发非x86操作系统,c,assembly,embedded,operating-system,C,Assembly,Embedded,Operating System,我必须很快选择一个论文主题,我正在考虑为一个不是x86的体系结构实现一个操作系统(我倾向于ARM或AVR)。我之所以避免使用x86,是因为我想获得一些嵌入式平台的经验,而且我(可能是错误地)认为,在较小规模上执行任务可能会更容易。是否有人有任何指向网站或资源的指针,其中有一些这样的例子。我已经通读了OSDev关于堆栈溢出的大部分问题,如果不是全部的话,我也知道AvrFreaks和OSDev。此外,如果任何人有这方面的经验,并希望提供一些建议的方法或平台,它将不胜感激 谢谢这可能是一件值得研究的好

我必须很快选择一个论文主题,我正在考虑为一个不是x86的体系结构实现一个操作系统(我倾向于ARM或AVR)。我之所以避免使用x86,是因为我想获得一些嵌入式平台的经验,而且我(可能是错误地)认为,在较小规模上执行任务可能会更容易。是否有人有任何指向网站或资源的指针,其中有一些这样的例子。我已经通读了OSDev关于堆栈溢出的大部分问题,如果不是全部的话,我也知道AvrFreaks和OSDev。此外,如果任何人有这方面的经验,并希望提供一些建议的方法或平台,它将不胜感激

谢谢

这可能是一件值得研究的好事情。它非常小,在微控制器上运行,并且是开源的。它对网络和通信有很大的偏见,但也许你可以跳过这些部分,把重点放在内核上。

非常坚固的东西

开发(RT)操作系统不是一项简单的任务。不过这很有教育意义。我给你的建议是开始独立于硬件。PC机是一个很好的起点,因为它具有大量I/O可能性和良好的调试。如果您创建一种虚拟机应用程序,您可以创建一些具有简单平台功能的应用程序(控制台输出、一些按钮/指示器是一个良好的开端)。此外,您还可以使用文件,例如,输出计时(时间表),如果您从“裸机”开始,则必须从头开始。在LED上调试(开/关/闪烁)非常困难且耗时。我的第二个建议是尽早定义您的范围:您感兴趣的是调度程序、通信机制还是文件系统?做所有的事情都很容易成为一个终生的项目

包含有关微核的一些有趣的部分。这是我最喜欢的书之一。
似乎涵盖了你的一些兴趣;不过我还没读过。也可能带来好的见解。它涵盖了从调度器到网络堆栈的所有方面。祝你好运

如果选择ARM,请选择一份ARM系统开发人员指南(Sloss、Symes、Wright)


第11章讨论了一个简单的嵌入式操作系统的实现,并提供了大量的解释和示例代码。

似乎您应该得到一本Jean Labrosse的书

看起来他可能也刚刚更新过


这是一本记录良好的书,描述了用C编写并移植到许多嵌入式处理器的RTOS的内部工作原理。您也可以在x86上运行它,然后交叉编译到另一个处理器。

ARM和AVR是粉笔和奶酪-您已经将其范围扩展到了非常广泛的领域

您可以为ARM开发一个与AVR非常不同、更复杂的操作系统(除非您谈论的是AVR32——这是一个完全不同的体系结构?)

AVR的约束性要大得多,就你的论文范围而言,这项任务可能微不足道。即使指定手臂也不能缩小它的范围;低端ARM部件具有小型片上存储器、无MMU和简单的外围设备;高端部件有MMU、数据/指令缓存、通常是GPU、有时是FPU、硬件Java字节码执行和许多其他复杂外围设备。术语“ARM”包括ARM7、ARM9、ARM11、Cortex M3、Cortex M8,以及许多用于ASIC和FPGA的架构,所以您可能需要将其缩小一点


如果你选择手臂,看一看。特别是Hitex的内部指南,以及“用GNU构建裸机手臂”,它们将帮助你“启动”你的主板,并形成你操作系统的起点。

我建议的第一件事是大大缩小你的论文主题。OSs无处不在,研究和开发都很好。你希望追求什么新奇的想法


这就是说,是一个非常小的微核,我在AVR微控制器上专业使用过。它是用汇编语言编写的。一个人开始将其移植到C,但尚未完成移植。将端口最终设置为C和/或将C端口设置为AVR32体系结构都很有价值。

操作系统不应与任何处理器紧密耦合,因此ARM或x86无关紧要。 如果我们开始讨论ARM是否嵌入,而x86是否嵌入,这将是一个更大的话题。无论如何,有许多地方使用x86处理器进行嵌入式软件开发

我想大部分内核代码都是纯C语言。现在已经有很多可用的免费操作系统,例如嵌入式linux、Itron的免费版本、minix等。。。这将是一项艰巨的任务


但另一方面,您可以尝试将嵌入式linux移植到它尚未工作的平台。这对世界来说真的很有用。

虽然听起来很傻,但我最近对这个平台感兴趣,在更有经验的朋友的帮助下学习一些黑客技巧。还有一个家伙对为它编写操作系统感兴趣(虽然不是他的初衷)


我认为Arduino是一个非常基本和直接的教育工具。如果它符合要求,也许值得一试。

RTOS几乎从来都不是特定于体系结构的。参考网络上可用的任何RTOS架构,您会注意到CPU/硬件抽象层将CPU抽象出来。特定于板的部分(处理外围设备,如com端口、定时器等)由板支持包抽象

首先,了解RTO中多线程的工作原理,尝试为您选择的CPU实现一个简单的上下文切换代码;这将涉及创建线程上下文、保存上下文和恢复已保存上下文的代码。此代码将构成硬件抽象层的基础。使用软件可以轻松完成初始开发