嵌入式实时操作系统

实时系统是指那些正确性不仅取决于计算的逻辑结果,也取决于产生结果所花费的时间的系统。(from IEEE)
实时系统运算能力具有及时与正确的双重特征。本书给出的定义:在控制系统中,微控制器控制功能的执行需要满足和被控对象基于时间交互的要求。
实时系统分为:
硬实时系统:要求必须在给定的时间里完成相应的任务。
软实时系统
不要求在指定的时间里完成任务,只要求系统以最快的速度执行,运行时间超时是可以容忍的。

特别指出
(1)实时有多快?
实时系统的正式定义只要求系统的响应“足够快”
只要我们希望,任何系统都是实时的
实际使用中的嵌入式实时系统,时限与微处理器体系有关,一般为微妙级。
(2)快并不总是意味着更好
在实时系统中,可预测性比速度更重要
算法选择:避免使用那些在大多数情况下速度很快、但在某些条件下速度又会慢下来的算法;多采用虽然慢一些但是更有可预测性的算法。
(1)实时性需求
为了准确合理地描述任务的时间要求,必须明确区分时间点(瞬时)和时间周期。
在一个实时系统中,任务激活点就是任务触发或使能瞬时点;
任务最后期限点就是任务执行结束那个时间点;
响应时间是激活点和任务执行结束这一段时间;
给定任务最大允许响应时间也称为相对期限,任务期限也称为绝对期限,在时间线上可以通过激活点和相对期限来计算出绝对期限;
给定任务相连两个激活点的时间间隔称为激活周期,两任务执行时间间隔称为执行周期。

(2)实时需求分类
任务限制条件明确了任务需要在指定时间窗口内执行,称为实时需求。可分为:
硬实时需求:要求任务必须在指定的时间间隔内完成
软实时需求:没有在指定的时间间隔内必须要完成的要求,而仅仅是希望任务尽快完成,任务完成得越晚,对系统整体功能实现造成的风险越大

(3)嵌入式实时操作系统
实时多任务操作系统(Real-Time Multi-task Operating System)是嵌入式应用软件的基础和开发平台。RTOS是一段嵌入在目标代码中的程序,系统复位后首先执行,相当于用户的主程序,用户的其他应用程序都建立在RTOS之上。RTOS还是一个标准的内核,将CPU时间、中断、I/O、定时器等资源都包装起来,留给用户一个标准的API,并根据各个任务的优先级,合理地在不同任务之间分配CPU时间。基于RTOS上的C语言程序具有极大的可移植性,一些成熟的通用程序可以作为专家库函数产品推向社会。

实时操作系统的优势
简化应用程序的设计,修改和扩展
控制系统的实时性得到保证
充分利用系统资源,提高系统整体性能和可靠性

使用实时系统的代价
操作系统(内核)的价格
额外的ROM/RAM开销
2%~4%的CPU额外载荷

嵌入式应用中使用实时系统的意义
保证实时性,提高效率,缩短开发周期;
使嵌入式系统工程师可较少考虑硬件层面,专注于系统应用层面;

(4)嵌入式实时操作系统的特点
实时操作系统一般具有以下特点:

实时操作系统的内核必须非常小(微内核设计);

操作系统内核必须可重入,因为不可重入的内核必然带来慢速的

中断响应和不可预料的操作时间;

系统能够快速地进行任务切换,保证任务抢先和deadline的完成;

尽量减少禁止中断的时间;

提供固定或者可变的内存管理机制;

提供了一个能够满足应用要求的实时时钟;

必须提供合适的进程任务调度方法;

应该允许应用任务自己来修改内核。

(1)任务优先级
每个任务都有其优先级,任务越重要赋予的优先级越高
静态优先级:应用程序在执行过程中各个任务的优先级不变, 诸任务以及它们的时间约束在编译时是已知的。
动态优先级:执行过程中任务的优先级是可以改变的。
优先级分配原则:
单调执行率调度法RMS(Rate Monotonic Scheduling)
这种方法中优先级是基于任务执行的次数来分配的,执行频率越
高,任务的优先级越高。
如果有N个任务,其执行时间分别为e1 , e2…eN 执行周期分别为
P1, P2… Pn如果满足

则这N个任务是RMS算法可以调度的
(2)死锁
两个任务无限期地相互等待对方控制着的资源。
设任务L1正在独享资源R1,任务L2正在独享R2,而此时L1又要独享R2,同样的L2又要独享R1,这就出现了所谓的死锁现象。

大多数嵌入式内核允许用户在申请信号量时定义等待超时,以此来化解死锁。

先得到全部需要的资源再做下一步的工作;用同样顺序申请多个资源;释放资源时使用相反顺序。

(3)时钟节拍
时钟节拍是特定的周期性中断。这个中断可以看作是系统心脏的脉动。中断之间的时间间隔取决于不同应用,一般在10ms到200ms之间。
这个中断使得内核可以将任务延迟若干个时钟节拍,当任务等待事件发生时,它可以提供系统等待超时的依据。时钟节拍越快,系统的额外开销越大。

(4)中断
中断是一种硬件机制,用于通知CPU有个异步事件发生了。中断一旦被识别,CPU保存部分(或全部)上下文即部分或全部寄存器的值,跳转到专门的子程序,称为中断服务子程序(ISR)。中断服务子程序做事件处理,处理完成后,程序回到:
1)对非占先式内核而言,程序回到被中断了的任务;
2)对占先式内核而言,让进入就绪态的优先级最高的任务开始运行。
中断是一种运行机制,可分为硬件中断和软件中断。

(4)中断
在实时内核中对中断处理的好坏用以下三个时间指标来评价:
中断延迟时间、中断响应时间、中断恢复时间
中断延迟时间 = 关中断的最长时间 + 中断服务例程开始执行时间
中断响应时间 = 中断延迟时间 + 保存CPU内部寄存器的时间+内核的进入中断服务函数的执行时间
中断恢复时间 = 判定是否有优先级更高的任务进入就绪态的时间 + 恢复此优先级更高任务的CPU内部寄存器的时间+执行中断返回指令的时间
(5)动态实时调度算法
实时系统的任务调度算法主要有以下三种:
速率单调算法
最早截止时间优先算法
最小松弛时间优先算法
①速率单调算法
经典的是事件发生率单调算法。该算法事先为每个任务分配一个与事件发生概率成正比的优先级,调度程序总是调度优先级最高的就绪任务,必要时将剥夺当前任务的CPU使用权,让高优先级的
任务先运行。

(5)动态实时调度算法
②最早截止时间优先算法当检测到一个事件时,对应的处理进程任务就加入就绪进程表中,该表以截止时间排序,调度程序总是使表中最早截止时间的那个进程任务运行。
③最小松弛时间优先算法
也称为最小裕度法。操作系统内核首先计算各个任务的富裕度。如果一个任务需要运行200ms,而它必须在250ms内完成,则其裕度为50ms。在此算法中,操作系统选择裕度最小的任务,使其占用处理器。

几种典型嵌入式实时操作系统
(1)VxWorks
VxWorks是美国Wind River公司的产品,是目前嵌入式系统领域中应用很广泛,市场占有率比较高的嵌入式操作系统。VxWorks实时操作系统由400多个相对独立、短小精悍的目标模块组成,用户可根据要求选择适当的模块来裁剪和配置系统;提供基于优先级的任务调度、任务间同步与通信、中断处理、定时器和内存管理等功能,内建符合可移植操作系统接口(Portable Operating Interface of Unix,POSIX)规范的内存管理以及多处理器控制程序;并且具有简明易懂的用户接口,其内核甚至可以微缩到8KB。

(3)uClinux
uClinux是一种优秀的嵌入式Linux版本,其全称为Micro-Control Linux,从字面意思看是指微控制Linux。同标准的Linux相比,uClinux的内核非常小,但是它仍然继承了Linux操作系统的主要特性,包括良好的稳定性和移植性、强大的网络功能、出色的文件系统支持、标准丰富的API,以及TCP/IP网络协议等。因为没有MMU内存管理单元,所以其多任务的实现需要一定技巧。

(4)eCOS
eCOS(embedded Configurable Operating System),即嵌入式可配置操作系统。它是一个源代码开放的可配置、可移植、面向深度嵌入式应用的实时操作系统。其最大特点是配置灵活,采用模块化设计,核心部分由不同的组件构成,包括内核、C语言库和底层运行包等。每个组件可提供大量的配置选项(实时内核也可作为可选配置),使用eCOS提供的配置工具可以很方便地配置,并通过不同的配置使得eCOS能够满足不同的嵌入式应用要求。

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值