?編寫B(tài)SP
板級(jí)支持包( BSP) 是介于底層硬件和操作系統(tǒng)之間的軟件層次, 負(fù)責(zé)進(jìn)行系統(tǒng)啟動(dòng)后最初的硬件和軟件
初始化, 并對(duì)底層硬件進(jìn)行封裝, 使得操作系統(tǒng)不再面對(duì)具體的硬件[ 9] 。在此建立兩個(gè)BSP 文件: BSP. ASM 和BSP. C。其中, BSP. ASM 中包含了匯編語言寫的中斷接口程序。BSP. C 中包含了硬件和軟件的初始化程序和產(chǎn)生時(shí)鐘節(jié)拍的中斷服務(wù)程序。
與處理器相關(guān)代碼的修改和編寫
有三個(gè)與處理器相關(guān)的文件, 即OS_CPU . H, OS_CPU _ A. ASM 和OS _ CPU _ C. C 需要修改。由于MCF52235 有eMAC 模塊, 所以還需要編寫OS_CPU _I. ASM 文件, 用來在任務(wù)切換和中斷時(shí)以及中斷返回
時(shí)保存和恢復(fù)相關(guān)寄存器。
?1 、OS_CPU. H 的移植
OS_CPU. H 包含了一些與處理器和編譯器相關(guān)的宏定義和數(shù)據(jù)類型定義。由于使用Codew arrior 編譯
器, shor t 類型是16 位的, int 類型是32 位的。MCF52235 的堆棧是32 位寬的, 因此OS_STK 定義為
32 位, 所有任務(wù)的堆棧必須聲明使用OS_ST K 這種數(shù)據(jù)類型。數(shù)據(jù)類型定義如下:
ty pedef unsigned char BOOLEAN;
ty pedef unsigned char INT 8U;
ty pedef signed char INT8S;
ty pedef unsigned sho rt INT16U;
ty pedef signed shor t INT16S;
ty pedef unsigned int INT32U;
ty pedef signed int INT32S;
typedef float?FP32;
typedef double FP64;
typedef unsigned int OS_STK;
typedef unsigned shor t OS_CPU_SR;
( 1) 臨界區(qū)域處理。像所有的實(shí)時(shí)性內(nèi)核一樣, 在進(jìn)入代碼臨界區(qū)時(shí)要關(guān)中斷, 完成時(shí)要開中斷。C/
OS 定義了兩個(gè)宏來關(guān)閉和使能中斷: OS_ENT ER_CRITICAL( ) 和OS_EXIT _CRIT ICAL( ) 。C/ OS定義了三種方法來關(guān)閉和使能中斷, 大多數(shù)情況下選擇第三種方法。
# define OS_CRITICAL_METH OD # 3
# define OS_ENTER_CRITICAL( ) { cpu_sr = OS _CPU_
SR_Save( ) ; } / / 關(guān)中斷
# def ineOS _ EXIT _ CRITICAL( ) { OS _ CPU _ SR_ Resto re
( cpu_sr) ; } / / 開中斷
( 2) 任務(wù)層上下文切換。當(dāng)C/ OS 調(diào)用OS _TASK_SW( ) 時(shí)發(fā)生任務(wù)層的上下文切換。因?yàn)樯舷?/p>
文切換是根據(jù)處理器的不同而不同的, 所以需要執(zhí)行一個(gè)匯編的函數(shù)。在這種情況下, 用TRA P 指令來產(chǎn)
生一個(gè)異常, 用T RAP 指令的優(yōu)點(diǎn)是能使它像發(fā)生了一次中斷一樣。這里用# 14 T RAP, 因?yàn)榇蠖鄶?shù)情況
下, # 15 TRAP 被調(diào)試和監(jiān)控程序保留了。# 14TRAP 定位于VBR+ 0x00B8, 然后跳轉(zhuǎn)到相應(yīng)的地址。
在這個(gè)向量處放置OSCtx Sw( ) 的地址。這個(gè)函數(shù)聲明在OS_CPU_A. ASM 里。VBR 代表向量基址寄存器,
包含異常向量表的基址, 程序開始時(shí)被初始化為0x00000000, 但是在運(yùn)行時(shí)可以改變。
# define OS_TASK_SW( ) asm( T RAP # 14; )
( 3) 堆棧的增長(zhǎng)方向。MCF52235 的堆棧增長(zhǎng)方向是從高地址向低地址, 因此OS _ST K_GROWTH 置
為1。
# define OS_STK_GROWTH 1
評(píng)論
查看更多