教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> 论文> 其他论文> 基于STM32的μCOS―Ⅲ系统移植的设计

基于STM32的μCOS―Ⅲ系统移植的设计

上传者:网友
|
翻新时间: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-),男,本科在读,现就读于徐州工程学院信电学院电子信息科学与技术专业。

下载文档

版权声明:此文档由查字典文档网用户提供,如用于商业用途请与作者联系,查字典文档网保持最终解释权!

网友最新关注

我的烦恼
我的新发现
我喜欢爸爸
买菜记
我第一次骑马
废墟中的感动
回母校看看
奶奶踢毽子
瞻仰淮海战役烈士纪念塔
“臭”名远扬的豆腐
蚂蚁搬家晴必雨
我会画画
童年趣事
我家的一张照片
保护环境
教材选用制度
基础部教师岗位职责
高中班级管理改革实施方案
公司员工管理制度范文
营运部客户服务专员工作职责
计算机系党支部党员汇报制度
煤矿会议的相关规章制度
公共安全管理制度
办公室员工行为规范
石油基地宠物饲养管理实施细则
各主要教学环节的质量标准
政府机关事业单位工作人员管理制度
初中十月教研工作总结
城市公交安全生产责任书
党支部中心组学习以及考核制度
权力与权利的关系
基于市场导向的防治虚假广告的法律问题探究
网络恶搞之侵权分析
影响司法公信力的因素之探讨
望失落的亲情重归法律视野
我国《食品安全法》十倍赔偿条款的修订与完善
维护妇女儿童合法权益思考
恐怖事件受害者权利救济模式的研究与构建
论西方社会法律价值
关于中国历史上使用重典的思考
我国公用事业管制革新
刍议奸非罪
政府部门间协调机制的法律保障研究
近代中国宪政文化浅析
合作治理:问题与对策
《要下雨了》教学设计之二
《要下雨了》教学设计之八
《画》教学设计之四
《小小的船》教学设计之一
《要下雨了》朗读指导及练习设计
《小小的船》教学设计及反思
《小小的船》教学设计之三
《小小的船》第二课时
《要下雨了》综合资料之一
《小小的船》教学评析
《画》教学设计之三
《画》教学设计之五
《小小的船》教学设计之二
《要下雨了》综合资料之二
《小小的船》第二课时教学设计之一