PXA270中WinCE&&Linux的雙啟動實現

來源:互聯網
上載者:User

    雙啟動的意思是,在PXA270上同時支援Linux和WinCE作業系統,通過外部控制,選擇進入哪一個系統。很多處理器都原生態的支援雙啟動,甚至多啟動。如S3C2410的MCU本身支援NOR BOOT和NAND BOOT。但PXA270隻支援NOR BOOT,所以在這上面實現雙啟動,有得一做。

      最初的想法是採用2片大容量的NOR FLASH,一片儲存Linux,另外一片儲存WinCE,通過撥碼開關控製片選訊號,從而支援雙啟動。理論上是可行的,而且也比較方便,軟體無須做修改。問題是這樣硬體成本就上來了,NOR FLASH還是比較貴的。這種做法被否定,只能另想辦法。

     由於對Linux不瞭解,只能從WinCE入手,想辦法把WinCE放到NAND FLASH中,NOR FLASH依然儲存Linux,不做改動。為了支援WinCE從NAND FLASH中載入OS,需要在EBOOT中實現NAND FLASH的“驅動”。而選擇啟動哪個作業系統則交給最初的一個引導程式來做,我管它叫NORBOOT。NORBOOT儲存在NOR FLASH的0地址處,上電即運行,它通過判斷外部按鍵是否按下決定啟動EBOOT還是BLOB,EBOOT和BLOB也都放在NOR FLASH中。Linux的啟動由BLOB繼續,WinCE的啟動由EBOOT完成,互不干擾。NORFLASH的分布如下:

                 

     其中,NORBOOT存放在0地址,約20KB。BLOB存放在32KB地址,約75K。EBOOT存放在128KB處,約116K。相對原來Linux的FLASH分布,就前面這256K不一樣,後面Kernel和檔案系統的分布跟原來完全一致,這就減少了Linux下的修改。事實上這種結構,Linux無須做任何修改,包括BLOB。最開始,還想著要修改BLOB載入到記憶體的部分,花了半天的時間研究BLOB的代碼,最後發現它無須做任何修改就能在這種模式下正常工作。不過,彎路沒有白走,現在對BLOB有了更深刻的認識。但EBOOT是要做一些修改的,它和BLOB載入到記憶體的方式不一樣。EBOOT將整個EBOOT全部拷貝到記憶體中去,然後跳轉到RAM中EBOOT的CODEINRAM處,繼續執行。BLOB則分為兩部分,stage1和stage2,第一部分在NOR FLASH中運行,並載入第二部分到記憶體的一個固定地址,然後跳轉到該記憶體位址上,執行第二部分的代碼。

     EBOOT的啟動流程如所示:

         

       BLOB的啟動流程如所示:

         

     Linux的部分就不說了,EBOOT中需要添加NAND FLASH的支援,一般來說由三個部分組成:bootpart、FMD和讀寫作業系統映像的封裝。其中bootpart庫由微軟實現,提供了分區和BINFS讀寫的功能,FMD即FLASH Media Driver,是操作NAND FLASH的底層“驅動”代碼,BOOTPART庫會調用其中的函數從而控制NAND FLASH,最外層會調用BOOTPART中的函數實現在NAND FLASH中讀寫作業系統映像。由於PXA270中沒有NAND FLASH的控制器,所以FMD中採用IO類比實現對NAND FLASH的操作。當然,EBOOT儲存WinCE的映像不一定非得用BINFS,也可將WinCE的RAMIMAGE燒寫到RAW NANDFLASH中。採用該方法,WinCE啟動時必須將整個映像都載入到記憶體中。這裡不採用該方法,是為了給以後的進一步改造留條路。

     NORBOOT的想法源自2410中的NAND BOOT(NBOOT),在整個系統中起一個引導的作用。如果系統需要加密,也可以在這一段做處理。首先判斷執行條件,如果不滿足就HALT,否則,根據外部按鍵的狀態選擇啟動哪一個作業系統。NORBOOT的實現比較簡單,基本跟以前介紹過的NBOOT類似,這裡不再贅述。需要瞭解這方面內容的,請參考這一篇,http://www.cnblogs.com/we-hjb/archive/2008/09/27/1299901.html。

實現完NORBOOT、EBOOT後,將它們跟BLOB打包成一個映像檔案,通過JFlashMM燒寫到NOR FLASH中測試,BLOB和EBOOT都能正常啟動,剩下的事情,就各自管各自的了。這條路應該是打通了,但帶來了新的問題,WinCE的載入相當慢,需要想辦法解決。

本文介紹了PXA270中通過NORBOOT和NAND FLASH實現WinCE和Linux雙啟動的方法,測試表明,該方法可行。功能已實現,細節待完善。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.