1.μC/OS-Ⅱ概述 μC/OS-Ⅱ在特定处理器上的移植大部分工作集中在多任务切换的实现上,这部分代码主要用来保存和恢复处理器的现场。但许多操作如读/写寄存器不能用C语言而只能用汇编来实现。 将μC/OS-Ⅱ移植到ARM处理器上,只需要修改与处理器相关的3个文件: OS_CPU.H, OS_CPU_C.C, OS_CPU_A.ASM 。 2.OS_CPU.H的移植 1)数据类型的定义 typedefunsignedcharBOOLEAN; typedefunsignedcharINT8U; typedefsignedcharINT8S; typedefunsignedshortINT16U; typedefsignedshortINT16S; typedefunsignedintINT32U; typedefsignedintINT32S; typedeffloatFP32; typedefdoubleFP64; typedefunsignedintOS_STK; typedefunsignedintOS_CPU_SR; 2)ARM处理器相关的宏定义 #defineOS_ENTER_CRITICAL()ARMDisableINT #defineOS_EXIT_CRITICAL()ARMEnableINT 3)堆栈增长方向的定义 #defineOS_STK_GROWTH1 3.OS_CPU_C.C的移植 1)任务椎栈初始化 任务椎栈初始化函数由OSTaskCreat()或OSTaskCreatEXT()调用,用来初始化任务并返回新的堆栈指针STK.初始状态的堆栈模拟发生一次中断后的堆栈结构,在ARM体系结构下,任务堆栈空间由高到低将依次保存着PC,LR,R12…R0,CPSR,SPSR。堆栈初始化结束后,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;
技术专区
|
评论