IC技术讲座是本刊2005年推出的全新技术类栏目。为了让工程师在设计开发中完善和拓展基础理论与系统知识,丰富应用经验,《世界电子元器件》和中电网联合清华大学等知名院校共同创办了这个栏目,特约知名学者、教授以及著名半导体公司的应用工程师撰写,以系列讲座的方式对热点IC技术进行全面而系统的介绍,涵盖最新技术要点。最先开设的讲座将围绕三大课题:DSP、FPGA和嵌入式系统,每个课题都将连载6期。
嵌入式系统简介
自从1945年人类历史上第一台现代意义的电子计算机ENIAC诞生以来,计算机技术已经发生了翻天覆地的变化,随着技术进步的不断加速,我们有理由相信计算机还将继续快速发展并进一步改变我们的生活,让计算变得“无所不能”、“无处不在”。其中“无所不能”将是人工智能技术和超级计算机的结合,而“无所不在”则是嵌入式技术应用的广阔天地,现在普通消费者已经可以从市场中买到数码相机、移动电话、MP3等等,这些其实都只是嵌入式应用的冰山一角,不远的将来嵌入式设备将会嵌入在桌子、椅子、餐具、窗帘等各种日常用品中,全面走入人类的生活,而且还会在人类的工业、军事、自然探索等各方面广泛应用。
虽然人类有着旺盛的应用需求,但是现在嵌入式技术还面临着开发周期长、开发工具不好用、软件系统越来越复杂、物理体积不足够小、计算能力受到限制、网络通讯技术不成熟、电源供电技术跟不上等技术问题,这些问题也正是嵌入式技术不断发展的动力所在。
关于嵌入式系统其实并没有一个明确的定义,一般把除了大型计算机、服务器和典型的个人台式计算机、笔记本电脑之外的各种可计算设备都称为嵌入式系统,包括网络路由器、交换机,已有多年历史的单片机等等都可以被称为是嵌入式系统,从这个角度出发我们可以把嵌入式系统定义为面向特定应用的可计算设备,其中“面向特定应用”和“可计算设备”是两个关键词。比如前两年还被认为是嵌入式系统的典型应用
“手机”现在已经被越来越多的人认为不是嵌入式系统了,因为手机越来越通用,越来越标准化。
由于嵌入式设备是面向特定应用的,因此嵌入式技术重要特点就是与应用需求相吻合,而不是单纯地追求性能、速度、美观等因素,能最贴切地满足应用需求就是最好的嵌入式设计。嵌入式系统的设计是从功能、性能、成本、开发周期、体积、可靠性、实时性、维护方式等各方面来综合考虑,并且这些因素是互相影响的,在一个方面有所增强就必须在其他某些方面受到损失。设计人员除了要解决具体的技术细节问题,往往最困扰的就是如何在各方面因素之间寻找最佳的折中。
嵌入式系统硬件平台
嵌入式系统可以被想象成一个专用的计算机,它也有具体的硬件实现和在硬件之上运行的软件,不远的将来硬件与软件之间将会更紧密地融合在一起,大量科研工作者和技术人员正在为此不断努力,但现在主流的嵌入式设计还是软硬有别,因此我们先从硬件的角度对嵌入式系统做一个介绍。
和个人计算机技术被WinTel联盟等少数几家企业所主宰不同,由于嵌入式系统是面向特定应用的系统,这一特点决定了嵌入式硬件平台是一个百花齐放的技术天地。从硬件核心的嵌入式处理器来看,既有现在蓬勃发展的ARM体系结构和各种各样的衍生SoC设计,也有基于MIPS、PowerPC、SH3等技术的嵌入式处理器,还有原先在个人计算机平台上被广泛使用的X86体系结构处理器的嵌入式版本(EIA系列的嵌入式处理器)。这些门类繁多、品种各异的嵌入式处理器之间除了技术上互有差异,也有一些共同的特点,如处理器中集成的功能越来越多、芯片体积小、功耗低、成本低价格便宜。
除了嵌入式处理器以外,嵌入式系统中的存储器技术也是飞速发展,由于在许多嵌入式应用中不允许采用硬盘这样的机械存储设备,Flash等存储技术得到了快速发展,现在Flash芯片的存储容量已经可以达到Gb级的水平,存取速度越来越快,功耗逐步降低,体积也越来越小,并在逐步向Tb级水平和发展。此外为了满足市场对小体积设备的需求,越来越多的存储器正在与嵌入式处理器融合,将DRAM或Flash存储器集成在嵌入式处理器芯片的内部,虽然现在技术还不能实现大容量存储器与嵌入式处理器的集成,但是需求正推动技术逐步向这个方向发展。
与其他计算机技术相比,Internet的发展速度更是迅猛,人们已经逐步从喜欢网络变得离不开网络,更让我们惊讶的是互联网正在从现在的在人与人之间提供通讯渠道逐步转变为在设备与设备之间提供通讯渠道,并且未来设备之间的网络信息流量将远远大于人与人的通讯信息量,这些巨大的信息量将如何产生呢?未来远远超过人类人口数量的嵌入式系统将是产生信息流量的主力军,现在任何一个嵌入式系统的设计都很难将网络功能排除在外。除了传统的以太网等网络技术,在嵌入式系统中广泛采用的将是无线网络技术,在不同的频段、不同的调制技术和网络通讯协议的驱动下,嵌入式设备上的无线网络技术也必将百花争艳。
在嵌入式硬件平台中还有一个很重要的技术就是电源管理技术。随着无线网络技术的成熟,越来越多的嵌入式系统将会甩开恼人的网线和电源线,被设计成可移动的设备。这些设备将主要依赖电池供电,如何让设备在电池的驱动下工作时间更长就成为一个重要的问题。因此在嵌入式系统的设计中选择什么电池技术和电池产品,硬件设计上如何进行电压转换以更加节能,电源设计在电能不足的情况下如何进行数据保护并完成任务等问题就成为重要的技术问题。
嵌入式系统的硬件平台是面向特定应用需求的硬件平台,除了上述的各种技术之外,嵌入式系统的重要发展趋势是进行SoC设计,从将自身嵌入到其他大型系统中转变为整个系统嵌入在一个芯片内,即System
on Chip(SoC),随着技术的不断积累和应用需求的稳定和标准化,SoC将会逐步成为嵌入式系统设计的主要实现方式。
嵌入式系统软件平台
在当前的嵌入式技术中,硬件与软件的关系越来越密切,与硬件相对应软件也是嵌入式系统中的重要组成部分,而且由于当前软件中数以万计的代码是由人手工编写完成,这些软件需要屏蔽不同底层硬件的差异,并要能满足千变万化的应用需求,因此软件相对于硬件而言更复杂,需要耗费的研发成本更多。
由于嵌入式系统是面向特定应用的系统,因此不同嵌入式系统的硬件设计往往千差万别,不能像个人电脑中的BIOS那样有统一的标准化设计,这种非标准化突出体现在嵌入式系统启动程序的设计和嵌入式操作系统硬件抽象层的移植工作中,为了减少重复劳动、提高生产效率,这些工作正在逐步变为由硬件厂商来提供标准的参考解决方案(或定制服务),并提供软件源代码给具体设备的制造商。
嵌入式系统的启动程序一般具有两个功能:一是启动设备,完成硬件自检,为后续操作系统的运行做好准备;另一个是提供开发和调试环境,为后续操作系统的开发和移植提供方便。虽然从理论上来说可以完全不需要启动程序的存在,而直接由操作系统负责启动,但实际上出于开发任务的分解、调试的需要和一些技术上的考虑,一般都会采用一个代码量相对操作系统小得多的启动程序,并首先用各种开发工具将启动程序调试通过。
嵌入式操作系统是嵌入式软件平台中最重要的组成部分,也有很多简单的嵌入式系统不使用操作系统,但是随着应用需求变得越来越复杂,随着人们对提高开发效率、降低研发成本和保证系统稳定性需求的增强,操作系统的使用越来越普及。并且嵌入式系统中的操作系统和通用计算机中的操作系统相比还有一些独特的特点,比如许多应用希望嵌入式操作系统能满足一定的实时性要求、可配置性好、可移植性强、具有功耗管理功能、系统稳定可靠等等。
如果计算机只利用嵌入式处理器和存储器进行计算而离开了对各种输入输出(I/O)设备的操作,就不能获得输入信号,不能显示结果,不能与其他计算设备通讯,不能与使用计算机的人进行交互,那么计算机所能发挥的作用就大为逊色了。驱动程序就是操作系统中用于控制和访问各种输入输出设备的程序,因此驱动程序是嵌入式系统软件平台中的重要性部件。在实际的嵌入式系统开发中,操作系统的内核一般不需要做太多的修改,大量的工作往往是针对独特的硬件平台编写、修改和调试各个外设的驱动程序,这方面的技术需求巨大。
嵌入式系统由于面向特定应用一般资源有限以节约成本,不能像通用计算机那样有完善的应用程序运行环境,因此面向嵌入式应用的中间件软件就应运而生,这些嵌入式中间件软件往往执行效率高,为特定的应用进行了裁减和优化,或者可配置性很强。一些典型的嵌入式系统中的中间件软件包括网络协议栈、Flash文件系统、Java虚拟机、嵌入式数据库等等。
最后,嵌入式系统中必然还有完成特定任务的应用软件,这些软件架构在嵌入式操作系统和中间件软件之上,针对特定的硬件需求完成相应的计算任务,是嵌入式系统功能的最后实现者,其设计和应用需求紧密相关,开发过程与普通应用软件的开发过程类似,是系统设计的最后环节。
未来技术发展趋势
在本文中,我们从嵌入式硬件平台和软件平台两个方面探讨了嵌入式系统中的相关技术,其实在嵌入式系统中这二者不是完全割裂开来的,相反在嵌入式技术领域一个应用功能到底采用硬件实现还是用软件实现并没有严格的界限,而是根据实际需要和对成本等因素的考虑来决定。比如一个多媒体数据处理系统可以先采用通用处理器完全使用软件来设计,并逐步将其中的性能瓶颈部分(如计算量巨大的编解码模块、加密传输模块等)用硬件模块来代替,逐步实现一个性价比更高、成本更低、恰好满足应用需求的系统。当前,嵌入式技术领域的科研工作者和技术人员不断努力的目标就是将软硬件二者不断地融合在一起,实现嵌入式系统的软硬件协同设计,这方面的研究已经开展了多年,例如现在已比较流行的SystemC系统设计语言。当然,软硬件协同设计现在还没有完全实用化,在标准的制定、开发工具的完善等方面还有许多工作亟待完成,但协同设计是大势所趋,而且协同设计的普及必将极大的推动嵌入式系统的普及应用,真正实现“无所不在”的计算模式。
|