uCOS-III移植到STM32分析
2016-12-27 22:31
260 查看
摘要:所谓移植是将一个系统嵌入到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固件库,需要抛弃那些固件库,否则会导致头文件冲突,会产生特别多的报错,如果一一修改,困难太多。裸机项目程序缩略图如下:
![](https://img-blog.csdn.net/20161227222113292?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM1MTA1MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
1.从官网下载uCOS-III移植STM32相近芯片移植案例,我下载的是移植到STM32F107的案例,如下图所示:
![](https://img-blog.csdn.net/20161227222219747?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM1MTA1MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
解压,打开移植案例的keil工程案例,项目缩略图如下:
![](https://img-blog.csdn.net/20161227222250719?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM1MTA1MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
1.展开这些文件夹,可以知道uCOS-III移植所需的各种文件
如下所示:
![](https://img-blog.csdn.net/20161227222303841?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM1MTA1MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20161227222515423?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM1MTA1MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20161227222620081?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM1MTA1MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20161227222631019?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM1MTA1MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20161227222640894?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM1MTA1MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20161227222658096?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM1MTA1MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
通过这个移植案例的树形结构就可以知道uCOS-III移植所需要的uCOS-III的文件,将所需要的文件复制到步骤二中的裸机程序,这里特别注意:不要复制移植案例中的固件库文件,因为这些固件库版本过低,即便是版本高,也难免与步骤二建成的裸机项目中的固件库有冲突,而如果复制后,就会发现太多太多的报错,而且不要使用移植案例中的启动文件,而是使用步骤二中的启动文件,移植所需的各个文件如下:
![](https://img-blog.csdn.net/20161227222801503?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM1MTA1MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20161227222815785?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM1MTA1MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20161227222828769?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM1MTA1MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20161227222839786?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM1MTA1MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20161227222853036?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM1MTA1MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
![](https://img-blog.csdn.net/20161227222916396?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAxMjM1MTA1MQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
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中的函数,去掉那些不用的功能函数,省的报错。
一、移植步骤简述
(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固件库,需要抛弃那些固件库,否则会导致头文件冲突,会产生特别多的报错,如果一一修改,困难太多。裸机项目程序缩略图如下:
1.从官网下载uCOS-III移植STM32相近芯片移植案例,我下载的是移植到STM32F107的案例,如下图所示:
解压,打开移植案例的keil工程案例,项目缩略图如下:
1.展开这些文件夹,可以知道uCOS-III移植所需的各种文件
如下所示:
通过这个移植案例的树形结构就可以知道uCOS-III移植所需要的uCOS-III的文件,将所需要的文件复制到步骤二中的裸机程序,这里特别注意:不要复制移植案例中的固件库文件,因为这些固件库版本过低,即便是版本高,也难免与步骤二建成的裸机项目中的固件库有冲突,而如果复制后,就会发现太多太多的报错,而且不要使用移植案例中的启动文件,而是使用步骤二中的启动文件,移植所需的各个文件如下:
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中的函数,去掉那些不用的功能函数,省的报错。
相关文章推荐
- STM32平台移植uCOSIII
- stm32 uCOS-III移植
- UCOSIII移植到STM32上(待更)
- stm32移植ucosIII
- stm32移植UCOSIII的空间不足问题解决
- ucOS_II移植:Stm32启动代码分析
- STM32移植uCOS-II系统(2)
- 移植 uC/OS-III 到 STM32
- ucos-II移植到stm32上关于systick部分的修改
- zedboard移植ucos-III 错误解决办法
- STM32移植ucos‖(一)
- 嵌入式系统学习——STM32之UCOS-III信号量和互斥信号量
- uCOS-II移植到STM32上的详细步骤
- 在带FPU的Cortex-M4F上移植ucos-III
- Freemodbus RTU在stm32上的移植分析
- UCOS移植代码之LAMMY分析--OS_CPU_C.C
- uCOS-II移植到STM32的详细步骤
- ucos-ii移植之任务堆栈的分析
- 如何移植uCOS-III到Linux系统 How to Port uCOS-III on Linux OS
- STM32的ucos移植