[应用相关]

uCOS-III移植到STM32分析

[复制链接]
659|5
手机看帖
扫描二维码
随时随地手机跟帖
paotangsan|  楼主 | 2019-7-5 09:25 | 显示全部楼层 |阅读模式
  摘要:所谓移植是将一个系统嵌入到STM32工程项目中,需要将STM32的工程“神经”与uC/OS的“神经”搭一起。而对于操作系统的移植,我们需要知道功能流程,没有必要所有的程序代码都需要自己写,那就变成自己写操作系统了,会特别累。   


一、移植步骤简述

(1)下载STM32最新固件库3.5版本。

(2)创建一个纯净的裸机工程项目。

(3)uC/OS官网下载STM32的案例程序,找最相近的芯片项目。

(4)将操作系统移植到裸机工程项目中。

(5)修改uC/OS-III移植案例中的代码。


使用特权

评论回复
paotangsan|  楼主 | 2019-7-5 09:26 | 显示全部楼层
一、创建无操作系统的STM32裸机程序。

1.从STM32官网下载最新固件库3.5。



2.STM32的固件库中提供了裸机工程项目案例,根据该工程案例进行修改制作,尤其是那些头文件,都包含进去,需要特别注意的是,这个固件库中都是最新的,而后面的uC/OS-III移植案例中提供的是旧版本的STM32固件库,需要抛弃那些固件库,否则会导致头文件冲突,会产生特别多的报错,如果一一修改,困难太多。裸机项目程序缩略图如下:

896475d1ea732d103c.png

使用特权

评论回复
paotangsan|  楼主 | 2019-7-5 09:26 | 显示全部楼层

1.从官网下载uCOS-III移植STM32相近芯片移植案例,我下载的是移植到STM32F107的案例,如下图所示:


解压,打开移植案例的keil工程案例,项目缩略图如下:

Center.jpg


使用特权

评论回复
paotangsan|  楼主 | 2019-7-5 09:26 | 显示全部楼层

1.展开这些文件夹,可以知道uCOS-III移植所需的各种文件

如下所示:

Center.jpg

Center.jpg

Center.jpg

Center.jpg

Center.jpg


使用特权

评论回复
paotangsan|  楼主 | 2019-7-5 09:27 | 显示全部楼层
通过这个移植案例的树形结构就可以知道uCOS-III移植所需要的uCOS-III的文件,将所需要的文件复制到步骤二中的裸机程序,这里特别注意:不要复制移植案例中的固件库文件,因为这些固件库版本过低,即便是版本高,也难免与步骤二建成的裸机项目中的固件库有冲突,而如果复制后,就会发现太多太多的报错,而且不要使用移植案例中的启动文件,而是使用步骤二中的启动文件,移植所需的各个文件如下:












Center.jpg

Center.jpg


Center.jpg


Center.jpg


Center.jpg

Center.jpg


使用特权

评论回复
paotangsan|  楼主 | 2019-7-5 09:27 | 显示全部楼层
1.修改启动代码

这也是移植工作中的重中之重,上述步骤只是将uCOS-III复制到工程文件中,并没有将uCOS-III的神经与STM32工程文件搭一起。我们知道STM32的操作系统移植,是使用可挂起系统中断PendSVHandler和滴答定时器中断SysTickHandler,滴答定时器为操作系统提供时钟节拍,可挂起中断则是使用ucos进入到STM32系统中。

所以仿照移植案例的启动代码,在整个项目文档中,将PendSVHandler替换为OS_CPU_PendSVHandler,将SysTickHandler替换为OS_CPU_SysTickHandler,另外需要将步骤二中stm32f10x_it.c中的这两个中断服务函数注释掉,而使用uCOS-III中的这两个中断服务函数。  

2.其他的就是根据需要,修改bsp.c中的函数,去掉那些不用的功能函数,省的报错。


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

51

主题

3849

帖子

0

粉丝