1.4 嵌入式系统的组成架构
嵌入式系统通常由嵌入式处理器、嵌入式操作系统、应用软件和外围设备等几大部分组成,如图1-10所示。
图1-10 嵌入式系统组成架构
1.嵌入式处理器
嵌入式处理器是嵌入式系统的核心,是控制、辅助系统运行的硬件单元。国际上公认的通用嵌入式处理器有三大类:嵌入式微控制器(Microcontroller Unit,MCU)、嵌入式DSP(Digital Signal Processor,DSP)和嵌入式微处理器(Microprocessor Unit,MPU)。曾有人做了一个生动的比喻,把处理器比做汽车:DSP是跑车,追求的是速度;MPU是轿车,追求的是经济性与速度的折中;MCU是满足特殊用途的车。
2.外围设备
嵌入式系统的输入设备一般包括触摸屏、键盘、鼠标、语音识别、虚拟键盘等,输出设备一般包括液晶显示和语音输出等。
3.嵌入式操作系统
嵌入式操作系统并不是一个新生的事物,从20世纪80年代起,国际上就有一些IT组织、公司开始进行商用嵌入式操作系统和专用操作系统的研发,这其中涌现了一些著名的嵌入式操作系统。
(1)Linux
Linux是和UNIX相似、以核心为基础、完全内存保护、多任务多进程的操作系统。它支持广泛的计算机硬件,包括x86、Alpha、Sparc、MIPS、PPC、ARM等现有的大部分处理器架构。程序源码全部公开,任何人可以修改并在GNU通用公共许可证(General Public License,GPL)下发行,这样,开发人员可以对操作系统进行定制,再也不必担心Microsoft Windows操作系统中“后门”的威胁。同时由于有GPL的控制,大家开发的东西大都相互兼容,不会走向分裂之路。Linux用户遇到问题时可以通过Internet向网上成千上万的Linux开发者请教,即使最困难的问题也有办法解决。Linux带有UNIX用户熟悉的、完善的开发工具,几乎所有UNIX系统的应用软件都已移植到了Linux上。Linux还提供了强大的网络功能,有多种可选择窗口管理器(X-Windows),其强大的语言编译器gcc、g++等也可以很容易得到,不但成熟完善而且使用方便。
(2)Windows CE
Microsoft Windows CE是从整体上为有限资源的平台设计的多线程、完整优先权、多任务的操作系统。模块化设计允许它对从掌上电脑到专用工业控制器的电子设备进行定制。操作系统的基本内核需要至少200KB的ROM。
(3)VxWorks
VxWorks是美国WindRiver公司推出的一个硬实时操作系统。它的强实时性决定了其主要应用于航空航天、武器装备以及对实时性要求较高的通信设备上。该公司于1981年成立,1984年推出了它的第一个版本VxWorks 1.0.1,在2010年推出了它的最新版本VxWorks 6.8。VxWorks是目前嵌入式强实时系统领域中使用最广泛、市场占有率最高的系统。它支持多种处理器,如x86、i960、Sun Sparc、Motorola MC68xxx、MIPS RX000、Power PC等。在VxWorks 6.8中增强了对多核处理器的支持,包括Intel Core i7处理器、ARM MPCore和Cortex-A9处理器、Freescale QorIQ P2020处理器、Cavium 54xx/55xx/56xx/57xx/58xx系列处理器和RMI XLR/XLS系列处理器等。大多数的VxWorks API是专有的,采用GNU编译和调试。VxWorks应用在跟踪雷达系统中的例子如图1-11所示。
图1-11 跟踪雷达系统组成
(4)pSOS
ISI公司已经被WindRiver公司兼并,现在pSOS属于WindRiver公司的产品,从VxWorks5.5开始,已将pSOS的主要特点融入到VxWorks中。这个系统是一个模块化、高性能的实时操作系统,专为嵌入式微处理器设计,提供一个完全多任务环境,在定制的或商业化的硬件上提供高性能和高可靠性。可以由开发者根据操作系统的功能和内存需求定制成每一个应用所需的系统。开发者可以利用它来实现从简单的单个独立设备到复杂的、网络化的多处理器系统。
(5)QNX
QNX是一个实时的、可扩充的操作系统,它部分遵循POSIX相关标准,如POSIX.1b实时扩展。它提供了一个很小的微内核以及一些可选的配合进程,其内核仅提供4种服务:进程调度、进程间通信、底层网络通信和中断处理,进程在独立的地址空间运行。所有其他OS服务,都实现为协作的用户进程,因此QNX内核非常小巧(QNX4.x大约为12KB),而且运行速度极快。这个灵活的结构可以使用户根据实际的需求,将系统配置成微小的嵌入式操作系统或者包括几百个处理器的超级虚拟机操作系统。
小资料
QNX:位于加拿大首府渥太华的QNX软件系统有限公司(简称为QSSL)成立于1980年,是创新主导型公司。在20多年的时间里,QNX公司与时俱进,不断推出代表时代技术水平的实时操作系统,包括QNX2、QNX4和当前的QNX6,是当之无愧的行业领袖。QNX实时操作系统还是一个开放的系统,其应用程序接口完全符合POSIX标准。Linux/UNIX程序能够方便地移植到QNX系统上来,极大地扩展了QNX系统的可用资源。QNX开放性还表现在网络连接性上。QNX不仅有QNX机器之间专用网络,还支持与异型机器之间网络通信的协议,如TCP/IP等各种协议。
QNX有一个非常华丽的图形界面,并且号称运行速度比Windows或Linux更快。如果您是一位有经验的Linux用户,那么您很快就能上手QNX,虽然它和Linux有很大的区别。QNX RTP使用的命令和操作与Linux的许多“shell”命令是兼容的。更另人满意的是QNX的文件分级目录(组织、文件名和目录)和Linux几乎是一样的。可以说QNX RTP和旧的Linux是十分相像的。这对许多喜欢Linux、对Linux有一定实际操作经验的用户来说无疑是一个福音。
QNX和Linux最大的不同就是QNX的图形用户界面设计得十分漂亮。尽管Linux使用的是X-Windows系统,但是和QNX的称为“Photon”的图形用户界面相比,还是QNX略胜一筹。
(6)Palm OS
3COM公司的Palm OS在PDA市场上占有很大的市场份额,它有开放的操作系统应用程序接口(API),开发商可以根据需要自行开发所需要的应用程序。
(7)OS-9
Microwave的OS-9是为微处理器的关键实时任务而设计的操作系统,广泛应用于高科技产品中,包括消费电子产品、工业自动化、无线通信产品、医疗仪器、数字电视/多媒体设备。它提供了很好的安全性和容错性。与其他的嵌入式操作系统相比,它的灵活性和可升级性显得非常突出。
(8)LynxOS
Lynx Real-time Systems的LynxOS是一个分布式、嵌入式、可规模扩展的实时操作系统,它遵循POSIX.1a、POSIX.1b和POSIX.1c标准。LynxOS支持线程概念,提供256个全局用户线程优先级,同时也提供一些传统的、非实时系统的服务特征,包括基于调用需求的虚拟内存,一个基于Motif的用户图形界面,与工业标准兼容的网络系统以及应用开发工具。
(9)ITRON
TRON系列目前包括面向嵌入式系统的ITRON、面向Java实现的JTRON、用于较大型系统(如PC和PDA)的BTRON,以及针对通信系统的CTRON。
ITRON(Industrial TRON)是一种源码开放的工业实时嵌入式操作系统,适合在微处理器中运行。T-Kernel是TRON的最新版本,具备增强的网络功能。T-Kernel与ITRON的基本架构完全相同,但通过升级增强了处理器对网络环境的处理。最终,所有的嵌入式微处理器都会具备网络接入功能。例如,电视机的遥控器可以利用装备了TRON操作系统的微控制器连接到网络,这样就能够像控制电视机开关那样控制其他设备的操作。
小资料
TRON:日本的TRON(The Real-time Operating system Nucleus,实时操作系统内核)工程始于1984年,是由日本东京大学坂村健教授倡导的全新的计算机体系,旨在构筑“计算无处不在”的理想社会环境。据称这一系统已经安装到了全球近40亿台家用电子产品中,远远超过Windows的普及程度(Windows不过安装到了1.5亿台计算机上)。尽管在个人电脑领域知名度几乎为零,但ITRON现在却占据了全球实时嵌入式操作系统市场上大约70%的份额。目前,日本出售的imode电话就采用了TRON的技术。在2003年年底,微软也加入坂村健教授发起的T-Engine论坛,为未来“网络无处不在的社会(Ubiquitous Network Society)”共同努力。TRON能够得到大量应用,一方面因为它是一个真正意义上的实时操作系统(其实时响应速度比普通PC快上千倍),另一方面就是因为它的开放性。它提供了一种规范,有一个规范的接口,各个厂家都可以依照这个规范进行开发,这很有利于它的推广。TRON与目前国内企业了解比较多的Linux不同,虽然都是开放的,但开放的方式却有很大差别。Linux的源代码完全开放,用户在其基础上所作的开发也需要在开源社区公开,这样就出现了Linux版本的多样化,在某些情况下反而不利于其推广。TRON软件的核心部分和硬件的平台部分是对外公开的,但是用户在其基础上所做的进一步开发则属用户所有,无须对外开放,即使用户希望将自己的成果公开,也需要经过统一公开,这样既保护了用户的自主知识产权,也保证了版本的一致性。目前国内已经有介绍T-Kernel的中文书籍。