(1)OS_CPU.H
在OS_CPU.H文件中定义。与编译器相关的数据类型。μS/OS-II为了保证可移植性,程序中没有直接使 用int、unsigned int等定义,而是自己定义了一套数据类型,例如,INT16U表示16位无符号整型。对于 32位内核ARM微控制器,INT16U是unsianed short型;若是16位的处理器,则是unsigned int型。; μC/OS-II使用的变量类型如表1所示。
表1 μC/OS-II使用的变量类型
同时,在该文件中还定义了使能和禁止中断宏、栈的增长方向、定义符号OS_STK_GROWTH的值;还定义 了μC/OS-II的OS TASK SW宏,该宏是μC/OS-II从低优先级任务切换到高优先级任务时的调用,可以 采用下面两种方式定义:一种是如果处理器支持软中断,那么可以使用软中断向量指向OSCtxSw函数;另 一种是直接调用OSCrxSw函数。
(2)OS_CPU_A.ASM
在该文件中有4个汇编函数需要移植,如下:
●OSStartHighRdy函数:该函数由OSStart函数调用,OSStart函数负责调度就绪状态的任务开始运行 ,而其中OSStartHighRdy负责获取新任务的堆栈指针,并从堆栈指针中恢复新任务的所有处理器寄存器 。函数要移植的原因就是因为它涉及将处理器寄存器保存到堆栈。
●OSCtxSw函数:该函数由OS_TASK_SW宏调用,OS_TASK_SW宏由OSSched函数调用,OSSched函数负责任 务之间的切换。OSCtxSw函数在OSSched函数中负责将当前任务对应的处理器寄存器保存到堆栈中,并将 任务中需要恢复的处理器寄存器从堆栈中恢复出来。
●OSlntCtxSw函数:该函数由OSlntExit函数调用,OSlntExit函数由OSTickISR函数调用。OSlntCtxSw 负责在定时中断中任务之间的切换,保存当前任务堆栈指针,并将新任务对应的处理器寄存器从堆栈中 恢复出来。
●OSTickISR函数:时间节拍函数,由定时中断产生,主要负责在进入时保存处理器寄存器,完成任务 时切换,退出时恢复寄存器并返回。
(3)OS_CPU_C.C
OS_CPU_C.C文件中有6个函数需要移植。
其中,OSTaskStklnit函数是在任务创建时被调用的,它负责初始化任务的堆栈结构。其他的5个函数均 为钩子函数:OSTaskCreateHook、OSTaskDelHook、OSTaskSwHook、OSTaskStatHook、OSTimeTickHook, 这些函数主要用来扩展;μC/OS-II的功能。
上一篇:车载信息的硬件电路设计
下一篇:嵌入式系统flash接口电路的实现
推荐阅读最新更新时间:2024-03-16 13:20
设计资源 培训 开发板 精华推荐
- Allegro MicroSystems 在 2024 年德国慕尼黑电子展上推出先进的磁性和电感式位置感测解决方案
- 左手车钥匙,右手活体检测雷达,UWB上车势在必行!
- 狂飙十年,国产CIS挤上牌桌
- 神盾短刀电池+雷神EM-i超级电混,吉利新能源甩出了两张“王炸”
- 浅谈功能安全之故障(fault),错误(error),失效(failure)
- 智能汽车2.0周期,这几大核心产业链迎来重大机会!
- 美日研发新型电池,宁德时代面临挑战?中国新能源电池产业如何应对?
- Rambus推出业界首款HBM 4控制器IP:背后有哪些技术细节?
- 村田推出高精度汽车用6轴惯性传感器
- 福特获得预充电报警专利 有助于节约成本和应对紧急情况