UcosII移植

11 篇文章 0 订阅

UCOS移植前准备

UCOS源码文件整理

新建UCOS-II文件夹,并在uCOS-II目录下新建3个目录文件夹CORE、PORT、CONFIG。

  • 将源码Source文件夹下除os_cfg_c.h和os_dbg_r.c全部复制到移植工程目录下的CORE下

  • 将源码port->coterxM文件夹下的.c.h.asm以及dbg.c文件移到PORT下
    请添加图片描述

  • 将os_cfg.h、includes.h、app_cfg.h、3个文件移到CONFIG下,钩子文件用不到可以不添加。
    请添加图片描述

UCOS源码修改

请添加图片描述

1. os_cpu_c.c

将SysTickHandler()函数注释掉,时钟的配置会在工程的stm32f4xx_it.c文件中通过滴答定时器中断配置
请添加图片描述

2. os_cpu_c.asm

.asm文件中主要修改两处,将异常处理函数名由os_cpu_PendSV_Handler改为PendSV_Handler。

在移植过程中,需要将工程中stm32f4xx_it.c文件中的PendSVHandler()函数注释掉,防止与ucos中的PendSV_Handler冲突。
请添加图片描述
请添加图片描述

3. os_cfg.h

该文件进行了3处修改,1处是将钩子函数失能,可以不用钩子函数;2处是将Debug是失能;3处是用于修改时间频率,结合滴答定时器确定ucos的时基。
请添加图片描述

4. includes.h

将包含的所有头文件删除掉,只包含#include “os.h”即可。

(即该文件中只写一句#include “os.h”)

5. app_cfg.h

添加两句宏定义

// 不受内核管理的中断等级,使用 BOUNDARY 寄存器设置任务切换时的中断屏蔽
#define CPU_CFG_KA_IPL_BOUNDARY 4u
// 中断优先级寄存器可用位数,ARM 官方为 8bit 由厂家裁剪
#define CPU_CFG_NVIC_PRIO_BITS 4u

请添加图片描述

ucos移植

  • 向UCOSII-CORE分组中添加CORE 文件夹下除ucosii.c外的所有.c文件

  • 向UCOSII-PORT分组中添加PORT文件夹下的os_epu.h、os_cpu_a.asm和 os_cpu_c.c这三个文件

  • 向UCOSII-CONFIG分组添加CONFIG文件夹下的 includes.h和 os_cfg.h这两个文件

注意:不要将ucos_ii.c文件添加到UCOSII-CORE分组中!!!否则编译以后会提示好多重复定义的错误!

  • 将修改好的ucos文件添加到工程文件中,最后保持目录结构一致,并注意链接头文件引用

  • 在工程的stm32f4xx_it.c,注释掉PendSVHandler()函数

  • 在工程的stm32f4xx_it.c,在SysTick_Handler()函数中添加

    void SysTick_Handler(void)
    {
       #if OS_CRITICAL_METHOD == 3u                                 
        OS_CPU_SR  cpu_sr;
       #endif
        
      OS_ENTER_CRITICAL();
      OSIntEnter();                                              
      OS_EXIT_CRITICAL();
      OSTimeTick();                                               
      OSIntExit();  
      HAL_IncTick();
    }
    
  • 注意os_cfg.h文件中,第3处宏定义的修改,与ucos的时基有关

  • 用的ucos代码的相关文件中注意添加头文件include“os.h”

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值