2009-10-08 97 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,應該只是谷歌搜索了!