新闻  |   论坛  |   博客  |   在线研讨会
靠近ucos
ddtaok | 2010-10-09 00:55:58    阅读:1126   发布文章

刚开始决定要搞下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中定义了与编译器相关的数据类型。比如:INT8UINT8S等。

q      ARM处理器相关的代码,使用

OS_ENTER_CRITICAL()

OS_EXIT_CRITICAL() 宏开启/关闭中断

q      设施堆栈的增长方向 :堆栈由高地址向低地址增长

2C语言编写六个操作系统相关的函数

 

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_CRITICALOS_ENTER_CRITICAL

q      定义函数OS_TASK_SW执行任务切换。

q      定义函数OSCtxSw实现用户级上下文切换,用纯汇编实现。

q      定义函数OSIntCtxSw实现中断级任务切换,用纯汇编实现。

q      定义函数OSTickISR

q      定义OSTaskStkInit来初始化任务的堆栈。

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客