"); //-->
刚开始决定要搞下UCOS,今天先摘录一些知识。
一 、移植mCOS-II满足的条件
q 处理器的C编译器能产生可重入代码
q 在程序中可以打开或者关闭中断
q 处理器支持中断,并且能产生定时中断(通常在10—1000Hz之间)
q 处理器支承能够容纳一定量数据的硬件堆栈
q 处理器有将堆栈指针和其他CPU寄存器存储和读出到堆栈(或者内存)的指令
在mCOS-II中,可以通过:
OS_ENTER_CRITICAL ()
OS_EXIT_CRITICAL()
二、移植方法:
q 设置OS_CPU.H中与处理器和编译器相关的代码
q 用C语言编写六个操作系统相关的函数(OS_CPU_C.C)
q 用汇编语言编写四个与处理器相关的函数(OS_CPU.ASM)
1、设置与处理器和编译器相关的代码
q OS_CPU.H中定义了与编译器相关的数据类型。比如:INT8U、INT8S等。
q 与 ARM处理器相关的代码,使用
OS_ENTER_CRITICAL() 和
OS_EXIT_CRITICAL() 宏开启/关闭中断
q 设施堆栈的增长方向 :堆栈由高地址向低地址增长
2、用C语言编写六个操作系统相关的函数
q void *OSTaskStkInit (void (*task)(void *pd),void *pdata, void *ptos, INT16U opt)
q void OSTaskCreateHook (OS_TCB *ptcb)
q void OSTaskDelHook (OS_TCB *ptcb)
q void OSTaskSwHook (void)
q void OSTaskStatHook (void)
q void OSTimeTickHook (void)
后5个函数为钩子函数,可以不加代码
3、用汇编语言编写四个与处理器相关的函数
q OSStartHighRdy()
q OSCtxSw()
q OSIntCtxSw()
q OSTickISR()
三、移植要点
q 定义函数OS_ENTER_CRITICAL和OS_ENTER_CRITICAL。
q 定义函数OS_TASK_SW执行任务切换。
q 定义函数OSCtxSw实现用户级上下文切换,用纯汇编实现。
q 定义函数OSIntCtxSw实现中断级任务切换,用纯汇编实现。
q 定义函数OSTickISR。
q 定义OSTaskStkInit来初始化任务的堆栈。
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。