嵌入式实时操作系统

嵌入式实时操作系统
嵌入式实时操作系统

嵌入式实时操作系统

嵌入式实时操作系统(Embedded Real-time Operation System,RTOS)。

1 嵌入式实时操作系统概念

当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统作出快速响应,并控制所有实时任务协调一致运行的嵌入式操作系统。

2 嵌入式实时操作系统特点

1)多任务;

2)有线程优先级

3)多种中断级别

3 嵌入式实时操作系统应用

在工业控制、军事设备、航空航天等领域对系统的响应时间有苛刻的要求,这就需要使用实时系统。

采用嵌入式实时操作系统(简称RTOS)能够支持多任务,使得程序开发更加容易,便于维护,同时能够提高系统的稳定性和可靠性。

4 实时操作系统的必要性:

首先,嵌入式实时操作系统提高了系统的可靠性。

其次,提高了开发效率,缩短了开发周期。

实时操作系统的优缺点:

在嵌入式实时操作系统环境下开发实时应用程序使程序的设计和扩展变得容易,不需要大的改动就可以增加新的功能。通过将应用程序分割成若干独立的任务模块,使应用程序的设计过程大为简化;而且对实时性要求苛刻的事件都得到了快速、可靠的处理。通过有效的系统服务,嵌入式实时操作系统使得系统资源得到更好的利用。但是,使用嵌入式实时操作系统还需要额外的ROM/RAM 开销,2~5% 的CPU 额外负荷,以及内核的费用。

5 实时系统与非实时系统的根本区别

实时系统与非实时系统的根本区别在于:实时系统具有与外部环境及时交互作用的能力。也就是说实时系统从外部获取信息以及系统得出结论要在很短的限制时间内完成。

它具有嵌入式软件共有的可裁剪、低资源占用、低功耗等特点;实时任务之间可能还会有一些复杂的关联和同步关系,如执行顺序限制、共享资源的互斥访问要求等。

实时操作系统所遵循的最重要的设计原则是:采用各种算法和策略,始终保证系统行为的可预测性(predictability)。可预测性是指在系统运行的任何时刻,在任何情况下,实时操作系统的资源调配策略都能为争夺资源(包括CPU、内存、网络带宽等)的多个实时任务合理地分配资源,使每个实时任务的实时性要求都能得到满足。与通用操作系统不同,实时操作系统注重的不是系统的平均表现,而是要求每个实时任务在最坏情况下都要满足其实时性要求,也就是说,实时操作系统注重的是个体表现。

分时操作系统的基本设计原则是:尽量缩短系统的平均响应时间并提高系统的吞吐率,在单位时间内为尽可能多的用户请求提供服务。由此可以看出,分时操作系统注重平均表现性能,不注重个体表现性能。

6 uC/OS II

uC/OS-II是一个简洁、易用的基于优先级的嵌入式抢占式多任务实时内核。

uC/OS II(Micro Control Operation System Two)是一个可以基于ROM运行的、可裁减的、抢占式、实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统(RTOS)。

uC/OS II最大程度上使用ANSI C语言进行开发,并且已经移植到近40多种处理器体系上,涵盖了从8位到64位各种CPU(包括DSP)。

主要特点有公开源代码,代码结构清晰、明了,注释详尽,组织有条理,可移植性好,可裁剪,可固化。内核属于抢占式,最多可以管理60个任务。

采用基于ARM9的S3C2410嵌入式微处理,可以使系统具备高性能的运算能力的同时便于与各种外设连接扩展,简化了硬件设计,维持小型化的同时降低了系统成本。uC/OS II作为一个源代码公开的操作系统,在具体应用中稳定可靠,并且支持uIPTCP/IP协议栈、ucGUI等,可扩展性强,功能强大。本系统采ARM9+uC/OS II开发设计,具有精度高、运行稳定、实时性好、抗干扰能力强、性价比高的特点,可以在各种工业场合中广泛应用,达到了设计的初衷μC/OS-II 作为一个嵌入式实时操作系统,自1992年以来,因其源代码的完全公开和优越性能,已为众多的爱好者和开发人员所了解并得到了广泛应用。

7 uC/OS II优缺点

具有执行效率高、占用空间小、实时性能优良和可扩展性强等特点。

公开源代码:

实时性强

uC/OS-II主要用于小CPU,Vxworks用于高性能CPU,低端的CPU虽然可以裁减使用,但已经没有意义了,就等于拿大炮打蚊子。

1、在统计趋势上,uC/OS是否会越来越广泛?

2、据说开发uC/OS的公司Micrium是个小公司,该公司的商业模式是否能确保其一直活下去并发展起来?

3、在工业控制方面,uc/OS对比vxworks有什么优缺点?

4、uc/OS是否有类似linux的开源社区?

5、总体开发维护支持成本,uC是否相对Vxworks有优势?

6.uC的kernel和其它功能模块(FS,TCPIP)的集成,是否简单方便,对性能是否有影响?

7.driver的获取是否容易?

1.在小芯片使用uC/OS-II肯定是一个趋势;

2.Micrium是个小公司,肯定能够活下去,因为购买版权的公司会越来越多,关键是便宜;

3.Vxworks当然优势更多,请咨询原厂更准确,应用的领域更广泛,很多高可信项目都使用了,但需要付更多银子;

4.uC/OS-II北航出版社有图书带光盘源代码,用于商业需要付费购买;

5.差不多!其前提是全购买正版,当然Vxworks还是要强一些,而对于我们公司来说差不多;

6.简约不简洁;

7.自己搞定。

uC/ OS-II的源代码可以免费获得,只对商业应用收取少量许可证费,可以大大降低开发成本。同时,由于源码公开,开发者遇到问题时可方便的通过工n t e r n e t进行交流,获得广泛的技术支持。但与商业实时操作系统

相比,在开发套件和技术支持方面还比较欠缺,软件包的功能还不是特别强大,有些驱动程序需要用户自己编写。

优先级设置

嵌入式操作系统支持多任务,每个任务都具有优先级,任务越重要,赋予的优先级应越高。

多任务调度机制

基于优先级抢占式调度:系统中每个任务都有一个优先级,内核总是将CPU 分配给处于就绪态的优先级最高的任务运行。

时间片轮转调度:让优先级相同的处于就绪状态的任务按时间片使用CPU,以防止同优先级的某一任务长时间独占CPU。

在一般情况下,嵌入式实时操作系统采用基于优先级抢占式调度与时间片轮转调度相结合的调度机制。

时间的可确定性

μC/OS-II内核是针对实时系统的要求设计实现的,只支持基于固定优先级抢占式调度;调度方法简单,可以满足较高的实时性要求。

任务及中断间的同步与通信机制

具有灵话的任务间同步与通信机制,都可以通过信号量、消息队列来实现同步与通信

内存管理

μC/OS-II把连续的大块内存按分区来管理,每个分区中都包含整数个大小相同的内存块,但不同分区之间内存的太小可以不同。用户动态分配内存时,只须选择一个适当的分区,按块来分配内存,释放时将该块放回到以前所属的分区,这样就消除了因多次动态分配和释放内存所引起的碎片问题。

μClinux的中断管理

μClinux操作系统将中断处理分为两部分:顶半处理和底半处理。在顶半处理中,必须关中断运行,且仅进行必要的、非常少、速度快的处理,其他处理交给底半处理;底半处理执行那些复杂、耗时的处理,而且接受中断。因为系统中存在有许多中断的底半处理,所以会引起系统中断处理的延时。

文件系统

μC/OS-II是面向中小型嵌入式系统的,即使包含全部功能,编译后内核也不到10 KB,所以系统本身并没有提供对文件系统的支持。但是μC/OS-II具有良好的扩展性能,如果需要也可自行加入文件系统的内容。μClinux继承了Linux 完善的文件系统性能,它支持ROMFS、NFS、ext2、MS-DOS、JFFS等文件系统。

对硬件的支持

μC/OS-II支持从8位到32位的CPU,由于本身内核就很小,经过裁剪后的代码最小可以分别为2 KB和10 KB,所需的最小数据RAM空间分别为4 KB 和10 KB。总的来说系统对硬件的要求比较低,比较经济。

系统移植

μC/OS-II的移植相对比较简单,只需要修改与处理器相关的代码就可以了。

结论

μC/OS-II是一个结构简单、功能完备和实时性很强的嵌入式操作系统内核,适合于广大的嵌入式系统开发人员和爱好者入门学习,以及高校教学和科研。μC /OSII很适合开发那些对系统要求不是很苛刻,且RAM和ROM有限的各种小型嵌入式系统设备。

8 实时操作系统的相关概念

(1)基本概念

代码临界段:指处理时不可分割的代码。一旦这部分代码开始执行则不允许中断打入;

资源:任何为任务所占用的实体;

共享资源:可以被一个以上任务使用的资源;

任务:也称作一个线程,是一个简单的程序。每个任务被赋予一定的优先级,有它自己的一套CPU寄存器和自己的栈空间。典型地,每个任务都是一个无限的循环,每个任务都处在以下五个状态下:休眠态,就绪态,运行态,挂起态,被中断态;

任务切换:将正在运行任务的当前状态(CPU寄存器中的全部内容)保存在任务自己的栈区,然后把下一个将要运行的任务的当前状态从该任务的栈中重新装入CPU的寄存器,并开始下一个任务的运行;

内核:负责管理各个任务,为每个任务分配CPU时间,并负责任务之间通讯。分为不可剥夺型内核于可剥夺型内核;

调度:内核的主要职责之一,决定轮到哪个任务运行。一般基于优先级调度法;

(2)关于优先级的问题

任务优先级:分为优先级不可改变的静态优先级和优先级可改变的动态优先级;

优先级反转:优先级反转问题是实时系统中出现最多的问题。共享资源的分配可导致优先级低的任务先运行,优先级高的任务后运行。解决的办法是使用“优先级继承”算法来临时改变任务优先级,以遏制优先级反转。

(3)互斥

虽然共享数据区简化了任务之间的信息交换,但是必须保证每个任务在处理共享共享数据时的排他性。使之满足互斥条件的一般方法有:关中断,使用测试并置位指令(TAS),禁止做任务切换,利用信号量。

因为采用实时操作系统的意义就在于能够及时处理各种突发的事件,即处理各种中断,因而衡量嵌入式实时操作系统的最主要、最具有代表性的性能指标参

数无疑应该是中断响应时间了。中断响应时间通常被定义为:

中断响应时间=中断延迟时间+保存CPU状态的时间+该内核的ISR进入函数的执行时间。

中断延迟时间=MAX(关中断的最长时间,最长指令时间) + 开始执行ISR的第一条指令的时间。

一、freeRTOS比uCOS II优胜的地方:

1。内核ROM和耗费RAM都比uCOS 小,特别是RAM。这在单片机里面是稀缺资源,uCOS至少要5K以上,而freeOS用2~3K也可以跑的很好。

2。freeRTOS 可以用协程(Co-routine),减少RAM消耗(共用STACK)。uCOS只能用任务(TASK,每个任务有一个独立的STACK)。

3。freeRTOS 可以有优先度一样的任务,这些任务是按时间片来轮流处理,uCOSII 每个任务都只有一个独一无二的优先级。因此,理论上讲,freeRTOS 可以管理超过64个任务,而uCOS只能管理64个。

4。freeRTOS 是在商业上免费应用。uCOS在商业上的应用是要付钱的。

二、freeRTOS 不如uCOS的地方:

1。比uSOS简单,任务间通讯freeRTOS只支持Queque,Semaphores,Mutex。uCOS除这些外,还支持Flag, MailBox.

2。uCOS的支持比freeRTOS 多。除操作系统外,freeRTOS只支持TCPIP,uCOS则有大量外延支持,比如FS,USB,GUI,CAN等的支持

3。uCOS可靠性更高,而且耐优化,freeRTOS 在我设置成中等优化的时候,就会出问题。

相关主题
相关文档
最新文档