VxWorks移植到AT91RM9200的BSP定制過程
VxWorks的缺省配置由configAll.h來確定。一般來說,缺省配置的設(shè)置與自行開發(fā)的硬件系統(tǒng)的配置不同,用戶可通過Cotlfig.h來改變?nèi)笔∨渲?。用戶須查看configAll.h,并在Config.h中將不需要的軟硬件配置和初始化去掉。例如,缺省配置中一般包含浮點處理器,而AT9lRM9200中沒有浮點寄存器,因此就要刪掉相關(guān)配置。
3.2.3 修改integrator920t.c
該文件中設(shè)置所有非可選的、與AT91RM9200芯片相關(guān)的信息,如各硬件相關(guān)寄存器的地址定義,設(shè)備寄存器中對應(yīng)位的定義,各硬件中斷矢量和中斷優(yōu)先級的定義,DBUG和USART的控制,網(wǎng)口的定義,系統(tǒng)時鐘和輔助時鐘參數(shù)設(shè)置等。VxWorks所要使用的目標(biāo)板包含設(shè)備的驅(qū)動程序頭文什應(yīng)當(dāng)包含在該文件的開始。該文件中的各項宏定義均是基于AT91RM9200芯片的,并根據(jù)具體要求定義。例如,電源管理控制器中用到兩個鎖相環(huán)PLLA和PLLB,對它們的部分參數(shù)設(shè)定代碼如下:
3 2.4 修改rornlnit.s
該文件包含引導(dǎo)ROM和基于ROM的VxWorks映像的入口初始化匯編代碼。入口點為romInit()函數(shù),是系統(tǒng)加電啟動后首先執(zhí)行的代碼。主要功能是:保存啟動類型,使處理器復(fù)位;初始化Flash和SDRAM;設(shè)置MMU到已知狀態(tài);指令Cache使能;初始化MMU控制寄存器(指令32位、數(shù)據(jù)32位、寫緩沖使能);開漏寫緩沖,并且使指令和數(shù)據(jù)Cache都兀效;通過設(shè)置CPSR的IRQ禁止位、FIR禁止位和先進中斷控制器AIC中的中斷禁止寄存器來屏蔽中斷,跳轉(zhuǎn)到bootInit.c中的rom-Start(),同時傳遞啟動類型。其中,中斷屏蔽代碼如下:
在調(diào)試這段代碼時,由于串口和網(wǎng)口都沒有啟動,因此只能通過點燈程序來跟蹤程序的執(zhí)行情況,設(shè)置不同的LED亮來顯示程序執(zhí)行到哪一步。例如,如果要并行輸入/輸出口C的32位中的第15位亮,則可以編程為;
在編寫本文件時,需要注意的地方是:不要在該文件里進行過多的初始化操作,大部分硬件初始化操作在sysLib.c文件中的sysHwInit()函數(shù)中進行。
評論