实时嵌入式系统
实时操作系统(RTOS)设计成提供一个对真实世界的事件的及时响应(timely response)。出现在真实世界中的事件可能有一个时间限制(deadline),在此期限之前,实时/嵌入式系统必须确保在有限时间内对此事件做出相应的响应。根据相应事件的时间限制,嵌入式实时操作系统可以分为两类:
1、硬实时嵌入式系统
此类实时系统必须保证在一定的时间里,对一定的外部事件做出相应的响应,如果在一定时间里没有能够做出相应的响应,就会带来灾难性的后果,也即是说,此类系统对于时间的相应快慢有非常严格的要求,比如:电力监控系统等。
2、软实时嵌入式系统
此类实时系统保证在一定的时间里,对一定的外部事件做出相应的响应,但是如果在一定时间里没有能够做出相应的响应,不会带来灾难性的后果,只是给用户带来一些不快乐的体验,比如:用户界面的显示。
不同的系统,有不同实现方式,对于硬实时嵌入式系统,主要注重与实时性和可靠性,一般没有文件系统,虚拟内存管理等,主要用于实时监控等,典型的有:VxWorks,pSOS,uCOS-II等。软实时嵌入式系统注重实时性,也注重实用性,主要用于消费电子等,典型的有:嵌入式Linux。
开源实时嵌入式系统:
实时嵌入式操作系统在现在应用越来越多,其中大部分是商业的嵌入式操作系统,这些系统提高了丰富的开发工具和稳定的系统,很大的推动了嵌入式系统地发展,但是由于商业性,使我们很少有机会了解嵌入式操作系统的实现内幕。随着开源软件的兴起,使得我们有机会了解嵌入式操作系统的内部实现成为可能。
由于多年的嵌入式开发,对于嵌入式操作系统特别的感兴趣,趁春节的时间,想读读开源的嵌入式操作系统源码,大体比较一下嵌入式操作系统的具体实现。
对于开源的嵌入式操作系统,现在比较流行的主要有:嵌入式Linux,uCOS-II, eCOS,FreeRTOS等,这里主要想以嵌入式Linux,uCOS-II为例,对嵌入式操作系统的一些基本概念及其实现方式进行一些比较。之所以选择这两操作系统,因为:
1、嵌入式Linux是现在用得最多的软实时嵌入式操作系统,而且也是最著名的开源软件之一
2、uCOS-II是一用得较多的硬实时嵌入式操作系统,尽管商业应用需要Licence,对于科研等可以免费使用,而且许多爱好者已经把它移植到了各种硬件平台。
3、尽管硬实时嵌入式操作系统和软实时嵌入式操作系统有很大的区别,但是可以通过对他们的比较,使我们更容易了解实时嵌入式操作系统的基本概念和组成要素。
实时多任务嵌入式系统基本概念:
对于嵌入式系统,不像通用的计算机,提供通用的软硬件平台,而是对于特定的需求定制的系统,一般要求便携化,资源少,利用比较少的资源配置来实现特定的功能。如何在较小尺寸,较少的资源情况下,快速响应外部多种特定的事件,成为嵌入式系统的主要需求。 这就要求嵌入式系统要有以下的模块:
1、中断处理
在没有嵌入式系统之前,对于一般的工控,都是用前后台机制实现的,中断是整个系统的推动力。在嵌入式系统相中,中断处理也是响应外部事件的主要途径。
2、时间管理
对于实时操作系统来说,时间管理是系统的核心,整个系统就是由一定间隔的时钟中断驱动的。在一般的实时操作系统中,主要有两种时间管理:OS定时器和RTC定时器。
3、资源管理与资源共享
由于有限的资源,在嵌入式系统中,资源的管理也非常的重要,CPU,IO,内存等是系统基本的资源,如何有效的应用和管理是一个很大的话题。同时如何共享,如何提供任务间资源的互斥,也是一稳定系统必不可缺的条件。
4、多任务
在嵌入式系统中,任务也可以叫进程,对于多任务系统,一般有多个任务同时存在于系统中,任务在嵌入式系统中有各种各样的状态,比如:运行态,IDLE态等。
5、任务的实时调度与切换
对于多任务的管理及其实时调度,决定了此系统的主要特征。任务的调度与如何切换,也是嵌入式多任务系统的一个基本问题。
6、进程间(任务间)通讯
对于不同任务间的通讯,在不同的系统中有不同的实现,大体与POSIX的IPC 相似。但在硬实时嵌入式系统中,事件和消息用得较多。 对于LINUX系统,还有虚拟内存管理和文件系统管理,在硬实时嵌入式系统中,由于关注点不同,这方面的应用不多。