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
添加两句宏定义
#define CPU_CFG_KA_IPL_BOUNDARY 4u
#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”
|