一、uCOS 移植主要有三步:
1. 修改文件 os_cpu_c.c
OSTasktkinit()函数是针对CPU压栈的函数,需要模仿CPU初始化后的寄存器状况。
2. 修改文件os_cpu.h
3. 修改文件os_cpu_a.asm
二、uCOS移植中遇到的问题
1. 任务不能进行有效切换
原因:以前任务只要Task能够达到功能的死循环就可以了,所以每个任务都是while(1),后来发现任务之间不能够进行切换,网上查资料发现每个Task中都要包含OSTimeDly()函数才能够实现Task之间的跳转。
2. 未注意版本之间的区别
新版本的uCOS-II添加了一个文件os_tmr.c,主要在timer上面做了一些调整,移植时没有注意到,还是按照老版本的方法进行调试,导致函数条用存在问题,后来查询资料知道了问题原因,可以通过将os_cfg.h文件中的OS_TMR_EN设置为0 来禁止对timer功能进行的改变解决问题。
3. 任务切换中断的移植
移植uCOS-II,程序总是在B OSStartHang 挂掉,原因是STM32本身的异常中断PendSV_Handler代替了uCOS的异常中断OSPendSV,使其不能够正常执行,解决方法 将STM32本身的异常中断PendSV_Handler更改为uCOS的异常中断OSPendSV就可以了.
更改startup_stm32f10x_hd.s(V3.1.0版本)
1、DCD PendSV_Handler ; PendSV Handler
更改为:
DCD OSPendSV ; OSPendSV 中断
2、PendSV_Handler PROC
EXPORT PendSV_Handler [WEAK]
B .
ENDP
更改为:
OSPendSV PROC
EXPORT OSPendSV [WEAK]
B .
ENDP
uCOS-II 移植及遇到的问题
最新推荐文章于 2022-08-04 17:53:52 发布