教育资源为主的文档平台

当前位置: 查字典文档网> 所有文档分类> 论文> 其他论文> 基于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-),男,本科在读,现就读于徐州工程学院信电学院电子信息科学与技术专业。

下载文档

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

网友最新关注

从《乌塔》想到……
灰姑娘的故事
白雪公主的故事
我的小伙伴2
我的小伙伴10
老鼠兄弟的故事
小伙伴
给王虹同学的一封信3
我的小伙伴9
乌鸦和狐狸的故事后传
铅笔、橡皮、转笔刀的故事
眼睛与眉毛的故事
一张明信片的故事
一只猪的故事
自由写作实践
粤东北客家围龙屋建筑中的风水
角度过程能力指数及其在非对称角偏差下的推广
居住区教育设施的服务半径
创业板企业激励机制的方案探讨
浅谈企业会计信息化现状及发展途径
“飞特族”冲击国企管理
西方EVA价值评价与物流企业管理创新
财务杠杆对企业资本结构的影响
分析建筑工程拖延工期的原因及对策
中国式国企管理60年
浅论城市规划设计与建筑设计的关系
建筑施工中几种常见质量通病的分析
浅谈提高煤炭运销管理水平须加强统计工作
高层建筑楼前广场的设计方法初探
居住区规划的理解
《胖乎乎的小手》重点句品读
《胖乎乎的小手》重点字词的意思
《胖乎乎的小手》重点字词梳理
《胖乎乎的小手》写作训练 分享快乐
《胖乎乎的小手》写作训练 一双胖乎乎的小手
《胖乎乎的小手》重难点分析
《胖乎乎的小手》考点练兵
《胖乎乎的小手》随堂练习 【提高篇】
《胖乎乎的小手》整体阅读感知
《胖乎乎的小手》趣闻故事 孝顺的小乌鸦
《胖乎乎的小手》第二讲义
《胖乎乎的小手》第一讲义
《胖乎乎的小手》写作训练 我只要一颗红气球
《胖乎乎的小手》随堂练习 【巩固篇】
《胖乎乎的小手》作者简介及主要作品