新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > UC/OS II嵌入式技术

UC/OS II嵌入式技术

作者: 时间:2016-09-12 来源:网络 收藏

uC/OS-II的任务切换机理及中断调度优化

摘要:μC/OS-II是一种适用于嵌入式系统的抢占式实时多任务操作系统,开放源代码,便于学习和使用。介绍μC/OS-II在任务级和中断级的任务切换原理,以及这一操作系统基于嵌入式系统的对于中断的处理;相对于内存资源较少的单片机,着重讨论一种优化的实用堆栈格式和切换形式,以提高资源的利用率;结合MSP430单片机,做具体的分析。 关键词:实时多任务操作系统 μC/OS MSP430 中断 堆栈

引 言

在嵌入式操作系统领域,由Jean J. Labrosse开发的μC/OS,由于开放源代码和强大而稳定的功能,曾经一度在嵌入式系统领域引起强烈反响。而其本人也早已成为了嵌入式系统会议(美国)的顾问委员会的成员。

不管是对于初学者,还是有经验的工程师,μC/OS开放源代码的方式使其不但知其然,还知其所以然。通过对于系统内部结构的深入了解,能更加方便地进行开发和调试;并且在这种条件下,完全可以按照设计要求进行合理的裁减、扩充、配置和移植。通常,购买RTOS往往需要一大笔资金,使得一般的学习者望而却步;而μC/OS对于学校研究完全免费,只有在应用于盈利项目时才需要支付少量的版权费,特别适合一般使用者的学习、研究和开发。自1992第1版问世以来,已有成千上万的开发者把它成功地应用于各种系统,安全性和稳定性已经得到认证,现已经通过美国FAA认证。

● 1 μC/OS-II的几大组成部分

μC/OS-II可以大致分成核心、任务处理、时间处理、任务同步与通信,CPU的移植等5个部分。

核心部分(OSCore.c) 是操作系统的处理核心,包括操作系统初始化、操作系统运行、中断进出的前导、时钟节拍、任务调度、事件处理等多部分。能够维持系统基本工作的部分都在这里。

任务处理部分(OSTask.c) 任务处理部分中的内容都是与任务的操作密切相关的。包括任务的建立、删除、挂起、恢复等等。因为μC/OS-II是以任务为基本单位调度的,所以这部分内容也相当重要。

时钟部分(OSTime.c) μC/OS-II中的最小时钟单位是timetick(时钟节拍)。任务延时等操作是在这里完成的。

任务同步和通信部分 为事件处理部分,包括信号量、邮箱、邮箱队列、事件标志等部分;主要用于任务间的互相联系和对临界资源的访问。

与CPU的接口部分 是指μC/OS-II针对所使用的CPU的移植部分。由于μC/OS-II是一个通用性的操作系统,所以对于关键问题上的实现,还是需要根据具体CPU的具体内容和要求作相应的移植。这部分内容由于牵涉到SP等系统指针,所以通常用汇编语言编写。主要包括中断级任务切换的底层实现、任务级任务切换的底层实现、时钟节拍的产生和处理、中断的相关处理部分等内容。

uC/OS II在S3C2410上的移植:

随着信息化技术的发展和数字化产品的普及,以计算机技术、芯片技术和软件技术为核心的嵌入式系统再度成为当前研究和应用的热点。

对功能、可靠性、成本、体积和功耗严格要求的嵌入式系统一般由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,其中嵌入式微处理器和嵌入式操作系统分别是其硬件和软件的核心。

ARM处理器由于其具有小体积、低功耗、低成本、高性能等特点,广泛应用在16/32位嵌入式RISC解决方案中,几乎占有嵌入式微处理器市场分额的75% ,本文选定三星公司生产的一款基于ARM920T核的高性能低功耗SOC芯片S3C2410作为移植方案的硬件平台。市场上主流的嵌入式实时操作系统有Vxworks、pSos、WinCE、Linux等,基于实时性、成本以及开发难度方面的考虑,我们选择uC/OS II——开放源代码的嵌入式实时操作系统。

● uC/OS II介绍

uC/OS II(Micro Control Operation System Two)是一个可以基于ROM运行的、可裁减的、抢占式(见图1)实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统(RTOS)。为了提供最好的移植性能,uC/OS II最大程度上使用ANSI C语言进行开发,并且已经移植到近40多种处理器体系上,涵盖了从8位到64位各种CPU(包括DSP)。

uC/OS II可以简单的视为一个多任务调度器,在这个任务调度器之上完善并添加了和多任务操作系统相关的系统服务,如信号量、邮箱等。其主要特点有公开源代码,代码结构清晰、明了,注释详尽,组织有条理,可移植性好,可裁剪,可固化。内核属于抢占式,最多可以管理60个任务。从1992年开始,由于高度可靠性、鲁棒性和安全性,uC/OS II已经广泛使用在从照相机到航空电子产品的各种应用中。

2 uC/OS II在S3C2410上的可移植性

所谓移植,就是使这个实时内核能在某个微处理器上运行。为了方便移植,大部分的uC/OS II代码是用c语言写的,但仍需要用c和汇编语言写一些与处理器相关的代码,这是因为uC/OS II在读写处理器寄存器时只能通过汇编语言来实现。由于uC/OS II在设计时就已经充分考虑了可移植性,所以uC/OS II的移植相对来说是比较容易的。uC/OS II的框架结构如图2。

uC/OSII的正常运行需要处理器平台满足以下要求:

a)处理器的C编译器能产生可重入代码。

b)用C语言就可以打开和关闭中断。

c)处理器支持中断,并且能产生定时中断(通常在10至100Hz之间)。

d)处理器支持能够容纳一定量数据(可能是几千字节)的硬件堆栈。

e)处理器有将堆栈指针和其它CPU寄存器读出和存储到堆栈或内存中的指令。

S3C2410处理器采用ARM920T内核,内部共有37个寄存器,其中R13通常用作堆栈指针,只要系统RAM空间允许,堆栈空间理论上没有限制。ARM处理器提供ARM指令和Thumb指令两种指令集,每种指令集都包含有丰富的指令对堆栈进行操作,可以随意的对处理器中的寄存器进行堆栈操作。根据堆栈生长方向的不同,可以生成4种不同的堆栈,分别是满递增、空递增、满递减(此移植中使用的是满递减方式)、空递减。芯片内集成5个定时时钟,任何一个都可以产生定时中断,满足第三条要求。ADS集成开发环境的内置编译器可以产生可重入代码,并且支持内嵌汇编,C环境中可任意的进行开关中断操作。综上所述uC/OS II完全可以移植到S3C2410上运行。



关键词:

评论


相关推荐

技术专区

关闭