本文介绍了选择RTOS的一些标准。 在嵌入式系统的前期设计过程中,你必须决定所采用的嵌入式操作系统的类型。这是一个很重要的决定,因为这会影响到工程后期的发布以及软件的维护。本文中我将概括四种通用体系和一些值得考虑的观点。 没有标准的操作系统 很多嵌入式操作系统都是非标准的操作系统。对于针对比较狭窄领域,尤其是使用带有非常有限资源的微控制器来说,这是一个很正常的现象。操作系统中最基本的操作是建立一个带有能够处理关键实时事件的中断服务程序(ISR)的简单后台循环代码,过程非常简单,但却是相当出色。 然而,当项目增大,很多问题就随之产生。后台循环所需要的响应时间取决于循环次数最多所用的时间。当循环次数增多,所需要的时间就会增多,可预测的方面就减少。此时有用的方法就是将这些后台循环分成很多小部分,但这可能导致产生更复杂的系统而难于调试和维护。如果系统中有多个开发人员,这一情况会变成更加恶化。 没有优先级别的操作系统 一个简单的、没有优先级别的操作系统可以在一个大型后台循环中增添一些规则。这一方法对于中等大小的工程最为合适。 一个没有优先级别的操作系统可以将程序中的后台工作转化为可以预先处理的工作,而不需要将原来的程序分割成多个块。一个不存在优先级别的系统一般相对比较很容易的执行、调试,并且,在设计过程中不存在很多如资源共享的复杂操作。 这一系统的主要不足之处是开发人员必须时刻保护决定将CPU转交给其他任务的时间。如果转交时间延迟,即使只有一次,也会对整个操作系统的响应导致崩溃。 ] 具备优先级别的操作系统 一个完整的具备优先级别的操作系统可以处理包含多个相互竞争的任务和多个软件开发者。具备优先级别的操作系统在外部事件(比如中断,时间等)和操作系统调用之间转换。
任务根据它们之间相对的优先级别和分配的时间周期进行安排,这就可以让你从决定转换任务的时间之中解放出来,同时,也减少了任务之间的相互冲突。 这一特性带来了很多外在的复杂性。在优先级别的系统中的任务转换会使调试带来更多的困难,而且需要任务之间的相互通讯的外部机制。 然而,这一外部机制带来了新的问题,比如任务之间的死锁冒险。程序员必须学会使用新的技术和规则来处理这些问题,否则将会导致很多臭虫和不可靠的代码。 更改的桌面型操作系统 更改的桌面型操作系统,比如Windows,Linux,或者DOS,都是一些流行的嵌入式装置,特别是基于用户界面的系统。这些操作系统非常能吸收人,因为它们功能特别完整,并且提供了开发人员一个熟悉的开发环境。 然而,这些系统却通常会出现资源危机,运行的控制器的性能也非常受限制,从而不能满足执行特定环境下的实时性能限制。 嵌入式操作系统的特定与标准的桌面型环境有很多不相同的地方,所以开发一个嵌入式产品并不是简单地遵循开发一个标准的桌面程序的方法那么的直接。 -------------------------------------------------------------------------------- 本文作者David Brenan是一名具有15年以上工作经验的独立嵌入式系统开发人员。他的作品包括设计过获奖的专业数字音频产品。
|