翻新时间:2023-01-22
基于STM32的μCOS―Ⅲ系统移植的设计
摘 要:随着嵌入式系统产品渐渐完善,并在全世界各行业得到广泛应用,通过移植嵌入式操作系统,计算机可以更好地管理内存,并且在很大程度上提高系统的实时性。文章主要介绍了μCOS-Ⅲ操作系统在基于ARM Contex-M3为内核的STM32处理器的移植要点,并且实现了源码公开的嵌入式实时操作系统μCOS-Ⅲ在STM32处理器上的成功移植。
关键词:μCOS-Ⅲ;STM32处理器;移植
引言
随着人类社会经济的不断发展,科研领域不断的拓宽,嵌入式系统产品渐渐完善,并在全世界各行业得到广泛应用。通过移植嵌入式操作系统,计算机可以更好的管理内存,并且在很大程度上实现了系统的实时性。μCOS-Ⅲ作为一个微型实时操作系统,包括了一个操作系统最基本的特性,使用汇编语言和C语言编写的μCOS-Ⅲ的构思巧妙,结构简洁精炼,可读性很强,作为一个源码开放的嵌入式操作系统,用户只要做很少的工作就可以把它进行移植和维护。
1.1 实时操作系统μCOS-Ⅲ
μCOS-Ⅲ是一个可以基于ROM运行的、可裁减的、抢占式、实时多任务内核,具有高度可移植性。所谓的移植,在一个平台环境能够成功运行的程序,将它搬运到另一个平台环境,并且使其成功运行。发展至今的μCOS-Ⅲ,特别适合于微处理器和控制器,并且已经移植到近40多种处理器体系上,涵盖了从8位到64位的各种CPU。
μCOS-Ⅲ源码可分为:与应用程序相关的文件、与计算机硬件相关的文件和系统内核的各种服务文件。用户在移植时,需要对与计算机硬件相关的文件进行修改:如OS_CPU.H文件,OS_CPU_A.ASM文件和OS_CPU_C.C文件。而系统内核的各种文件,如:OS_CORE.C、OS_FLAG.C、OS_MBOX.C、OS_MUTEX.C等,与应用程序相关的文件:INCLUDES.H和OS_CFG.H则不需要修改。
ST公司针对STM32提供了STM32库作为函数接口,使得开发人员得以脱离最底层的寄存器操作,有开发快速、易于阅读、维护成本低等优点。
2 μCOS-Ⅲ的移植
2.1 修改OS_CPU.H文件
μCOS-Ⅲ的内核使用一个周期时钟中断,以计算任务延时时间和进行任务调度,在STM32中,这样的时钟中断正适合由SysTick来提供。因为OS_CPU_SysTickHandler()函数与STM32库所提供的stm32F10x_it.c文件中的SycTick_Handler()函数功能一样,都是使用SysTick的中断处理,所以我们采用SycTick_Handler()函数。因此,相应的对于OS_CPU.H文件的操作是:注释掉OS_CPU_SysTickHandler()和OS_SysTickInit()函数的声明。
2.2 修改OS_CPU_C.C
OS_CPU_SysTickHandler()和OS_CPU_SysTickInit()函数的定义在OS_CPU_C.C文件中,由于我们采用了STM32官方库提供的函数来对SysTick进行中断处理,所以我们要把OS_CPU_C.C的OS_CPU_SysTickHandler()和OS_CPU_SysTickInit()这两个函数注释掉。
2.3 修改OS_CPU_A.ASM文件
我们下载的μCOS-Ⅲ移植工程是在官方的IAR编译环境下建立的,IAR在汇编的语法方面和我们使用的MDK编译器有一点区别,所有我们对汇编文件的部分指令做如下修改:在OS_CPU_A.ASM文件中,将原来的PUBLIC指令改为EXPORT,它们是等价的。(见表1)
2.4 修改CPU_A.ASM文件
在CPU_A.ASM汇编文件中,仍有因编译环境的不同而引起的错误,修改的方法同修改OS_CPU_A.ASM文件一样,将原来的PUBLIC指令改为EXPORT。除此之外,在CPU_A.ASM文件中某些标号带有冒号,如“CPU_CntLeadZeros:”、“CPU_RevBits:”、
“CPU_WaitForInt:”和“CPU_WaitForExpect:”,为了适应编译环境,需要将其中的冒号去掉。
2.5 修改STM32F10X_IT.C文件
我们可以看到,在SysTick的函数中调用了3个函数,它们都是μCOS源码定义的函数,其基本功能如下:
(1)OSIntEnter()函数,对用于表示中断嵌套层的变量OSIntNesting加1,它与OSIntExit()函数成对出现,在进入中断服务函数时,都应该包含这两个函数,中断服务的内容位于这两个函数之间。
(2)OSIntExit()函数,除了对嵌套层数OSIntNesting减1表示退出中断外,还具有任务调度功能。
(3)OSTimeTick()函数主要工作是对系统统计事件的变量OSTime加1,另外,它还会遍历所有任务,对延时任务的时间减1。
至此,我们对μCOS的源码针对编译环境做了修改,将SysTick中断修改到STM32所提供的STM32F10X_IT.C文件后,就基本完成了μCOS的移植了。
3 系统测试
我们现在需要对移植好的代码做一个简单的测试,通过编写流水灯任务来验证移植的成功。流水灯任务的部分代码如表3:
运行后我们发现实验板的流水灯按照循环的方式一直闪烁,验证了μCOS-Ⅲ在STM32处理器核上的成功移植。
4 结束语
作为一个成熟的嵌入式操作系统,μCOS-Ⅲ已经被广泛移植于各种体系的微型处理器上了。在嵌入式技术高速发展的今天,基于ARM为内核的微处理器凭借ARM优秀的体系结构被运用于各种行业。通过研究μCOS-Ⅲ的移植,可以使得它在更广泛的平台得到应用,更促进嵌入式技术的发展。
参考文献
[2]任哲.嵌入式操作系统基础μC/OS-II和Linux(第2版)[M].北京:北京航空航天大学出版社,2011.
[3]野火开发板配套资料.μC/OS-Ⅲ在STM32的移植详解[Z].
[4]Joseph Yiu.ARM Contex-M3 权威指南[M].宋岩,译.北京:北京航空航天大学,2009.
[5]许伦辉,修科鼎.基于ARM处理器的μCOS-II移植[J].科技广场,2010.
[6]邓中亮,何双亮.基于ARM的嵌入式操作系统μC/OS-II的移植研究[J].计算机技术与发展,2007.
作者简介:马昊(1994-),男,本科在读,现就读于徐州工程学院信电学院电子信息科学与技术专业。
下载文档
网友最新关注
- 我的烦恼
- 我的新发现
- 我喜欢爸爸
- 买菜记
- 我第一次骑马
- 废墟中的感动
- 回母校看看
- 奶奶踢毽子
- 瞻仰淮海战役烈士纪念塔
- “臭”名远扬的豆腐
- 蚂蚁搬家晴必雨
- 我会画画
- 童年趣事
- 我家的一张照片
- 保护环境
- 教材选用制度
- 基础部教师岗位职责
- 高中班级管理改革实施方案
- 公司员工管理制度范文
- 营运部客户服务专员工作职责
- 计算机系党支部党员汇报制度
- 煤矿会议的相关规章制度
- 公共安全管理制度
- 办公室员工行为规范
- 石油基地宠物饲养管理实施细则
- 各主要教学环节的质量标准
- 政府机关事业单位工作人员管理制度
- 初中十月教研工作总结
- 城市公交安全生产责任书
- 党支部中心组学习以及考核制度
- 权力与权利的关系
- 基于市场导向的防治虚假广告的法律问题探究
- 网络恶搞之侵权分析
- 影响司法公信力的因素之探讨
- 望失落的亲情重归法律视野
- 我国《食品安全法》十倍赔偿条款的修订与完善
- 维护妇女儿童合法权益思考
- 恐怖事件受害者权利救济模式的研究与构建
- 论西方社会法律价值
- 关于中国历史上使用重典的思考
- 我国公用事业管制革新
- 刍议奸非罪
- 政府部门间协调机制的法律保障研究
- 近代中国宪政文化浅析
- 合作治理:问题与对策
- 《要下雨了》教学设计之二
- 《要下雨了》教学设计之八
- 《画》教学设计之四
- 《小小的船》教学设计之一
- 《要下雨了》朗读指导及练习设计
- 《小小的船》教学设计及反思
- 《小小的船》教学设计之三
- 《小小的船》第二课时
- 《要下雨了》综合资料之一
- 《小小的船》教学评析
- 《画》教学设计之三
- 《画》教学设计之五
- 《小小的船》教学设计之二
- 《要下雨了》综合资料之二
- 《小小的船》第二课时教学设计之一