文章目录
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
2. os_cpu_c.asm
.asm文件中主要修改两处,将异常处理函数名由os_cpu_PendSV_Handler改为PendSV_Handler。
3. os_cfg.h
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”
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/225449.html原文链接:https://javaforall.net
