了解嵌入式
作者:admin      发布时间:2014/9/26

一 什么是嵌入式软件

那么什么又是嵌入式计算机系统?我们都知道,计算机系统可以处理各种数据、管理各种数据,我们这里所说的数据是包括文字、数字、图片以及各种指令。计算机系统就象人的大脑,记忆我们经历过的各种信息,帮我们分析各种信息,还可以控制指挥我们的各种行为。我们希望能制造各种有智能的机器,那么这些机器就需要一套脑系统,这些机器可能很小,如我们使用的数码照相机,我们不能将PC机装进去,也不能照相的时候还抗着PC机,于是就需要给它设计一套小小的可以嵌在里面的脑系统,这个大脑有多聪明,就要看它的软件了。这个嵌在里面的脑系统就是一个嵌入式计算机系统,那么我们可以这样定义:隐藏在一些更大的系统中,管理控制这些系统,并带有微处理器的专用软硬件系统称为嵌入式计算机系统,通常称为嵌入式系统

但不是所有需要嵌入式系统的机器都是因为小才用嵌入式计算机系统的,有些机器很大也需要嵌入式系统,这些嵌入式计算机系统本身也很大,有些比笔记本电脑还大。当然,这些系统也完全符合我们上面的定义,但是有些这类系统却常常不是嵌入式系统,比如,一台车载电脑,当它安装的操作系统是WindowsXP时人们就认为它不是嵌入式计算机系统,而如果它安装的操作系统是WinCE时就认为它是嵌入式计算机系统。这样,我们就该修改一下上面的定义:隐藏在一些更大的系统中,管理控制这些系统,带有微处理器并且没有使用操作系统或使用嵌入式操作系统的专用软硬件系统称为嵌入式计算机系统,通常称为嵌入式系统

二 嵌入式软件的分类与组成

嵌入式软件

单线程程序

事件驱动程序

循环轮询系统

有限状态机

中断驱动系统

多任务系统

单机多任务系统

分布式系统

嵌入式系统的发展非常快,而嵌入式软件的发展更快。嵌入式软件的发展就象生物的发展一样,由单细胞生物到多细胞,一直到智能生物人类,在这个过程中,嵌入式软件的结构越来越复杂,但是复杂系统还在不断发展的同时,简单系统仍然不可缺少。按照软件结构划分,嵌入式软件的分类如图1所示。

对单线程程序而言,没有主控程序,结构如图2所示,一种是循环轮询系统,一种是有限状态机。比如一个采用循环轮询结构的产品包装系统,系统采用光感应来判断是否有产品需要包装,一旦发现传输带上有物体,程序主体就控制执行包装动作。单线程程序的优点是程序简单、执行效率高,缺点是一旦出现故障,系统无法自动进行控制与恢复,安全性较差。如《猫和老鼠》中传输带上不是要包装的产品,而是一只猫,系统也会进行包装,这时如果猫使包装设备出故障,程序仍然一如继往地查是否有产品,有则执行包装指令。

中断驱动系统可以解决这种安全性问题。在中断驱动系统中,有一循环轮询的主程序控制中断响应程序的执行,程序结构如图3所示。对于多个中断请求同时发生,要考虑中断请求优先级,以及响应出现错误等情况发生时,主程序就须处理更复杂的任务管理,这时主程序已成为一个简单的嵌入式操作系统。如果上面的包装系统采用中断驱动系统,一旦发生错误,就会有一个错误中断请求执行错误响应程序,错误响应程序会处理错误,使系统恢复正常。

考虑更多的任务、多个中断处理过程的多任务系统的情况,比如要考虑存储的分配与管理、I/O的控制与管理、多个任务或中断请求同时发生等,中断驱动系统就无法应付了,这时嵌入式操作系统的支持是必不可少的,它要完成任务的切换、调度、通信、同步、互斥、中断管理、时钟管理等。而在一些系统中还需要嵌入式数据库的支持,如PDA上的一个微型客户管理系统(CRM)。如图4所示,虽然我们用简单的框图描述单机多任务嵌入式软件的层次结构,但是我们知道其程序结构远比前面所描述的几种复杂。

嵌入式系统的需求已越来越复杂,PC机上的应用几乎都有移到嵌入式系统的需要,如通过手机、PDA等移动设备进行的网络游戏、网上购物、网上银行交易等,这使嵌入式软件变得更加复杂,不仅需要嵌入式操作系统、嵌入式数据库,还需要网络通讯协议、应用支撑平台等,在此基础上的应用软件的架构也变得复杂起来。如图5所示,分布式嵌入式软件系统可能是Peer-to-Peer结构,也可能是B/S结构等。

三 嵌入式软件开发

 随着嵌入式软件系统结构越来越复杂,嵌入式软件的开发已成为复杂的系统工程。早期的嵌入式系统中,软件与硬件密不可分浑然一体,开发者多是电子工程、自动控制等领域的工程师,软件基本上都是用汇编语言实现。随着软硬件技术的发展,人们对嵌入式系统的功能要求越来越复杂(比如,手机可以照相、摄影、播放MP3,还可以上网读新闻、玩游戏、购物等),而性能(比如,可靠性、安全性、响应速度、功耗等)要求也越来越高,与此同时,嵌入式软件的开发与硬件仍然密不可分,从软硬件系统与平台选择、设计、开发到测试与集成,整个过程都是软硬件并行交互进行,这样嵌入式软件开发已经成为一项很复杂的系统工程,嵌入式软件的开发必须遵循系统工程和软件工程的要求。

一个嵌入式系统的开发过程如下:

1)        嵌入式系统的需求获取与需求分析;

2)        设计系统的体系结构:选择处理器和相关外部设备,操作系统,开发平台以及软硬件的分割和总体系统集成;

3)        硬件的结构设计、软件的系统设计;

4)        软硬件详细设计:

5)        软件代码开发,软件测试与调试;

6)        软硬件的联调和集成;

7)        系统的测试。

嵌入式系统中软件工作量约占全部工作量的80%,其中测试与验证的工作量占软件工作量的70%。而需求分析、系统设计在复杂系统中成为系统成功实现的关键,很多分析设计方法被引入到嵌入式系统设计中,包括面向对象方法、设计模式等。

基于PC 的软件设计只需考虑选择使用何种操作系统,而嵌入式软件设计不仅要慎重选择嵌入式操作系统,应用软件的设计与操作系统密切结合,甚至要根据需要对操作系统进行适当裁剪。

许多早期的嵌入式系统开发者认为嵌入式系统不需要操作系统,但现在除了最简单的系统外,越来越多的嵌入式系统都引入了操作系统,比如中断驱动系统在引入嵌入式操作系统之后,系统的可靠性、安全性、可扩展性、功能性、灵活性、可管理性都大大提高。当然,我们这里所讲的嵌入式操作系统不一定是UcOS、VxWorks、WinCE、Linux等通用产品,也包括开发者自己编写的专用嵌入式操作系统。

在这些嵌入式操作系统中封装了越来越多的功能,除了对任务的切换、调度、通信、同步、互斥、中断管理、时钟管理等,还可进一步封装内存管理、网络通讯协议、文件管理等功能,这些功能可以根据需要进行裁减。Linux正是由于其源代码开放,可以使开发者根据自己的需要进行裁剪而受到开发者的青睐。

四 发展与机遇

工业革命改变了世界的格局和人们生活与工作的方式,数字革命同样以新的规则悄悄地划分世界格局,并显现地改变这我们的生活与工作方式。

在数字革命中,互联网连结着我们生活、工作的每个节点,这些节点已不仅仅是PC机,各种各样的嵌入式系统节点正在不断连接到互联网上。

嵌入式系统的发展将会向两极发展,一方面会在一个系统中集成越来越多的功能,另一方面是高性能完全专用的系统。而这些系统可能都会成为互联网或专用网上的节点,我们将被网在一个数字世界中。

"
北京航空航天大学软件学院版权所有 地址:北京市海淀区学院路35号北航世宁大厦1003室 邮编:100191
邮箱:qianrushi@126.com 电话:王老师:010-82160911 ,13911256605d