嵌入式实时多任务操作系统的特征介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式实时多任务操作系统的特征介绍
引言:适逢公司进行通用计算平台的硬件基础研究,在此硬件平台之上,必要引入通用的软件平台。
为此,操作系统无疑是最佳的选择。
在德国十二套软启动项目中,远程IO控制机的软件设计成功引入了实时多任务操作系统μC/OS—II, 本文结合作者的工作成果,针对μC/OS—II将嵌入式操作系统的基本特征和原理进行简单的描述,并对大家所熟知的实时特性概念进行简要的抛析。
嵌入式实时操作系统在国外在上世纪60年代便已发展,至今已有不下百种产品。
从在商业领域取得巨大成功的两个突出代表VxWorks和QNX;到开源并广泛传播的Linux;以及由知名公司所推出的WINCE等;再到由个人之力发展至今的μC/OS,每种操作系统皆有其自身的特点及所专长的应用领域,但同时作为嵌入式的实时多任务操作系统又有其共同的特征,以下将结合实际工作中所用到的μC/OS—II为大家进行简单的介绍。
首先,操作系统作为用户应用程序同系统硬件之间的接口,承担着系统全部软、硬件资源的分配、工作调度、控制协调并发活动的重任。
如图1所示为包含操作系统的软硬件体系结构。
图1
比较于传统的PC机操作系统,除具有任务调度、同步机制、中断处理、文件功能外,嵌入式实时操作系统还具有如下几个主要特点:
◆可裁减性,嵌入式系统开发所特有的一点便是具有有限的存储空间。
面向不同硬件资源的情况下,操作系统具有自身可裁减的特性,以适应系统的存储容量,以μC/OS—II为例,最小可将代码量裁减到2K+。
◆实时性,于军事及高端工业领域发展起来的嵌入式操作系统,系统所处运行环境极为复杂,要求极为苛刻。
对于外部的激励,操作系统能够及时的做出响应,来保证系统的可靠运行。
◆可移植性,操作系统作为通用型的软件平台,必要面对不同厂家、不同硬件架构的处理器平台。
因此为保证自身的可重用特性及兼容性的特点,操作系统多可进行移植,来适应不同处理器的硬件架构。
以μC/OS—II为例,在四款主流IP核PowerPC、ARM、MIPS和X86上皆可进行移植。
除此之外,嵌入式实时操作系统相比传统的PC机操作系统还具有更好的稳定性及较弱的交互性,同时在容错性方面也要明显优于PC机操作系统,这里不再鳌述。
μC/OS—II由加拿大的著名嵌入式系统专家Jean brosse在μC/OS的基础上进行大幅的升级和改进而成的,是一个源码公开、完整的、可移植、固化、裁减的占先式实时多任务内核。
由ANSI的C语言编写,包含小部分汇编代码,至今,从8位到64位,在超过40种不同的架构处理器上运行,同时通过了严格的测试,并且得到了美国航空管理局(Federal Aviation Administration)的认证,可以应用到飞行器上,其代码的安全性和可靠性已得到检验。
如下图图2所示,为μC/OS—II的文件结构及同硬件的关系。
图2
由上图便可以清晰的看到整个μC/OS—II操作系统的文件体系结构,以及
操作系统同所依赖的硬件之间的关系。
操作系统需要借用CPU一个内部定时器来为系统提供特定的周期中断以产生一个时钟节拍,这个时钟节拍可以看作是系
统心脏的脉动;μC/Probe为操作系统提供了强大的通信接口管理,便于用户在操作系统上开发各种通信功能;板级支持包帮助用户完成具体硬件的管理,包括各种驱动程序的编写和初始化工作;移植文件为操作系统面向不同CPU架构时所需要更改的文件部分,目前大多数的移植文件均在官网上有提供;与处理器无关的文件为操作系统内核文件,这些文件包含操作系统内部的变量、函数定义和调用,用户不可修改,当然依据具体需求可进行裁减;应用程序代码即为用户针对具体项目在操作系统平台下进行的代码开发,包含项目的全部变量和功能函数。
μC/OS—II为我们提供了如下图所示三个方面的管理:多任务管理、外围设备管理和内存管理。
图3
●嵌入式实时操作系统提供丰富的多任务管理函数,并且会提供良好的任务
调度机制,控制任务的启动、运行、暂停和结束等状态。
通常这些调度算法是满足实时性要求的,也就是能使任务运行时的每个动作会在一个严格要求的时间内执行完毕;
●内存管理是指负责动态内存的管理,当应用程序的某一部分需要使用内存时,可利用操作系统提供的API函数来获得内存空间,一旦使用完毕,可利用系统的内存释放函数来释放内存,以此实现内存的动态管理;
●作为完整的嵌入式应用系统,还需要多种外围设备支持,如键盘、显示装置、通信接口等,这些外围设备作为各个任务可利用的资源,操作系统必须对这些资源进行合理的调度和管理,以保证系统中各任务在执行过程中获得足够的资源。
实时性特征是嵌入式实时多任务操作系统的主要特征之一,也是我们弃传统
前后台程序而引入操作系统的首要原因。
实时性作为系统的主要性能指标是大家所熟知的,但同时在笔者的日常交流当中,发现大家对实时性概念的理解尚还存在误区,借此机会对实时性的概念进行简要的分析,希望能对大家有所启发和帮助。
“实”在这里的含义是计算系统在环境事件变化时,系统根据环境的变化而做出的反映.这种反映要及时地根据外界的变化而变化,而不是尽可能的快。
所以实时的思想应更多的体现为及时而绝非简单理解为尽快。
在整个系统运行的过程中,要并发的执行多个任务,用任务执行快慢作为评估系统性能的指标是不科学的,每个任务均在其预先期望的时间限内完成或及时的做出响应,我们便认为系统具有很好的实时性或满足了实时性要求。
以下将以在实际工作中所遇到的问题来说明操作系统如何确保的实时性。
案例描述:
现有主机A和目标机B,彼此之间通过CAN总线进行数据传输,在某段时间段内,主机A以每隔T时间的时间间隔向目标机B发送数据包D1、D2、D3、D4,同时目标机B根据接收到的数据进行相应的数据处理,其所花费的时间分别为0.3T、2.4T、0.6T、0.7T,这里将数据包在总线上传输的时间忽略不记,或者相对T时间很小,如下图图4所示:
图4
方案一
此方法为未使用操作系统的解决办法,既传统的前后台程序方法,也是我们在开始编制程序时所采用的方法。
在目标机B中以事件触发的方式来响应主机A 发送的数据包,编制目标机B的CAN通信中断服务程序,在中断服务程序中进行数据包的处理。
我们不难发现,对数据包D1可以正确的接收并处理,对数据包D2可以接收,但处理时间过长,在数据包D3到来时,程序仍停留在对D2的中断程序处理当中,只有当数据包D4发出0.4T时间之后,系统退出对数据
包D2的中断服务程序,来继续接收数据包D4,这时目标机B已将主机A发出来的数据包D3丢失。
评估:目标机B未能对主机发送出来的数据进行实时处理,具有很差的系统实时性。
方案二
此方法同样未使用操作系统,是在方案一的基础上进行改进。
这里我们对处理时间过长的数据包做如下处理,既接收到数据包D2后,将取消在中断中对其的处理。
将数据包D2保存到内存当中,即刻便退出中断服务程序,来准备接收D3。
待系统空闲时或者说无中断生成的时候,利用前台轮询程序来检查是否有数据包D2接收到,如果接收到,对D2进行处理。
否则将在系统空闲时间不断进行轮询检查。
评价:此方案可以完整的接收到主机发送来的数据报文,满足系统实时性的要求,但尚还存在不足,既系统何时对数据包D2的处理是不确定的,非受控状态。
同时反复判断数据包D2的到来,消耗了系统资源,降低了CPU的有效利用率。
方案三
此方法为在操作系统环境下进行开发的解决方案,针对处理接收到的数据包建立相应的任务,同时在中断服务程序中对接收到的数据包只进行保存(将中断中的代码量尽量减小),并在退出中断之前发送信号量至待处理数据包的任务,将其置为就绪态,待退出中断程序后,系统任务调度函数会根据当前就绪态任务列表中的任务优先级来依次执行。
具体的程序示例说明如下:
图5
评价:目标机B完整的接收到主机A发来的所有数据包,并会依据任务的优先级适时的执行处理任务,很好的满足了系统实时性的要求,同时对数据包的处理未采用轮询方式,有效的利用了CPU资源,提高了系统资源的有效利用率。
图6为此次远程IO控制机中各任务在操作系统下的运行状态图,附图与此,供大家参考。
300个Tick
远程IO控制机中系统下任务运行状态图
图6
嵌入式操作系统种类较多,但基本原理相同,本文结合作者的工作心得将操作系统的主要特征进行了简要的整理,但限于篇幅,也难于尽述。
希望以上内容能为操作系统在公司的引入和推广提供参考信息,为日后构建通用的软件平台奠定良好的开端。