相信了解嵌入式系统的人都知道,嵌入式系统是指操作系统和功能软件集成于计算机硬件系统之中。简单的说就是系统的应用软件与系统的硬件一体化,类似与BIOS的工作方式,具有软件代码小,高度自动化,响应速度快等特点。他与传统的普通单片机等处理器最大的不同就在于它特别适合于要求实时的和多任务的体系,下面我们就来介绍一下有关嵌入式实时多任务操作系统的有关知识。
1.实时多任务操作系统(Real Time multi-tasking Operation System, RTOS)
实时多任务操作系统(RTOS)是嵌入式应用软件的基础和开发平台,它是根据操作系统的工作特性而言的。实时是指物理进程的真实时间。实时操作系统是指具有实时性,能支持实时控制系统工作的操作系统。首要任务是调度一切可利用的资源完成实时控制任务,其次才着眼于提高计算机系统的使用效率,重要特点是要满足对时间的限制和要求。目前在中国大多数嵌入式软件开发还是基于处理器直接编写,没有采用商品化的RTOS,不能将系统软件和应用软件分开处理。RTOS是一段嵌入在目标代码中的软件,用户的其它应用程序都建立在RTOS之上。不但如此,RTOS还是一个可靠性和可信性很高的实时内核,将CPU时间、中断、I/O、定时器等资源都包装起来,留给用户一个标准的API,并根据各个任务的优先级,合理地在不同任务之间分配CPU时间。
RTOS是针对不同处理器优化设计的高效率实时多任务内核,优秀商品化的RTOS可以面对几十个系列的嵌入式处理器MPU、MCU、DSP、SOC等提供类同的API接口,这是RTOS基于设备独立的应用程序开发基础。因此基于RTOS上的C语言程序具有极大的可移植性。据专家测算,优秀RTOS上跨处理器平台的程序移植只需要修改1~5%的内容。在RTOS基础上可以编写出各种硬件驱动程序、专家库函数、行业库函数、产品库函数,和通用性的应用程序一起,可以作为产品销售,促进行业内的知识产权交流,因此RTOS又是一个软件开发平台。
RTOS是嵌入式系统的软件开发平台,RTOS最关键的部分是实时多任务内核,它的基本功能包括任务管理、定时器管理、存储器管理、资源管理、事件管理、系统管理、消息管理、队列管理、旗语管理等,这些管理功能是通过内核服务函数形式交给用户调用的,也就是RTOS的API。RTOS的引入,解决了嵌入式软件开发标准化的难题。随着嵌入式系统中软件比重不断上升、应用程序越来越大,对开发人员、应用程序接口、程序档案的组织管理成为一个大的课题。引入RTOS相当于引入了一种新的管理模式,对于开发单位和开发人员都是一个提高。
基于RTOS开发出的程序,具有较高的可移植性,实现90%以上设备独立,一些成熟的通用程序可以作为专家库函数产品推向社会。嵌入式软件的函数化、产品化能够促进行业交流以及社会分工专业化,减少重复劳动,提高知识创新的效率。
嵌入式工业的基础是以应用为中心的芯片设计和面向应用的软件开发。实时多任务操作系统(RTOS)进入嵌入式工业的意义不亚于历史上机械工业采用三视图的贡献,对嵌入式软件的标准化和加速知识创新是一个里程碑。
目前,商品化的RTOS可支持从8BIT的8051到32BIT的PowerPC及DSP等几十个系列的嵌入式处理器。提供高质量源代码RTOS的著名公司主要集中在美国。
2.实时多任务操作系统与分时多任务操作系统的区别
这两者有着明显的区别。具体的说,对于分时操作系统,软件的执行在时间上的要求,并不严格,时间上的错误,一般不会造成灾难性的后果。而对于实时操作系统,主要任务是对事件进行实时的处理,虽然事件可能在无法预知的时刻到达,但是软件上必须在事件发生时能够在严格的时限内作出响应(系统响应时间),即使是在尖峰负荷下,也应如此,系统时间响应的超时就意味着致命的失败。另外,实时操作系统的重要特点是具有系统的可确定性,即系统能对运行情况的最好和最坏等的情况能做出精确的估计。
实时操作系统中的重要概念:
1)系统响应时间(System response time )系统发出处理要求到系统给出应答信号的时间。
2)任务换道时间(Context-switching time)是任务之间切换而使用的时间。
3)中断延迟(Interrupt latency )是计算机接收到中断信号到操作系统作出响应,并完成换道转入中断服务程序的时间。
实时操作系统应具有如下的功能:
1)任务管理(多任务和基于优先级的任务调度)
2)任务间同步和通信(信号量和邮箱等)
3)存储器优化管理(含ROM的管理)
4)实时时钟服务
5)中断管理服务
实时操作系统的工作特性:
实时操作系统中的任务(Task)等同于分时操作系统中的进程(Process)的概念。系统中的任务有四种状态:运行(Executing),就绪(Ready),挂起(Suspended),冬眠(Dormant)。
运行:获得CPU控制权。
就绪:进入任务等待队列。通过调度转为运行状态。
挂起:任务发生阻塞,移出任务等待队列,等待系统实时事件的发生而唤醒。从而转为就绪或运行。
冬眠:任务完成或错误等原因被清除的任务。也可以认为是系统中不存在了的任务。系统中只能有一个任务在运行状态。各任务按级别通过时间片分别获得对CPU的访问权。