开发非x86操作系统

时间:2009-10-08 10:48:23

标签: c assembly embedded operating-system

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

由于

10 个答案:

答案 0 :(得分:7)

开发(RT)操作系统并非易事。虽然它很有教育意义。我给你的建议是独立启动硬件。 PC是一个很好的起点,因为它具有大量的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也可能带来很好的见解。它涵盖了从调度程序到网络堆栈的所有方面。祝你好运!

答案 1 :(得分:4)

好像你应该得到Jean Labrosse的书MicroC/OS的副本。

看起来他也可能刚刚更新了它。

http://micrium.com/page/press_room/news/id:40

http://micrium.com/page/home

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

答案 2 :(得分:2)

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

答案 3 :(得分:2)

如果选择ARM,请选择ARM System Developer's Guide(Sloss,Symes,Wright)的副本。 Link to Amazon

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

答案 4 :(得分:2)

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

你可以为ARM制作一个非常不同且更复杂的操作系统而不是AVR(除非你是在谈论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”,它们将帮助您“升级”并成为您的操作系统的起点。

答案 5 :(得分:2)

听起来很傻,我最近对Arduino平台感兴趣,在更有经验的朋友的帮助下学习一些黑客技巧。对于一个有兴趣为其编写操作系统的人来说,也有this thread(虽然不是他的主要目的)。

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

答案 6 :(得分:1)

答案 7 :(得分:1)

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

尽管如此,AvrX是一个非常小型微内核,我专门用于AVR微控制器。它是用汇编语言编写的。一个人开始将它移植到C,但还没有完成端口。将端口最终确定为C和/或将C端口设置为AVR32架构将是有价值的。

答案 8 :(得分:1)

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

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

但另一方面,您可以尝试将嵌入式Linux移植到尚未运行的平台。这对世界非常有用。

答案 9 :(得分:1)

RTOS几乎从不针对特定于架构。请参阅网络上提供的任何RTOS体系结构,您会注意到CPU /硬件抽象层抽象出CPU。电路板特定部分(处理外围设备,如com端口,定时器等)由电路板支持包抽象。

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

我同意海报建议阅读Jean Labrosse的书“uCOS-II”。上下文切换代码的​​示例,特别是对于x86,应该只是谷歌搜索!