ARM|uCOS-III移植到STM32分析

摘要:所谓移植是将一个系统嵌入到STM32工程项目中,需要将STM32的工程“神经”与uC/OS的“神经”搭一起。而对于操作系统的移植,我们需要知道功能流程,没有必要所有的程序代码都需要自己写,那就变成自己写操作系统了,会特别累。

一、移植步骤简述
(1)下载STM32最新固件库3.5版本。
(2)创建一个纯净的裸机工程项目。
(3)uC/OS官网下载STM32的案例程序,找最相近的芯片项目。
(4)将操作系统移植到裸机工程项目中。
(5)修改uC/OS-III移植案例中的代码。

一、创建无操作系统的STM32裸机程序。
1.从STM32官网下载最新固件库3.5,下载方式见如下网址:
http://blog.sina.com.cn/s/blog_7025f39e0101k611.html
2.STM32的固件库中提供了裸机工程项目案例,根据该工程案例进行修改制作,尤其是那些头文件,都包含进去,需要特别注意的是,这个固件库中都是最新的,而后面的uC/OS-III移植案例中提供的是旧版本的STM32固件库,需要抛弃那些固件库,否则会导致头文件冲突,会产生特别多的报错,如果一一修改,困难太多。裸机项目程序缩略图如下:
ARM|uCOS-III移植到STM32分析
文章图片


1.从官网下载uCOS-III移植STM32相近芯片移植案例,我下载的是移植到STM32F107的案例,如下图所示:
【ARM|uCOS-III移植到STM32分析】ARM|uCOS-III移植到STM32分析
文章图片



解压,打开移植案例的keil工程案例,项目缩略图如下:
ARM|uCOS-III移植到STM32分析
文章图片



1.展开这些文件夹,可以知道uCOS-III移植所需的各种文件
如下所示:
ARM|uCOS-III移植到STM32分析
文章图片


ARM|uCOS-III移植到STM32分析
文章图片


ARM|uCOS-III移植到STM32分析
文章图片


ARM|uCOS-III移植到STM32分析
文章图片


ARM|uCOS-III移植到STM32分析
文章图片


ARM|uCOS-III移植到STM32分析
文章图片



通过这个移植案例的树形结构就可以知道uCOS-III移植所需要的uCOS-III的文件,将所需要的文件复制到步骤二中的裸机程序,这里特别注意:不要复制移植案例中的固件库文件,因为这些固件库版本过低,即便是版本高,也难免与步骤二建成的裸机项目中的固件库有冲突,而如果复制后,就会发现太多太多的报错,而且不要使用移植案例中的启动文件,而是使用步骤二中的启动文件,移植所需的各个文件如下:
ARM|uCOS-III移植到STM32分析
文章图片

ARM|uCOS-III移植到STM32分析
文章图片


ARM|uCOS-III移植到STM32分析
文章图片


ARM|uCOS-III移植到STM32分析
文章图片


ARM|uCOS-III移植到STM32分析
文章图片


ARM|uCOS-III移植到STM32分析
文章图片



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中的函数,去掉那些不用的功能函数,省的报错。







    推荐阅读