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可进行设置

 

 

 

 

posted @ 2021-12-15 10:52  idea~  阅读(481)  评论(0)    收藏  举报