1.μC/OS-Ⅱ概述 μC/OS-Ⅱ在特定處理器上的移植大部分工作集中在多任務(wù)切換的實現(xiàn)上,這部分代碼主要用來保存和恢復(fù)處理器的現(xiàn)場。但許多操作如讀/寫寄存器不能用C語言而只能用匯編來實現(xiàn)。 將μC/OS-Ⅱ移植到ARM處理器上,只需要修改與處理器相關(guān)的3個文件: OS_CPU.H, OS_CPU_C.C, OS_CPU_A.ASM 。 2.OS_CPU.H的移植 1)數(shù)據(jù)類型的定義 typedefunsignedcharBOOLEAN; typedefunsignedcharINT8U; typedefsignedcharINT8S; typedefunsignedshortINT16U; typedefsignedshortINT16S; typedefunsignedintINT32U; typedefsignedintINT32S; typedeffloatFP32; typedefdoubleFP64; typedefunsignedintOS_STK; typedefunsignedintOS_CPU_SR; 2)ARM處理器相關(guān)的宏定義 #defineOS_ENTER_CRITICAL()ARMDisableINT #defineOS_EXIT_CRITICAL()ARMEnableINT 3)堆棧增長方向的定義 #defineOS_STK_GROWTH1 3.OS_CPU_C.C的移植 1)任務(wù)椎棧初始化 任務(wù)椎棧初始化函數(shù)由OSTaskCreat()或OSTaskCreatEXT()調(diào)用,用來初始化任務(wù)并返回新的堆棧指針STK.初始狀態(tài)的堆棧模擬發(fā)生一次中斷后的堆棧結(jié)構(gòu),在ARM體系結(jié)構(gòu)下,任務(wù)堆棧空間由高到低將依次保存著PC,LR,R12…R0,CPSR,SPSR。堆棧初始化結(jié)束后,OSTaskSTKInit()返回新的堆棧棧頂指針OSTaskCreat()或OSTaskCreatEXT()將新的指針保存的OS_TCB中。 OS_STK *OSTaskStkInit (void (*task)(void *p_arg), void *p_arg, OS_STK *ptos, INT16U opt) { OS_STK *stk; opt= opt;
技術(shù)專區(qū)
主站蜘蛛池模板:
库车县|
泰安市|
广灵县|
枣阳市|
安塞县|
广昌县|
涿鹿县|
天气|
双流县|
柳林县|
邯郸县|
潮州市|
安平县|
绍兴县|
咸阳市|
泸水县|
珠海市|
大同市|
丽江市|
大邑县|
原阳县|
乌兰浩特市|
旬阳县|
巨野县|
晋城|
四会市|
青川县|
八宿县|
胶州市|
泸州市|
孝义市|
石狮市|
习水县|
称多县|
绍兴市|
德江县|
稻城县|
师宗县|
秦安县|
亚东县|
天祝|
|
評論