Raspberry Pi (ARMv6)上自幹一個微小作業系統
大約半年前,我加入fb的F9 based JuluOS與黃敬群老師(Jserv)成大嵌入式系統課程社團,我才發現原來台灣有那麼多人在研究作業系統開發,我也想試試開發一個小小的OS。
從0開始寫一個OS是相當有趣的過程,可以檢視自己對C、資料結構、作業系統、計算機組織的瞭解程度,誠實的面對自己,雖然自己在系統廠工作幾年了,還是很多基礎知識不足,也許這就是為什麼那麼多高手可以在ic design house,而我在系統廠吧,寫這個小OS,只是學習的開始,接下來我會多研究其它的OS,例如:xv6、F9 microkernel、freeRTOS...
我把開發流程一步一步記錄,從bare metal Helloworld,加入printk,配置MMU, IRQ中斷,記憶體管理(Buddy system),到最後加入system call、process fork與round robin scheduling,方便學習。
所有原始程式碼都放在github上: https://github.com/tzuCarlos/RaspberryPi
我使用qmeu測試:
這邊有執行的結果:https://github.com/tzuCarlos/RaspberryPi/blob/master/mimiOS/RESULT
系統說明:
先拖稿一下,下班還要唸書,顧嬰兒很累的,改天有空補上一步步說明XD
未來工作:
1.把ARM的架構跟ARM組合語言弄熟。
2.系統memory map我還沒好好規畫,只是想到做什麼功能,就找一塊出來。
3. 沒有檔案系統,沒有shell、沒有驅動程式構架。
4. 寫個RTOS吧.
推薦社群、blog、書藉:
1. F9 based JuluOS, https://www.facebook.com/groups/224024274384934/
2. 黃敬群老師(Jserv)成大課程,https://www.facebook.com/groups/ncku.embedded2015/
3. Benux Wei, 精簡版作業系統實戰: 自製OS用Qemu執,
http://ben6.blogspot.tw/2011/05/qemu.html
4.loda筆記, http://loda.hala01.com
5. 陳鐘誠老師的網站: http://ccckmit.wikidot.com
6. 作者:李無言, 一步步写嵌入式操作系统
7. Andrew Sloss (Author), Dominic Symes (Author), Chris Wright (Author), "ARM System Developer's Guide: Designing and Optimizing System Software".
8. Randal E. Bryant, David R. O'Hallaron, "Computer Systems: A Programmer's Perspective" (這是CMU教才,我目前主管是CMU博士畢業XD,相當推!)
從0開始寫一個OS是相當有趣的過程,可以檢視自己對C、資料結構、作業系統、計算機組織的瞭解程度,誠實的面對自己,雖然自己在系統廠工作幾年了,還是很多基礎知識不足,也許這就是為什麼那麼多高手可以在ic design house,而我在系統廠吧,寫這個小OS,只是學習的開始,接下來我會多研究其它的OS,例如:xv6、F9 microkernel、freeRTOS...
我把開發流程一步一步記錄,從bare metal Helloworld,加入printk,配置MMU, IRQ中斷,記憶體管理(Buddy system),到最後加入system call、process fork與round robin scheduling,方便學習。
所有原始程式碼都放在github上: https://github.com/tzuCarlos/RaspberryPi
我使用qmeu測試:
這邊有執行的結果:https://github.com/tzuCarlos/RaspberryPi/blob/master/mimiOS/RESULT
系統說明:
先拖稿一下,下班還要唸書,顧嬰兒很累的,改天有空補上一步步說明XD
未來工作:
1.把ARM的架構跟ARM組合語言弄熟。
2.系統memory map我還沒好好規畫,只是想到做什麼功能,就找一塊出來。
3. 沒有檔案系統,沒有shell、沒有驅動程式構架。
4. 寫個RTOS吧.
推薦社群、blog、書藉:
1. F9 based JuluOS, https://www.facebook.com/groups/224024274384934/
2. 黃敬群老師(Jserv)成大課程,https://www.facebook.com/groups/ncku.embedded2015/
3. Benux Wei, 精簡版作業系統實戰: 自製OS用Qemu執,
http://ben6.blogspot.tw/2011/05/qemu.html
4.loda筆記, http://loda.hala01.com
5. 陳鐘誠老師的網站: http://ccckmit.wikidot.com
6. 作者:李無言, 一步步写嵌入式操作系统
7. Andrew Sloss (Author), Dominic Symes (Author), Chris Wright (Author), "ARM System Developer's Guide: Designing and Optimizing System Software".
8. Randal E. Bryant, David R. O'Hallaron, "Computer Systems: A Programmer's Perspective" (這是CMU教才,我目前主管是CMU博士畢業XD,相當推!)
留言
用 git clone https://github.com/Torlus/qemu.git 取得 source code 之後,
要記得用 git checkout rpi 切換到有 -M raspi 選項的 branch
之後自行編譯完就可以用了。
編譯的時候還需要 makeinfo 這個工具,
如果是使用 Ubuntu 編譯的話,
另外 sudo apt-get install texinfo 裝上 texinfo 這個套件就有 makeinfo 可以使用了。