基于嵌入式操作μCOS-II 的USB主機系統(tǒng)

2013-08-27 11:49 來源:電子信息網(wǎng) 作者:鈴鐺

μC/OS-II 是美國學者Lacrosse 設計的一個優(yōu)秀的嵌入式實時操作系統(tǒng),其代碼絕大部分用ANSIC 語言編寫,可用于8 位、16 位、32 位、甚至64 位微處理器、微控制器、數(shù)字信號處理器等,具有操作系統(tǒng)最基本最核心的功能,非常適于在小型系統(tǒng)和片上系統(tǒng)(SOC)中使用。USB 為個人電腦與嵌入式設備之間的連接提供了一種標準化、單一化的接口,其高效性和可靠性使得它已經(jīng)成為嵌入式系統(tǒng)的首選接口。此LPC2378 讀卡器具有卡票檢測、消費扣錢、系統(tǒng)升級、下發(fā)黑名單、在線充值、余額查詢等功能,但這些功能的實現(xiàn)都依賴于上位機的請求,業(yè)務應用模塊只有在獲得相應的請求后才能進行相應的處理并將處理結果返回給上位機。而USB 主機系統(tǒng)就是起銜接上位機和業(yè)務應用模塊的功能,接收上位機請求以及將業(yè)務應用模塊的結果返回給上位機。

1 構建μC/OS-II系統(tǒng)環(huán)境

1.1 移植μC/OS-II 到LPC2378 開發(fā)板

嵌入式操作系統(tǒng)作為大多數(shù)嵌入式應用系統(tǒng)的軟件平臺,它管理著系統(tǒng)的資源,為應用軟件提供各種必要的服務。在嵌入式應用系統(tǒng)中使用嵌入式系統(tǒng),可以提升嵌入式應用系統(tǒng)的開發(fā)效率,但是在得到嵌入式操作系統(tǒng)提供服務之前,關鍵是要將嵌入式操作系統(tǒng)移植到目標板上。

移植條件:

移植μC/OS-II 之前需要注意,目標處理器必須滿足以下五點要求:

1. 處理器的C 編譯器能產(chǎn)生可重入型代碼;2. 處理器支持中斷,并且能產(chǎn)生定時中斷(通常為10-100Hz);3. 用C 語言可以開/關中斷;4. 處理器能支持一定數(shù)量的數(shù)據(jù)存儲硬件堆棧(可能是幾KB);5. 處理器有將堆棧指針以及其他CPU 寄存器的內容讀出并保存到堆?;騼却嬷腥サ闹噶?。

LPC2378 系列ARM7 微控制器可以滿第2、4 和5 點要求,使用ADS 的C 編譯器可以滿足1 和3 點要求。

移植步驟:

OS_CPU.H 的移植:

在OS_CPU.H 文件中定義與處理器相關的數(shù)據(jù)類型,例如BOOLEAN,INT8U 和INT8S 等。根據(jù)ADS1.2編譯器的特性定義。在OS_CPU.H 文件中定義與處理器相關的宏, 主要是進出臨界區(qū)代碼OS_ENTRER_CRITICAL()、OS_EXIT_CRITICAL()。

將OS_ENTRER_CRITICAL()和OS_EXIT_CRITICAL()定義為軟件中斷函數(shù),所以還要編寫相應的軟件中斷處理代碼(可以在OS_CPU_C.C 文件中編寫)實現(xiàn)開/關中斷。同樣定義OS_TASK_SW()為軟件中斷函數(shù),并編寫相應的軟件中斷處理代碼(調用OS_IntCtxSw 函數(shù))實現(xiàn)任務切換。

OS_CPU_C.C 的移植:

在OS_CPU_C.C 中需要編寫10 個相關的函數(shù),為:OSTaskStkInit();OSTaskDellHook();OSTaskIdleHook ();OSTaskTickHook()等函數(shù)。其中9 個系統(tǒng)Hook函數(shù)可以為空函數(shù),也可以根據(jù)用戶自己的需要編寫相應的操作代碼。任務棧結構初始化函數(shù)OSTaskStkInit()必須根據(jù)移植時統(tǒng)一定義的任務堆棧結構進行初始化。

OS_CUP_A.ASM 的移植。

μC/OS-II 移植要求編寫的匯編語言函數(shù)為:

OSStartHightRdy();OSCtxSw();OSIntCtxSw();OS_TickISR()。當然這些程序不一定非得用匯編,也可以用嵌入式C 語言來完成。

至此,完成μC/OS-II 在ARM7 處理器LPC2378上代碼的移植,其大部分代碼與μC/OS-II 在其他ARM7 處理器上的移植是通用的。

1 2 3 > 
嵌入式 μCOS-II USB主機

相關閱讀

暫無數(shù)據(jù)

一周熱門