回覆一 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提供.