既然,IA32的boot loader已經建構好了,接著當然可以寫一些簡單的程式來做探索,其實家中的舊筆電是很好的實驗平台。未來物聯網的世界會更大量的使用embedded system,因為半導體技術的發達,32位元的MCU會成為主流,隨著CPU的速度、記憶體容量的提升,每個物聯網裝置內部勢必都會有作業系統在運作,因此,對於embedded system作業系統的運作原理已經是基礎知識。
要了解這些基礎知識不需要花大錢買設備或器材,只要家裡的舊筆電就可以當作研究平台,其它的資源都可以靠Google來尋找,這是現代世界的學習方法,靠搜尋引擎來尋找需要的知識,靠大腦與手來驗證知識的正確性,進而成為經驗與技能。
回歸主題,上次寫好的bootloader,主要的工作就是在USB Flash Disk中尋找檔名為embedded.bin的檔案,然後將它載入到啟始位址為0000:0000的位置,然後讓CPU從位址為0000:0000的地方開始執行指令。從power on開始到載入embedded.bin的過程CPU都是以16位元的模式在運作,我們的目標是讓筆電成為32位元的embedded system,要用來理解32位元的作業系統,因此,接下來就是要把CPU切換到32位元的模式下運作。這個部分不難,只要做些簡單的設定即可,短短幾行組合語言指令就可以把CPU切換到32位元模式下運作。
程式碼下載
執行步驟 :
1. 組譯startup.asm
程式碼原始檔組譯方式 -
nasm startup.asm -o embedded.bin
2. 將embedded.bin 複製到USB Flash Disk 中
3. 將USB Flash Disk 插入舊筆電中,power on,即可在螢幕的左上角看到黑底紅字的X,
這表示CPU已經以32位元模式在運作了。
* 舊筆電的BIOS記得要設定成USB Flash Disk 開機喔!
沒有留言:
張貼留言