VxWorks_BSP移植_1
icepeak 發(fā)表于 2006-5-29 8:33:00
好多天沒(méi)更新blog了,中間忙著整另外一個(gè)blog,所以無(wú)暇顧及.現(xiàn)在,把前幾天學(xué)習(xí)筆記送上來(lái)!
在講述BSP的移植之前,先討論一下Vxworks的啟動(dòng)過(guò)程:
在ARM系統(tǒng)中,系統(tǒng)上電后會(huì)自動(dòng)加載并運(yùn)行位于0地址的指令,通常在這個(gè)地方會(huì)放置一條跳轉(zhuǎn)指令,使它跳轉(zhuǎn)到_romInit()(初始化的入口)
romInit()進(jìn)行處理器模式的設(shè)置,關(guān)閉中斷,初始化內(nèi)存以及一些必要的硬件配置.
romInit()執(zhí)行完上述工作以后,跳轉(zhuǎn)到romStart(),它負(fù)責(zé)將ROM映像copy到RAM中,如果ROM映像中不含Vxworks內(nèi)核,那么啟動(dòng)代碼要負(fù)責(zé)將
Vxworks內(nèi)核加載到RAM中去.接下來(lái)要開(kāi)始運(yùn)行Vxworks內(nèi)核的入口程序sysInit(),它主要實(shí)現(xiàn)一些與romInit()類(lèi)似的功能,然后還是調(diào)用
Vxworks內(nèi)核的第一個(gè)例程usrInit(),usrInit()會(huì)根據(jù)BSP的設(shè)置,最終完成整個(gè)內(nèi)核的前期初始化工作.在usrInit最后,由kernelInit()激
活多任務(wù)環(huán)境,并創(chuàng)建一個(gè)任務(wù)來(lái)安裝設(shè)備驅(qū)動(dòng)程序.同時(shí)啟動(dòng)設(shè)備,初始化Vxworks系統(tǒng)庫(kù),調(diào)用應(yīng)用程序.
VxWorks_BSP移植_2
icepeak 發(fā)表于 2006-5-29 8:49:00
弄清楚VxWorks啟動(dòng)的順序后,我們來(lái)討論BSP的移植,VxWorks的BSP在先前的日志中已經(jīng)有說(shuō)明,大家可以查閱了解它和bootloader的區(qū)別和
聯(lián)系.
不同的Target的BSP都不同,同種CPU的不同板子也會(huì)不同,所以移植修改是不可避免的,我們可以參考$(WIND_BASE)\target\config下的BSP
文件,找一個(gè)比較接近的來(lái)修改!關(guān)于這個(gè)目錄的組織結(jié)構(gòu),網(wǎng)上有很多介紹,這里不贅述.
首先要重點(diǎn)修改的就是Makefilie文件和config.h文件,這兩個(gè)文件跟目標(biāo)板的硬件配置有很大的關(guān)系,主要是CPU類(lèi)型,內(nèi)存的大小和目標(biāo)板
的外圍設(shè)備的配置情況.關(guān)于這兩個(gè)文件的修改下次會(huì)詳細(xì)注釋!