2009-10-08 96 views
8

我必须尽快选择论文主题,并且正在考虑为不是x86的架构(我倾向于ARM或AVR)实现操作系统。我避免使用x86的原因是因为我想获得一些嵌入式平台的经验,而我(可能错误地)认为在小规模开展任务时可能更容易。有没有人有任何指向网站或资源的地方有一些这样的例子。我已阅读了大部分(如果不是全部)关于堆栈溢出的OSDev问题,并且我也了解了AvrFreaks和OSDev。此外,如果任何人有这方面的经验,并希望就方法或平台提供一些建议,将不胜感激。开发非x86操作系统

感谢

+0

或者你可以和我一起寻找原始Amiga的Exec(AmigaOS)克隆。 ;-) – 2009-11-05 13:33:55

回答

7

开发一个(RT)操作系统并不是一项简单的任务。尽管这很有教育意义。我对你的建议是开始硬件独立。个人电脑是一个很好的起点,因为它有很多I/O可能性和良好的调试。如果您创建了一种虚拟机应用程序,您可以使用简单的平台功能(控制台输出,一些按钮/指示器是一个好的开始)来创建一些东西。另外,你可以使用文件来输出时间(日程安排)。如果你从“裸机”开始,你必须从头开始。在LED上进行调试(开/关/闪烁)非常困难且耗时。我的第二个建议是尽早定义范围:它是调度程序,通信机制还是您感兴趣的文件系统?做所有事情都可以轻松完成一个终身的项目。

Samek, Miro, Practical UML Statecharts in C/C++包含微内核上的一些有趣的部分。这是我最喜欢的书之一。 Advanced PIC Microcontroller Projects in C: From USB to RTOS with the PIC 18F Series 似乎涵盖您的一些利益;尽管如此,我还没有读过它。 Operating Systems: Internals and Design Principles也可能带来很好的见解。它涵盖了从调度程序到网络堆栈的所有方面。祝你好运!

2

Contiki可能是研究的好东西。它非常小,运行在微控制器上,并且是开源的。它对网络和通信有很大的偏见,但也许你可以跳过这些部分并专注于内核。

2

如果您选择ARM,请拿起ARM系统开发人员指南(Sloss,Symes,Wright)的副本。 Link to Amazon

第11章讨论了一个简单的嵌入式操作系统的实现,有很好的解释和示例代码。

2

ARM和AVR是粉笔和奶酪 - 你的范围很广!

您可以为AVR生成一个与ARM完全不同且更复杂的操作系统(除非您正在讨论AVR32--这是一个完全不同的架构?)。

AVR将会更加困难,以至于任务可能只是为了让您的论文范围微不足道。即使指定ARM也不会缩小它的范围;低端ARM部件具有小型片上存储器,无MMU和简单的外围设备;高端部件有MMU,数据/指令高速缓存,通常是GPU,有时是FPU,硬件Java字节码执行以及许多其他复杂的外设。术语“ARM”涵盖了ARM7,ARM9,ARM11,Cortex M3,Cortex M8以及旨在用于ASIC和FPGA的许多架构 - 因此您需要将其缩小一点?

如果您选择ARM,请看these resources。特别是Hitex的Insider's Guides,以及“搭建GNU裸机ARM”,它们将帮助您获得最新的主板,并为您的操作系统创建起点。

1

我推荐的第一件事就是大大缩小论文的主题。操作系统无处不在,经过很好的研究和开发。你希望追求什么新颖的想法?

也就是说,AvrX是一个非常我专业使用AVR微控制器的小微内核。它是用汇编写成的。一个人开始将其移植到C,但尚未完成该端口。将端口定义为C和/或将C端口设置为AVR32架构将非常有价值。

1

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

我想大多数的内核代码将只是普通的C lanugage。有许多已经可用的操作系统,例如嵌入式Linux,免费版Itron,minix等等。这将是一项艰巨的任务。

但另一方面,你可以尝试的是,将嵌入式Linux移植到它尚未工作的平台上。这将对全世界真正有用。

2

听起来很愚蠢,我最近对Arduino平台感兴趣,在有经验的朋友的帮助下学习一些黑客技巧。也有this thread为有兴趣为其编写操作系统的人(尽管不是他的主要意图)。

我认为Arduino作为这种努力的教育工具是非常基础和直接的。如果它符合法案,可能值得尝试检查它。

1

RTOS几乎没有特定的架构。请参考网上提供的任何RTOS架构,您会注意到CPU /硬件抽象层将CPU抽象出来。电路板特定部分(处理诸如com端口,定时器等外设)由板级支持包提取。

首先,了解多线程如何在RTOS中工作,尝试为您选择的CPU实现简单的上下文切换代码;这将涉及创建线程上下文,保存上下文并恢复已保存上下文的代码。这段代码将构成硬件抽象层的基础。使用所选CPU的软件模拟器可以轻松完成最初的开发。

我同意那个建议读这本书的人,Jean Labrosse写的uCOS-II。上下文切换代码示例,尤其是x86,应该只是谷歌搜索了!