uCOS-II 移植及遇到的问题

一、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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值