基于stm32的ucosii系统移植

基于stm32的ucosii系统移植

ID:10026798

大小:5.47 MB

页数:49页

时间:2018-05-21

基于stm32的ucosii系统移植_第1页
基于stm32的ucosii系统移植_第2页
基于stm32的ucosii系统移植_第3页
基于stm32的ucosii系统移植_第4页
基于stm32的ucosii系统移植_第5页
资源描述:

《基于stm32的ucosii系统移植》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于STM32的u/COS-II系统移植【摘要】本文硬件平台采用ARM公司基于ARMV7架构的Cortex-M3系列处理器STM32F103,利用安富来公司现有的开发板,移植一个基于u/COS-II操作系统的应用程序框架(系统移植);创建多个任务,并通过使用消息邮箱进行两个任务之间的通信。本文重点是把u/COS-II系统移植到程序中来,进而把各个基本功能模块化,并划分为几个主任务,以便实现嵌入式系统的操作。【关键字】u/COS-IISTM32系统移植消息邮箱串口通信【引言】随着人类社会经济的不断发展,科研领域不断的拓宽,嵌入式系统产品渐渐完善,并在

2、全世界各行业得到广泛应用。通过移植嵌入式操作系统,计算机可以更好地管理内存,并且在很大程度上提高系统的实时性。本设计通过在STM32上移植u/COS-II操作系统,实现了流水灯闪烁,使用消息邮箱实现多任务间的通信,并通过串口将信息打印到PC终端等功能。加深了笔者对嵌入式操作系统的理解。【正文】1U/COS-II的简介U/COS-II的前身是UCOS,最早出自于1992年美国嵌入式系统专家JeanJ.Labrosse在《嵌入式系统编程》杂志的5月和6月刊上刊登的文章连载,并把UCOS的源码发布在该杂志的BBS上。目前最新的版本:U/COS-lll已经

3、出来,但是现在使用最为广泛的还是U/COS-II,本章我们主要针对U/COS-II进行介绍。U/COS-II是一个可以基于ROM运行的、可裁减的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统(RTOS)。为了提供最好的移植性能,U/COS-II最大程度上使用ANSIC语言进行开发,并且已经移植到近40多种处理器体系上,涵盖了从8位到64位各种CPU(包括DSP)。U/COS-II是专门为计算机的嵌入式应用设计的,绝大部分代码是用C语言编写的。CPU硬件相关部分是用汇编语言编写的,总

4、量约200行的汇编语言部分被压缩到最低限度,为的是便于移植到任何一种其它的CPU上。用户只要有标准的ANSI的C交叉编译器,有汇编器、连接器等软件工具,就可以将U/COS-II嵌人到开发的产品中。U/COS-II具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点,最小内核可编译至2KB。U/COS-II已经移植到了几乎所有知名的CPU上。U/COS-II构思巧妙。结构简洁精练,可读性强,同时又具备了实时操作系统的全部功能,虽然它只是一个内核,但非常适合初次接触嵌入式实时操作系统者,可以说是麻雀虽小,五脏俱全。U/COS-II(V2.91版本

5、)体系结构如图1所示:图1:U/COS-II体系结构图本设计使用的是U/COS-II的最新版本:V2.91版本,该版本U/COS-II比早期的U/COS-II(如V2.52)多了很多功能(比如多了软件定时器,支持任务数最大达到255个等),而且修正了很多已知BUG。从上图可以看出,U/COS-II的移植,只需要修改:os_cpu.h、os_cpu_a.asm和os_cpu.c等三个文件即可,其中:os_cpu.h,进行数据类型的定义,以及处理器相关代码和几个函数原型;os_cpu_a.asm,是移植过程中需要汇编完成的一些函数,主要就是任务切换函数

6、;os_cpu.c,定义一些用户HOOK函数。图中定时器的作用是为U/COS-II提供系统时钟节拍,实现任务切换和任务延时等功能。这个时钟节拍由OS_TICKS_PER_SEC(os_cfg.h中定义)设置,一般设置U/COS-II的系统时钟节拍为1ms~100ms,具体根据所用处理器和使用需要来设置。本设计中,我利用STM32的SYSTICK定时器来提供U/COS-II时钟节拍。U/COS-II早期版本只支持64个任务,但是从2.80版本开始,支持任务数提高到255个,不过对一般使用者来说一般64个任务都是足够多了,一般很难用到这么多个任务。U/

7、COS-II保留了最高4个优先级和最低4个优先级的总共8个任务,用于拓展使用,但实际上,U/COS-II一般只占用了最低2个优先级,分别用于空闲任务(倒数第一)和统计任务(倒数第二),所以剩下给我们使用的任务最多可达255-2=253个(V2.91)。所谓的任务,其实就是一个死循环函数,该函数实现一定的功能,一个工程可以有很多这样的任务(最多255个),U/COS-II对这些任务进行调度管理,让这些任务可以并发工作(注意不是同时工作!并发只是各任务轮流占用CPU,而不是同时占用,任何时候还是只有1个任务能够占用CPU),这就是U/COS-II最基本

8、的功能。U/COS-II的任何任务都是通过一个叫任务控制块(TCB)的东西来控制的,每个任务管理块有3个最重要的参数:1,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。