先服务方式的 RTOS 才是真正的实时操作系统,时间分片方式和协作方式的 RTOS 并不是真正的“实时”。
美国 CMX 公司的 RTOS 采用全优先服务方式的任务调度,可以使中断潜伏时间减到最小。
其 RTOS 的主要功能模块有调度和中断处理(为了优化用汇编编写),任务管理,事件管理,定时器管理,报文管理,循环队列管理,资源管理,固定存储块管理,规范的 UART 管理,自动掉电管理。
这些也是标准的 RTOS 所应具有的基本功能。
RTOS 也体现了一种新的系统设计思想和一个开放的
软件框架,工程师可以在不大量变动系统其它任务的情况下增加或去掉一个任务;一个项目开发的过程中,可以有多个工程师同时进行系统的软件开发,各个人之间只要制订好规程和协议即可,既缩短了开发时间,又降低了最终软件产品对于具体某个开发者个人的依赖性。
为 RTOS 设计的成熟和通用的任务可以以库函数的形式供其它人继续利用,和 C 语言的设计思想一致。
因此可以说 RTOS 是嵌入式软件的编写从“小生产方式”进入“大 生产方式”的必然产物。
在 RTOS 基础上可以很容易地实现各种通信协议库函数,CMX 针对目前单片机网络系统中广泛使用的 CAN 总线协议,开发了 CAN 总线协议接口库函数。
这些函数包括消息 接收,消息发送,初始化 CAN 控制器芯片,管理 CAN 控制器中断,管理节点地址和 CAN 标识,管理用于 CAN 信息包的缓冲存储区,通知一个任务消息已经收到等等。
3 μC/OS-II 系统剪裁移植与应用 实时多任务操作系统一般以
源代码形式供应用户,作为 Project 源程序的一部分参加编译和汇编,最终在用户代码中占有一部分。
例如 CMX 的 RTOS 在 80C51XA系统中采用大 模式编译增加代码量 3310 字节,最大中断潜伏时间在 30M 时钟下为2.9 微秒。
1.1.3 实时操作系统的特征 实时操作系统可进一步分为两种,一种称为“硬实时”,另一种则称为“软实时”。
“硬实时”操作系统对于所提交的每一项任务及其时间要求,或者作出承诺,或者立即拒绝,对于作出的承诺则保证其能够实现。
“软实时”操作系统只是根据以往的经验和对系统能力的分析和估计能完成的概率有多大来对提交的任务作出承诺。
目前,在“硬实时”方面的研究还不成熟,目前大多数的实时操作系统都属于“软实时”。
RTOS 的基本特征1任务 任务Task是 RTOS 中最重要的操作对象,每个任务在 RTOS 的调用下由 CPU分时执行。
激活的或当前任务是 CPU 正在执行的任务,休眠的任务是在存储器中保留其执行的上下文背景、一旦切换为当前任务即可从上次执行的末尾继续执行的任务。
任务的调度目前主要有时间分片式TimeSlicing、轮流查询式Round-Robin和优先抢占式Preemptive三种不同的 RTOS 可能支持其中的一种或几种,其中优先抢占式对实时性的支持最好。
2任务切换 RTOS 管理下的系统 CPU 和系统资源的时间是同时分配给不同任务的,这样看起来就象许多任务在同时执行,但实际上每个时刻只有一个任务在执行,也就是当前任务。
任务的切换有两种原因。
当一个任务正常地结束操作时,它就把 CPU控制权交给 RTOS,RTOS 则检查任务队列中的所有任务,判断下面那个任务的优先级最高,需要先执行。
另一种情况是在一个任务执行时,一个优先级更高的任务发生了中断,这时 RTOS 就将当前任务的上下文保存起来,切换到中断任务。
RTOS经常性地整理任务队列,删除结束的任务,增加新的要执行任务,并将其按照优先级从大到小的顺序排列起来,这样可以合理地在各个任务之间分配系统资源。
3消息和邮箱 消息Message和邮箱Mailbox是 RTOS 中任务之间数据传递的载体和渠道,一个任务可以有多个邮箱。
通过邮箱,各个任务之间可以异步地传递信息,没有占 4 μC/OS-II 系统剪裁移植与应用用 CPU 时间的
查询和等待。
当 RTOS 包含片上总线接口驱动功能时,各个单片机之间的通信也通过邮箱的方式来进行,用户并不需要了解更深的关于硬件的内容。
4旗语 旗语Semaphore相当于一种标志Flag,通过预置一个事件的发生可以改变旗语。
一个任务可以通过监测旗语的变化来决定其行动,在监测旗语变化的时候不消耗 CPU 时间,旗语对任务的触发是由 RTOS 来完成的。
通过使用旗语,一个任务在等待事件变化的时候就可以不必不断查询,而把 CPU 时间出让给其它任务。
5存储区分配 RTOS 对系统存储区进行统一分配,分配的方式可以是动态的或静态的,每个任务在需要存储区时都要向 RTOS 内核申请。
RTOS 通过使用存储分配类核心对象管理数据存储器,在动态分配时能够防止存储区的零碎化。
6中断和资源管理 RTOS 提供了一种通用的设计用于中断管理,有效率而灵活,这样可以实现最小的中断潜伏时间和最大的中断响应度。
RTOS 内核中的资源对象类则实现了对系统实体资源或虚拟资源的独占式访问,一个任务可以取得对资源的唯一访问权,其它任务在资源释放以前无法访问,这样可以避免资源冲突。
设计完善的 RTOS 具有检查可能导致