STM32F103之uCOSII移植

  • supermu
  • LV0工程师
  • |      2014-04-25 22:55:49
  • 浏览量 7280
  • 回复:32

来论坛有些天了,看了论坛的各个板块,发现这个板块适合自己,很喜欢CortexM系列,一点经验活跃一下STM32F103之uCOSII移植


看了很多ucosii移植STM32的教程,见过写的很好的,也见过无厘头的,在这希望写个相对有引导性的教程, 也希望能借此机会品尝一下ST的新作STM32F429

两个月前公司决定革新一些dsp产品改用stm32,也就是cost down。接触CortexM3体会最深的就是其相对统一的结构,带来的可移植性。很多人都听说过RTOS,听说过移植,但都止于听说。学习更需要实践。

 

学习UcosIISTM32需要两个基本的知识储备

1.         嵌入式实时操作系统uCOS-II(邵贝贝):http://pan.baidu.com/s/1c0jBbeo

2.         CortexM3权威指南:http://pan.baidu.com/s/1c0jBbd2

注:英文阅读能力强的建议阅读英文版

一、内核代码

学习完UcosII对她的印象可能只是书本上的那些片段,需要有个具象的理解,上官网下载源代码http://micrium.com/(需注册才可下载)

STM32F103之uCOSII移植

注意:下载到的代码是在IAR编译环境下的

解压之后会有三个文件

1.       AppNotes:官方的应用手册

AppNotes文件夹下有个MicriumAppNotesAN1xxx-RTOS AN1018-uCOS-II-Cortex-M3AN-1018.pdf此文件是官方移植ucosIIARM Cortex-M3的内核代码需要修改的详细说明。

2.       LicensingUcosII的使用许可证

3.       Software:源程序文件

这里用到的是uCOS-II文件夹。在整个移植过程中只需用到uCOS-II下的两个文件,PortsSource.

等移植完成后,回过头来思考一下CPU、uC-CPU、uC-LIB这三个文件是干什么的?

下面是开发板与uC/OS-II的框架图:

                            UcosII的结构及其与硬件的关系

关于上方框图和各个.C文件的说明可参阅官方《嵌入式实时操作系统Ucos-III》的第二章。

下图为KEIL工程文件目录:

二、内核代码的一些理解

首先研读AppNotes文件夹下的MicriumAppNotesAN1xxx-RTOS AN1018-uCOS-II-Cortex-M3AN-1018.pdf。一遍不懂读两遍两遍不懂读三遍。Micrium公司的文化决定的她的资料是难以超越的。

两个重要的概念

钩子函数:AN-1018.pdf中有说明。

PendSV进行上下文切换:原理参考《Cortex-M3 权威指南》7. 6 SVCPendSV;PendSV的典型应用即是进行上下文切换,举个栗子:systick产生定时中断我们把它的中断处理函数
改成

STM32F103之uCOSII移植

OSIntEnter();进行简单的计数

OSTimeTick();//遍历所有任务的延时状态,并进行减一操作并判断是否为挂起任务

OSIntExit();触发一个pendsv中断,在pendsv中断处理函数中进行任务切换

三、SysTick

SysTick是系统的心跳,任务的延时,切换都需要它的参与。在此我们注销掉ucosii关于SysTick的函数和宏定义,改用st提供的函数;

1.       打开os_cpu.h注销掉这些函数

2.       注销掉相应函数在os_cpu_c.h中函数的定义

3.       注销os_cpu_c.h中关于SysTick的宏

4.       参考《STM32固件库中文参考手册》在你的BSP.C中书写你的SysTick_init();

注:尝试自己书写,实在困难在下载别人的程序参考或发帖提问

四、编译器相关处理

                          如果你用的是IAR编译器,这部分忽略;如果你和我一样使用KEIL,那就要稍作修改,以实验编译环境的不同。

1、  os_cpu_a.asm

将PUBIC改为EXPORT,修改完成如下图

关于这些修改有兴趣可参阅RealView 编译工具4.0版《汇编器指南》

2、  修改段,修改完成如下图

3、  修改os_dbg.c,修改完成如下图

 附件为本文PDF


  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:29
lilei 2016-10-28
学习一下,谢谢
0   回复
举报
发布
7943603 2016-10-17
高水平贴,赞一个。
0   回复
举报
发布
OPEDV 2016-06-04
多谢分享
0   回复
举报
发布
闭上眼睛就是天黑 2015-12-23
非常棒,欢迎常来分享
0   回复
举报
发布
冰山一角 2015-12-22
谢谢分享                   
0   回复
举报
发布
滋补烩面 2015-12-09
这个上面怎么会有钥匙的状态哇???
0   回复
举报
发布
Boney 2015-12-09
mark,学习了
0   回复
举报
发布
武汉老农夫 2015-03-26
好东西啊
0   回复
举报
发布
zw19838 2015-03-25
特别好,谢谢
0   回复
举报
发布
etcjd 2015-03-25
kankan!!!!!!!!
0   回复
举报
发布
查看更多
x
收藏成功!点击 我的收藏 查看收藏的全部帖子