目前嵌入式应用领域的一个发展倾向是采用实时多任务操作系统(Real Time Operati on System,RTOS)。RTOS的应用是和前面所述的应用复杂化直接相关的。 过去一个单片 机应用程序所控制的外设和履行的任务不多,采取一个主循环和几个 顺序调用的子程序模块即可满足要求。目前单片机芯片本身的性能大幅度提高, 可以适应应用复杂化这一要求,问题在于软件上。随着应用的复杂化,一个嵌入式 控制器系统可能要同时控制/监视很多外设,要求有实时响应,有很多处理任务, 各个任务之间有多种信息传递,如果仍采用原来的程序设计方法存在两个问题。 一是中断可能得不到及时响应,处理时间过长,这对于一些控制场合是不允许的, 对于网络通信方面则会降低系统整体的信息流量。二是系统任务多,要考虑的各种 可能也多,各种资源如调度不当就会发生死锁,降低软件可靠性,程序编写任务量 成指数增加。
实时操作系统是一段在嵌入式系统启动后首先执行的背景程序,用户的应用 程序是运行于RTOS之上的各个任务,RTOS根据各个任务的要求,进行资源(包括存储 器、外设等)管理、消息管理、任务调度、异常处理等工作。在RTOS支持的系统中, 每个任务均有一个优先级,RTOS根据各个任务的优先级,动态地切换各个任务, 保证对实时性的要求。 工程师在编写程序时,可以分别编写各个任务,不必同时 将所有任务运行的各种可能情况记在心中,大大减小了程序编写的工作量,而且 减小了出错的可能,保证最终程序具有高可靠性。
实时多任务操作系统,以分时方式运行多个任务,看上去好象是多个任务 “同时”运行。任务之间的切换应当以优先级为根据,只有优先服务方式的RTOS才 是真正的实时操作系统,时间分片方式和协作方式的RTOS并不是真正的“实时”。 美国CMX公司的RTOS采用全优先服务方式的任务调度,可以使中断潜伏时间减到最 小。其RTOS的主要功能模块有调度和中断处理(为了优化用汇编编写),任务管理, 事件管理,定时器管理,报文管理,循环队列管理,资源管理,固定存储块管理, 规范的UART管理,自动掉电管理。这些也是标准的RTOS所应具有的基本功能。 RTOS也体现了一种新的系统设计思想和一个开放的软件框架,工程师可以在不大量 变动系统其它任务的情况下增加或去掉一个任务;一个项目开发的过程中,可以有 多个工程师同时进行系统的软件开发,各个人之间只要制订好规程和协议即可,既 缩短了开发时间,又降低了最终软件产品对于具体某个开发者个人的依赖性。为 RTOS设计的成熟和通用的任务可以以库函数的形式供其它人继续利用,和C语言的 设计思想一致。因此可以说RTOS 是嵌入式软件的编写从“小生产方式”进入“大 生产方式”的必然产物。
在RTOS基础上可以很容易地实现各种通信协议库函数,CMX针对目前单片 机网络系统中广泛使用的CAN总线协议,开发了CAN总线协议接口库函数。这些函 数包括消息 接收,消息发送,初始化CAN控制器芯片,管理CAN控制器中断,管理 节点地址和CAN标识,管理用于CAN信息包的缓冲存储区,通知一个任务消息已经 收到等等。
实时多任务操作系统一般以源代码形式供应用户,作为Project源程序的 一部分参加编译和汇编,最终在用户代码中占有一部分。例如CMX的RTOS在80C51XA 系统中采用大 模式编译增加代码量3310字节,最大中断潜伏时间在30M时钟下为2.9 微秒。 |