匠人的百宝箱与非门分舵 https://bbs.21ic.com/?426660 [收藏] [复制] [RSS]

日志

实时多任务操作系统(RTOS)进入单片机开发领域

已有 1843 次阅读2008-10-9 11:17 |个人分类:与非门专栏|系统分类:嵌入式系统

 





实时多任务操作系统(RTOS)进入单片机开发领域

 










内 容 1.实时多任务操作系统(RTOS)
(1)更加面向硬件系统,而不是操作者
嵌入式系统处理器一般都是独立工作的,没有人的直接参与;即使参与,也没有大量的文字信息输出,这是和桌面计算机有所不同的。因此RTOS着重面向的是硬件,而不是具有完整的人机界面。
(2)实时性
单片机系统的监测、控制、通信等工作都要求实时性,一旦出现有关情况,CPU能够及时响应,刻不容缓。为此,一个实用的RTOS都应具有完善的中断响应机制,保证中断响应潜伏时间足够短。
(3)多任务
半导体技术的发展和应用复杂性的增长促使CPU的处理能力越来越高,当今的一片16位或32位单片机,在运算速度、寻址能力等方面可以相当于8位单片机的几十片之和。在这样强大的处理器上运行应用程序,必然不是整块,而是根据所要实现的若干方面功能,划分为数个任务,这样有利于软件的开发和维护。
因此单片机系统中采用的RTOS必然是支持多任务的,并能够根据各个任务的轻重缓急,合理地在它们之间分配CPU和各种资源的占用时间。
(4)不同的典型外设驱动支持
单片机的典型片内外设为定时器、A/D、PWM、D/A、串行口、LCD/LED接口,CAN-bus、IC-bus等。根据处理器类型的不同,RTOS在出厂时一般附带若干上面硬件接口的驱动程度,而网卡等片外设备的驱动程序,以及其它一些高级驱动函数,如兼容DOS的文件系统、TCP/IP协议等,则需要另行选购。以RTOS为基础和接口标准,可以设计出大量的库函数驱动模块,并根据实际需要选择或裁剪。
(5)高可靠性
一般计算机的操作系统出现问题,例如死机,除数据丢失等外,不会有太大的问题;而单片机系统一般都是和工业控制、交通工具、医用器械等机电系统密切相关,不适当的输出甚至不及时的输出都可能会带来财产损失和安全问题。因此嵌入式系统中的RTOS要求高可靠性,发行之前必须经过严格的测试。这是一个耗费时间和精力的过程,也是RTOS价格普遍高于一般操作系统的原因之一。

2.RTOS是一个内核
典型的单片机程序在程序指针复位后,首先进行堆栈、中断、中断向量、定时器、串行口等接口设置、初始化数据存储区和显示内容,然后就来到了一个监测、等待或空循环,在这个循环中,CPU可以监视外设、响应中断或用户输入。
这段主程序可以看作是一个内核,内核负责系统的初始化和开放、调度其它任务,相当于C语言中的主函数。
RTOS就是这样的一个标准内核,包括了各种片上外设初始化和数据结构的格式化,不必、也不推荐用户再对硬件设备和资源进行直接操作,所有的硬件设置和资源访问都要通过RTOS核心。硬件这样屏蔽起来以后,用户不必清楚硬件系统的每一个细节就可以进行开发,这样就减少了开发前的学习量。
一般来说,对硬件的直接访问越少,系统的可靠性越高。RTOS是一个经过测试的内核,与一般用户自行编写的主程序内核相比,更规范,效率和可靠性更高。对于一个精通单片机硬件系统和编程的“老手”而言,通过RTOS对系统进行管理可能不如直接访问更直观、自由度大,但是通过RTOS管理能够排除人为疏忽因素,提高软件可靠性。
另外,高效率地进行多任务支持是RTOS设计从始至终的一条主线,采用RTOS管理系统可以统一协调各个任务,优化CPU时间和系统资源的分配,使之不空闲、不拥塞。针对某种具体应用,精细推敲的应用程序不采用RTOS可能比采用RTOS能达到更高的效率;但是对于大多数一般用户和新手而言,采用RTOS是可以提高资源利用率的,尤其是在片上资源不断增长、产品可靠性和进入市场时间更重要的今天。

3.RTOS是一个平台
RTOS建立在单片机硬件系统之上,用户的一切开发工作都进行于其上,因此它可以称作是一个平台。采用RTOS的用户不必花大量时间学习硬件,和直接开发相比起点更高。
RTOS还是一个标准化的平台,它定义了每个应用任务和内核的接口,也促进了应用程序的标准化。应用程序标准化后便于软件的存档、交流、修改和扩展,为嵌入式软件开发的工程化创造了条件、减少开发管理工作量。嵌入式软件标准化推广到社会后,可以促进软件开发的分工,减少重复劳动,近来出现的建立于RTOS上的文件和通信协议库函数产品等就是实例。
RTOS对于开发单位和开发者个人来说也是一种提高。引入RTOS的开发单位,相当于引入了一套行业中广泛采用的嵌入式系统应用程序开发标准,使开发管理更简易、有效。基于RTOS和C语言的开发,具有良好的可继承性,在应用程序、处理器升级以及更换处理器类型时,现存的软件大部分可以不经修改地移植过来。
对于开发人员来说,则相当于在程序设计中采用一种标准化的思维方式,提高知识创造的效率;同时因为具有类似的思路,可以更快地理解同行其它人员的创造成果。

4.RTOS产生并得到迅速发展的原因
单片机处理器能力的提高和应用程序功能的复杂化、精确化,迫使应用程序划分为多个重要性不同的任务,在各任务间优化地分配CPU时间和系统资源,同时还要保证实时性。靠用户自己编写一个实现上述功能的内核一般是不现实的,而这种需求又是普遍的。在这种形势之下,由专业人员编写的、满足大多数用户需要的高性能RTOS内核就是一种必然结果了。
对程序实时性和可靠性要求的提高也是RTOS发展的一个原因。此外,单片机系统软件开发日趋工程化,产品进入市场时间不断缩短,也迫使管理人员寻找一种有利于程序继承性、标准化、多人并行开发的管理方式。从长远的意义上来讲,RTOS的推广能够带来嵌入式软件工业更有效、更专业化的分工,减少社会重复劳动、提高劳动生产率。

5.RTOS的基本特征
(1)任务
任务(Task)是RTOS中最重要的操作对象,每个任务在RTOS的调用下由CPU分时执行。激活的或当前任务是CPU正在执行的任务,休眠的任务是在存储器中保留其执行的上下文背景、一旦切换为当前任务即可从上次执行的末尾继续执行的任务。任务的调度目前主要有时间分片式(TimeSlicing)、轮流查询式(Round-Robin)和优先抢占式(Preemptive)三种,不同的RTOS可能支持其中的一种或几种,其中优先抢占式对实时性的支持最好。
(2)任务切换
RTOS管理下的系统CPU和系统资源的时间是同时分配给不同任务的,这样看起来就象许多任务在同时执行,但实际上每个时刻只有一个任务在执行,也就是当前任务。任务的切换有两种原因。当一个任务正常地结束操作时,它就把CPU控制权交给RTOS,RTOS则检查任务队列中的所有任务,判断下面那个任务的优先级最高,需要先执行。另一种情况是在一个任务执行时,一个优先级更高的任务发生了中断,这时RTOS就将当前任务的上下文保存起来,切换到中断任务。RTOS经常性地整理任务队列,删除结束的任务,增加新的要执行任务,并将其按照优先级从大到小的顺序排列起来,这样可以合理地在各个任务之间分配系统资源。
(3)消息和邮箱
消息(Message)和邮箱(Mailbox)是RTOS中任务之间数据传递的载体和渠道,一个任务可以有多个邮箱。通过邮箱,各个任务之间可以异步地传递信息,没有占用CPU时间的查询和等待。当RTOS包含片上总线接口驱动功能时,各个单片机之间的通信也通过邮箱的方式来进行,用户并不需要了解更深的关于硬件的内容。
(4)旗语
旗语(Semaphore)相当于一种标志(Flag),通过预置,一个事件的发生可以改变旗语。一个任务可以通过监测旗语的变化来决定其行动,在监测旗语变化的时候不消耗CPU时间,旗语对任务的触发是由RTOS来完成的。通过使用旗语,一个任务在等待事件变化的时候就可以不必不断查询,而把CPU时间出让给其它任务。
(5)存储区分配
RTOS对系统存储区进行统一分配,分配的方式可以是动态的或静态的,每个任务在需要存储区时都要向RTOS内核申请。RTOS通过使用存储分配类核心对象管理数据存储器,在动态分配时能够防止存储区的零碎化。
(6)中断和资源管理
RTOS提供了一种通用的设计用于中断管理,有效率而灵活,这样可以实现最小的中断潜伏时间和最大的中断响应度。RTOS内核中的资源对象类则实现了对系统实体资源或虚拟资源的独占式访问,一个任务可以取得对资源的唯一访问权,其它任务在资源释放以前无法访问,这样可以避免资源冲突。设计完善的RTOS具有检查可能导致系统死锁的资源调用设计。

上面是RTOS的基本特征。根据产品的不同,它可能还包含许多其它功能。

6.你的处理器是不是需要一套实时多任务操作系统?
RTOS是目前嵌入式系统领域的热点之一,是流行的开发平台,但它毕竟对于许多用户来说还是昂贵的,还会大量改变用户习惯的开发方式,因此在引入RTOS以前对必要性进行考察还是明智的。你可以思考下面的几个问题:
(1)你的处理器控制的时间和方式和你预想的一样吗?
(2)你是否发现自己花费很多时间盘算怎样使一段代码在该执行的时候执行?
(3)你是否花费太多时间在中断子程序上,知道主程序不可能顺序地处理中断事件,便试图编出所有代码来处理中断事件?
(4)你是否发现自己在不断地测试标志或调用测试标志的子程序,来判断是否应当执行一段子程序?
如果你对上面问题的回答有一个以上是肯定的话,那么就是到了需要一套实时多任务操作系统将你从编程的琐碎中解脱出来的时候了。

8.目前有什么样的RTOS?
当你在电子杂志上寻找RTOS的时候,可能会发现世界上研制RTOS产品的公司多得令你无所适从;但是仔细阅读后会发现,它们的产品可能只覆盖几种处理器,而且是你所不熟悉的。目前产品比较全面的公司主要有美国的CMXCompany和EmbeddedSystemProducts(ESP),Inc.,它们对中国单片机工业流行的单片机,如8051,251,196/296,P51XA,68xxx等都有RTOS及其相关的接口库函数产品,提供源程序代码,没有每个产品的二进制版税。其中CMX公司的产品价格略低,较适合中国市场;而ESP公司的产品则有较丰富的库函数支持。


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)