uCOS移植
这里举个栗子,就拿uCOS II来进行说明下移植过程
Micurim官网下载厂家单片机已经移植好的工程文件,若没有找到具体型号,同内核的也可以。这里具体拿ST公司CortexM3内核来作为例子
移植的芯片型号为STM32F103ZET6,官网上没找到这款型号的,回到上面说的,直接找该厂家M3内核的工程,找到STM32F107的,下载下来。
解压后打开,看到文件具体组织形式如下:

第一个EvalBoards文件夹为厂家的开发板移植好的工程,继续打开会看到两个文件夹
BSP和uCOS-II,BSP为单片机外设驱动程序,uCOS-II为开发工具的工程文件

第二个uC-CPU文件夹为CPU相关的文件,这里我们不使用
第三个uC-LIB文件夹为uCOS相关库,这里暂时不用
第四个uCOS-II文件夹就是关键了,打开这个文件夹可以看到有Ports和Source这两个文件。Ports里面主要就是内核相关接口函数,可以认为是连接了整个操作系统和芯片内核操作的接口

Source文件夹里面就是uCOSII的源码了

在了解了文件组成后就可以开始移植了,将源码里面的内容先直接复制到工程目录下,并且在MDK软件中将文件内容添加,如下所示,并且对编译路径进行设置。由于对整个uCOS我们一般应用时还需要对其进行进行配置和裁剪中,需要包含app_cfg.h和os_cfg.h两个文件,这里为了方便起见,直接将EvalBoards文件夹下的拷贝到我们编译路径下就可以了。


1.打开os_cfg.h文件,将其中OS_APP_HOOKS_EN 设置为0,取消钩子函数的定义

2.打开os_cpu_a.asm文件,为了兼容ST的标准外设启动代码将OS_CPU_PendSVHandler改为PendSVHandler,改的地方如下:


3.打开os_cpu_c.c文件,取消一些钩子函数的声明和相关滴答函数的定义,并且将os_cpu.h中滴答时钟以及PendSVHandler函数进行注释,修改的地方如下:




4.打开stm32f10x_it.c,注释掉中断函数部分,由于操作系统的跳转已经通过os_cpu_a.asm里面进行中断实现,避免重复定义

5.编写滴答时钟初始化函数和中断函数


注:uCOS就算没有事可做,也会有空闲任务进行执行,空闲任务优先级往往设置较低,在os_cfg.h中的OS_LOWEST_PRIO可进行设置


浙公网安备 33010602011771号