|
回覆一 2011.06.12
您好:
我剛剛在書店看到你那個是用x86想說如果提供的多工作業系統.
如果也能在ARM平台上運作,感覺能跟x86做比較,這樣好像可以更清楚一個OS跟CPU 關係.
上面我是自己想法我不知道對不對.
如果要把你的多工作業系統用到qemu 虛擬器用ARM平台可行嗎?
因為現在好像嵌入式都用ARM 比較多~
謝謝
我的回答如下.
你好,
我是從ARM走過來的,這個作業系統的多工核心是在ARM上面發展的.
為甚麼挑選X86的原因是因為所需要的硬體在X86的平台上一應俱全,而ARM板卻有許多缺乏和限制.
我創作的這個作業系統是跑在保護模式中,不會用到BIOS的函式呼叫,全部都是使用IO去設定各個硬體的動作.
如果你的意思是 X86 因為有BIOS而讓OS和CPU的關係不清楚的話,我進入保護模式後,不會再用到BIOS了.
如果使用ROM啟動的話,的確,ARM像單晶片那樣,不會有BIOS的過程,就可以直接啟動.
但如果是使用NAND FLASH 的話,其實ARM裡面也有一個類似BIOS的東西,負責載入NAND FLASH裡面的啟動程式,我記得 S3C2440 是8個磁區,4KB.
無論是ARM或X86,當你摸得夠深的話,你會發現它們的動作原理相類似.
現在市場上之所以把ARM當作是嵌入式系統是因為整個消費性電子的市場都是ARM的天下.也以ARM做為簽入式系統的課程內容.講到嵌入式就想到ARM.
但曾否想過為什麼X86不算嵌入式,其實X86也可以當作嵌入式系統.而且是一個已經發展幾十年的嵌入式系統.只是多了一個BIOS.而這個BIOS讓人家覺得OS和CPU是不直接的,這其實是種誤解.
對我的作業系統來說,BIOS充其量只是一個負責把作業系統載入到記憶體執行的媒介,如此而已.之後,BIOS形同虛設.
如果你仔細追我的程式碼的話,你會發現進入保護模式之後,我不會再使用到BIOS的系統呼叫,因為所有的程式功能都必須用手寫,沒有BIOS系統呼叫可用.
QEMU 是 LINUX 上的虛擬機器,使用 RAW IMAGE 模擬作業系統的執行.這和 FORMOSAOS 的映像檔是一樣的.
只要將 FORMOSAOS 編譯出來的映像檔複製到 LINUX,映像檔包括 floppy_os.img,install_os.img,cdrom_os.iso,cdrom_install.iso.
舉例來說,執行 cdrom 模擬時,可用指令 $qemu -m 32 -cdrom cdrom_os.iso,就可以模擬 formosaos.
希望我的回答可以解掉你的疑惑.
您好:
1.請問一下您所說的ARM板卻有許多缺乏和限制是指開發板環境嗎?
那如果再一些可以模擬ARM平台的虛擬機還有這問題存在嗎?
qemu 可以模擬出x86、ARM、MIPS、Power PC 這些
2.ROM啟動跟用NAND FLASH <--- 這是會區分有沒有BIOS?
在嵌入式上bootload 不是相當於BIOS , 那如果再 ROM啟動就沒有所謂BIOS?
謝謝
我的回答如下.
你好,
1.是的 我是指開發板的環境
2.虛擬環境就是虛擬開發板的環境.虛擬環境可以有更多的虛擬硬體.
PC的配備某程度上是標準化了,所以可以在 PC 虛擬環境執行的OS就可以在真實的PC上面執行.
ARM的模擬環境可以用來練功,但是它是無法用在實際的開發版中的,除非ARM的虛擬環境的元件和ARM的開發板一樣.
但ARM的開發板的硬體建置並沒有像PC那樣標準化.
3.ARM的啟動有分ROM和NAND FALSH. 這是透過ARM的外部接腳設定.通常開發板都會用電阻設定之.
通常ARM的產品都是用ROM.而開發版通常是用NAND FLASH.
用NAND FLASH 啟動ARM時,ARM本身會執行自己的啟動程式,負責將NAND FLASH的程式載入 STEPPING STONE.並執行使用者的啟動程式.
它不是BIOS,只是單純的把放在NAND FLASH 中的程式碼載入 STEPPING STONE 而已.之後就跳到STEPPING STONE 的位址上,執行使用者的啟動程式
PC的BIOS除了載入啟動磁區,並執行啟動磁區外,還提供一些系統中斷,用來控制IO.
如果只使用BIOS的啟動功能,而不使用其系統呼叫的話,那BIOS的功能就有點像是ARM上面載入STEPPING STONE的程序那樣.
4.BOOTLOADER 就是被ARM從 NAND FLASH 載入STEPPING STONE 的使用者啟動程式.
BOOTLOADER 會把後面的OS陸續載入RAM中,然後跳到OS起頭的地方執行OS.
也因此BOOTLOADER的體積不會大於4KB.否則會超過STEPPING STONE的容量,而出錯.
對我來說,BOOTLOADER 比較像是啟動磁區內的啟動程式,而不是BIOS.
5.是的.用ROM啟動就不需要BOOTLOADER了.所有OS的程式碼都由ROM提供.
|
|