基于S3C2410的Windows CE 5.0 BSP移植
3.4 移植小結
此次移植是升級BSP,而硬件上基本沒(méi)有變化,因此很多代碼不需做修改即可使用,通過(guò)以上移植,不難發(fā)現此類(lèi)移植BSP過(guò)程中所要做的工作主要在以下幾個(gè)方面:
⑴ 修改dir文件,在dir文件中指定了當前目錄哪些文件夾被系統編譯,編譯器根據dir層層搜索,而移植BSP不可避免的帶來(lái)了目錄的變化,通過(guò)修改dir來(lái)指定新的編譯路徑。
⑵ 修改sources文件,在sources文件中,指定了編譯類(lèi)型有PLATFORM,OAK;編譯的時(shí)候引用的庫 sourcelib,targetlib不一樣,移植的時(shí)候一定得注意。目標文件類(lèi)型有Library,Dynlink,program;include 字段包含的則是編譯時(shí)候所需要的頭文件目錄。有個(gè)比較特殊的sources是位于Platform(例如smdk2410)下的sources.cmn,它包含了該平臺的通用庫,頭文件路徑,這個(gè)文件在移植過(guò)程中需要修改的,否則,編譯出錯。
⑶ 修改platform.bib,platform.reg等文件,因為這兩個(gè)文件決定了鏡像中包含哪些模塊(dll)以及注冊表相關(guān)信息,驅動(dòng)移植的過(guò)程中,每個(gè)模塊的改動(dòng)都需要修改這兩個(gè)配置文件。
⑷ 驅動(dòng)源文件中的頭文件的修改以及函數,變量修改等,這些依據編譯時(shí)候出現的錯誤來(lái)確定。
除此之外,各部分的移植還需特別注意的地方有:
Bootloader部分:因為bootloader下載,燒寫(xiě),啟動(dòng)鏡像過(guò)程會(huì )涉及到內存地址的問(wèn)題,各種入口地址不能出錯誤,以及內存超出范圍,沖突都需要特別小心。尤其是g_oalAddressTable這個(gè)表,這個(gè)表定義了物理地址虛擬地址之間的轉換以及內存的大小,如果設置不正確,將出現校驗錯誤,下載失敗或者鏡像無(wú)法啟動(dòng)等錯誤。
OAL部分:startup.s以及OEMInitDebugSerial兩函數需要特別注意,這兩個(gè)主要是初始化硬件及串口,這是系統運行及驅動(dòng)調試的基礎,如果硬件配置以及調試串口有改變,則需要適當的修改。此次BSP移植,因硬件平臺沒(méi)有變化,因此OAL部分很多代碼無(wú)須修改即可使用。
驅動(dòng)部分:Windows CE4.2與Windows CE5.0的結構,庫有了很大的改變,因此需要修改引用庫路徑,以及頭文件的引用路徑,大部分驅動(dòng)都將會(huì )遇到這樣的問(wèn)題。
4 結束語(yǔ)
本文創(chuàng )新點(diǎn):通過(guò)對BSP結構分析,將具體平臺的Windows CE 4.2 BSP移植到Windows CE 5.0版本,包括移植bootloader,OAL,驅動(dòng)程序,使之能夠通過(guò)編譯并生成鏡像,已經(jīng)能在平臺上成功運行。通過(guò)這次移植,使筆者體會(huì )到BSP 移植是一個(gè)挺復雜,煩瑣的過(guò)程,因Windows CE 5.0跟Windows CE 4.2 BSP包的組織結構不同,導致很多鏈接庫無(wú)法找到或者是這些庫已經(jīng)被替換,刪除,只有耐心的根據這些錯誤提示來(lái)定位,有時(shí)候也需要去makefile里去找答案。不過(guò)移植BSP比重新開(kāi)發(fā)BSP更加節省開(kāi)發(fā)時(shí)間,從而縮短產(chǎn)品的研發(fā)。
參考文獻:
[1] 潘永才,魯啟華,田茂.基于s3c2410的GPS通信實(shí)現[J].現代電子技術(shù),2006,15,157-159
[2] 林濤.嵌入式操作系統Windows CE的研究[J].微計算機信息,2006,6-2,91-93
[3] 呂秀平,李小民.Windows CE.NET的定制和裁剪[J].科學(xué)技術(shù)與工程.6卷第21期,2006年11月,p3483-3486
[4] 曹榮,劉峰.一種DSP嵌入式多媒體應用系統板級支持包的研究[J] .第26卷第3期,2006年3月,p746-748
[5] 何宗健.Windows CE嵌入式系統[M].北京:北京航空航天大學(xué)出版社,2006.
評論