现代嵌入式系统体系结构和开发方法分析
XXX
(XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX)
摘要:
通过对嵌入式系统的概念、发展的了解再到对嵌入式系统的剖析,从中讲述了嵌入式系统的体系结构的软硬结构,并对其具体特点进行了具体的描述。还着重分析了处理器、操作系统等各模块实现的功能及作用。其次对嵌入式的一般开发方法做了深刻的分析与探讨,从需求分析、详细设计、系统实现到系统测试都做了一定的规定与要求。同时还剖析了现行的一些开发方法和开发工具,并做了详细的比较。
关键词:嵌入式特征;系统结构;开发流程;开发方法;开发工具
引言
人们往往很难意识到自己随身带了好几个嵌入式系统,手机、手表或智能卡都嵌入了它们。而且他们与电梯、汽车、厨房设备、电视、录像机以及娱乐系统都有紧密的联系。
儿童玩耍的智能视频游戏和商店里的巧克力自动售卖机都需要用到嵌入式系统;家庭主妇所使用的许多兼容Internet的智能化家庭用品(如微波炉、视听系统、洗衣机等)都需要嵌入式系统;驾驶员需要嵌入式系统实现汽车的自动巡航控制。各个单位和机构需要嵌入式系统用于网络系统和产品„„
1 什么是嵌入式系统
嵌入式系统(ES)是计算机技术、通信技术、半导体技术、微电子技术、语音图象数据传输技术,甚至传感器等先进技术和具体应用对象相结合后的更新换代产品。因此往往是技术密集、投资强度大、高度分散、不断创新的知识密集型系统。反映当代最新技术的先进水平。 关于“嵌入式系统”的定义有很多种说法,目前最通用的定义为:“以应用为中心、以计算机技术为基础,软件可裁剪、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统”。
嵌入式系统不仅和一般的PC 机上的应用系统不同,就是针对不同的具体应用而设计的嵌入式系统之间差别也很大。嵌入式系统一般功能单一、简单,且在兼容性方面要求不高,但是在大小,成本方面较多。 嵌入式计算机基本上不能算是嵌入式系统。它仍然是计算机一类,不过是工作条件有所不同而已,因为它还保留了计算机的基本特征。 1.1 嵌入式系统的发展
嵌入式系统虽然起源于微型计算机时代,然而,微型计算机的体积、价位、可靠性都无法满足广大对象系统的嵌入式应用要求,因此,嵌入式系统必须走发展道路。这条道路就是芯片化道路。将计算机做在一个芯片上,从而开创了嵌入式系立发展的单片机时代。
在通信方面,嵌入式系统在20世纪60年代就用于对电子机械电话交换的控制,当时被称为“存储式程序控制系统”(Stored Program Control)。
单片机诞生于20世纪70年代末,经历了SCM(Single Chip Microcomputer)、MCU(Micro Controller Unit)、SoC三大阶段.从20世纪80年代初开始,小型嵌入式系统使用通用电器公司生产的微控制器,使用该公司70年代末的微控制器PIC 16xxx、Motorola微控制器68HC05/08以及8031系列的Intel微控制器。应用广泛的小型嵌入式系统还包括遥控电视、手表、洗衣机、烤箱、计算器、数字日记和视频游戏。80年代末,Intel 8051/52、Motorola 68HC11/12、Intel 80196和80960系列微控制器的出现,使嵌入式系统硬件的使用更加多元化。
在最近几年,出现了将低级和高级处理硬件单元和专用处理器嵌入到一个芯片中的技
术,出现了多处理器系统的嵌入式系统、单芯片VLSI(称为片上系统),这些系统具有智能化功能,且高度复杂。
1.2 嵌入式系统具备的特性与特点
(1)嵌入式系统通常是面向用户、面向产品、面向特定应用的。嵌入式系统中的CPU与通用型CPU的最大不同就是前者大多工作在为特定用户群设计的系统中。
(2)严格的时序和稳定性要求,这是因为在机器控制的大型系统中,程序运行稍有差错则可能使得整个系统失去控制,甚至酿成灾害。
(3)全自动操作循环。嵌入式系统是电脑软件与硬件的综合体,它是以应用为中心,以计算机技术为基础,软硬件可裁剪。 (4)为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机中,而不是存贮于磁盘等载体中。
(5)嵌入式系统本身并不具备在其上进行进一步开发的能力。在设计完成以后,用户如果需要修改其中的程序功能,也必须借助于一套开发工具和环境。
(6)通用计算机的开发人员通常是计算机科学或者计算机工程方面的专业人士,而嵌入式系统开发人员却往往是各个应用领域中的专家,这就要求嵌入式系统所支持的开发工具易学、易用、可靠、高效。
2 嵌入式系统的体系结构
2.1 嵌入式系统组成
嵌入式系统和通用的计算机系统都包括硬件和软件两个组成部分。其中,硬件是所有软件运行的基础;软件能充分发挥硬件潜能和扩充硬件功能,完成各种系统任务及应用任务,两者互相促进、相辅相成、缺一不可。
嵌入式系统的组成软硬兼施,互利互惠,融为一体,成为产品。芯片加软件成为产品,但要开发工具辅助进行开发。嵌入式系统的硬件和软件都必须高效率地设计,量体裁衣,去除冗余,力争在同样的硅片面积上实现更高的性能,这样才能在具体应用中对处理器的选择面前更具有竞争力。 2.2 硬件
嵌入式系统的硬件是以嵌入式微处理器为核心,主要由嵌入式微处理器、总线、存储器、输入/输出接口和设备组成。 2.2.1 嵌入式芯片EMCU
一般有EMPU---嵌入式微处理器、EMCU---嵌入式微控制器、EDSP---嵌入式数字信号处理器、ESOC,EPSOC---嵌入式片上系统,嵌入式可编程片上系统(系统芯片)。
嵌入式系统硬件层的核心是嵌入式微处理器,嵌入式微处理器与通用CPU最大的不同在于嵌入式微处理器大多工作在为特定用户群所专用设计的系统中。
嵌入式微处理器的体系结构可以采用冯·诺依曼体系或哈佛体系结构;指令系统可以选用精简指令系统(Reduced Instruction Set Computer,RISC)和复杂指令系统CISC(Complex Instruction Set Computer,CISC)。RISC计算机在通道中只包含最有用的指令,确保数据通道快速执行每一条指令,从而提高了执行效率并使CPU硬件结构设计变得更为简单。
嵌入式微处理器有各种不同的体系,即使在同一体系中也可能具有不同的时钟频率和数据总线宽度,或集成了不同的外设和接口。据不完全统计,目前全世界嵌入式微处理器已经超过1000多种,体系结构有30多个系列,其中主流的体系有ARM、MIPS、PowerPC、X86和SH等。但与全球PC市场不同的是,没有一种嵌入式微处理器可以主导市场,仅以32位的产品而言,就有100种以上的嵌入式微处理器。嵌入式微处理器的选择是根据具体的应用而决定的。
2.2.2 存储器
嵌入式系统需要存储器来存放和执行代码。嵌入式系统的存储器包含Cache、主存和辅助存储器。 (1)Cache
Cache是一种容量小、速度快的存储器阵列它位于主存和嵌入式微处理器内核之间,存放的是最近一段时间微处理器使用最多的程序代码和数据。在需要进行数据读取操作时,微处理器尽可能的从Cache中读取数据,而不是从主存中读取,这样就大大改善了系统的性能,提高了微处理器和主存之间的数据传输速率。Cache的主要目标就是:减小存储器(如主存和辅助存储器)给微处理器内核造成的存储器访问瓶颈,使处理速度更快,实时性更强。
在嵌入式系统中Cache全部集成在嵌入式微处理器内,可分为数据Cache、指令Cache或混合Cache,Cache的大小依不同处理器而定。一般中高档的嵌入式微处理器才会把Cache集成进去。 (2)主存
主存是嵌入式微处理器能直接访问的寄存器,用来存放系统和用户的程序及数据。它可以位于微处理器的内部或外部,其容量为256KB-1GB,根据具体的应用而定,一般片内存储器容量小,速度快,片外存储器容量大。 常用作主存的存储器有:
ROM类 NOR Flash、EPROM和PROM等。ROM中的信息在一次写入后只能被读出,而不能被操作者修改或删除,一般由芯片制造商对存储器进行掩膜写入信息,其价格便宜,适合于大量的应用,一般用于存放固定的程序,如监控程序、汇编程序等,以及存放各种表格。
RAM类 SRAM、DRAM和SDRAM等。主要用来存放各种现场的输入、输出数据,中间计算结果,以及与外部存储器交换信息和作堆栈用。它的存储单元根据具体需要可以读出,也可以写入或改写。RAM只能用于暂时存放程序和数据,一旦关闭电源或发生断电,其中的数据就会丢失。现在的RAM多为MOS型半导体电路,分为静态和动态两种。静态RAM是靠双稳态触发器来记忆信息的;动态RAM是靠MOS电路中的栅极电容来记忆信息的,由于电容上的电荷会泄漏,需要定时给与补充,所以动态RAM需要设置刷新电路。动态RAM比静态RAM集成度高、功耗低,从而成本也低,适于做大容量存储器。所以主内存通常采用动态RAM,而高速缓冲存储器(Cache)则使用静态RAM。
其中NOR Flash 凭借其可擦写次数多、存储速度快、存储容量大、价格便宜等优点,在嵌入式领域内得到了广泛应用。 (3)辅助存储器
辅助存储器用来存放大数据量的程序代码或信息,它的容量大、但读取速度与主存相比就慢的很多,用来长期保存用户的信息。
嵌入式系统中常用的外存有:硬盘、NAND Flash、CF卡、MMC和SD卡等。 2.2.3 通用设备接口和I/O接口
嵌入式系统和外界交互需要一定形式的通用设备接口,如A/D、D/A、I/O等,外设通过和片外其他设备的或传感器的连接来实现微处理器的输入/输出功能。每个外设通常都只有单一的功能,它可以在芯片外也可以内置芯片中。外设的种类很多,可从一个简单的串行通信设备到非常复杂的802.11无线设备。
目前嵌入式系统中常用的通用设备接口有A/D(模/数转换接口)、D/A(数/模转换接口),I/O接口有RS-232接口(串行通信接口)、Ethernet(以太网接口)、
USB(通用串行总线接口)、音频接口、VGA视频输出接口、I2C(现场总线)、SPI(串行外围设备接口)和IrDA(红外线接口)等。 2.3 嵌入式软件
嵌入式软件就是嵌入在硬件中的操作系统和开发工具软件,它在产业中的关联关系体现为:芯片设计制造→嵌入式系统软件→嵌入式电子设备开发、制造。目前所使用的语言有C++、JAVA、脚本语言(Script Langu- age)、HOPEN、JINI。
嵌入式操作系统(Embedded Operation System,EOS)是一种用途广泛的系统软件。系统软件层由实时多任务操作系统(Real-time Operation System,RTOS)、文件系统、图形用户接口(Graphic User Interface,GUI)、网络系统及通用组件模块组成。RTOS是嵌入式应用软件的基础和开发平台。EOS负责嵌入系统的全部软、硬件资源的分配、任务调度,控制、协调并发活动。它必须体现其所在系统的特征,能够通过装卸某些模块来达到系统所要求的功能。随着Internet技术的发展、信息家电的普及应用及EOS的微型化和专业化,EOS开始从单一的弱功能向高专业化的强功能方向发展。嵌入式操作系统在系统实时高效性、硬件的相关依赖性、软件固化以及应用的专用性等方面具有较为突出的特点。 现在包括VRTX 、PSOS 、VXWORK、WINCE、EPOC 、LINUX 、PALM 、OS-9 、JAVA CHORUS OS 、QN-X 、NAVIO 等的版本。
Linux 是90 年代以来逐渐成熟的一个开放源代码的操作系统。 PC 机上的Linux 版本在全球数以百万计爱好者的合力开发下,得到了非常迅速的发展。90 年代末uClinux,RTLinux 等相继推出,在嵌入式领域得到了广泛的关注,它拥有大批的程序员和现成的应用程序,是我们研究开发工作的宝贵资源。 2.4 中间层
中间层(也称为硬件抽象层HAL或者板级支持包BSP):它将系统上层软件和底层硬件分离开来,使系统上层软件开发人员无需关系底层硬件的具体情况,根据BSP层提供的接口开发即可。
BSP有两个特点:硬件相关性和操作系统相关性。设计一个完整的BSP需要完成两部分工作:
(1)嵌入式系统的硬件初始化和BSP功能。 片级初始化:纯硬件的初始化过程,把嵌入式微处理器从上电的默认状态逐步设置成系统所要求的工作状态。 板级初始化:包含软硬件两部分在内的初始化过程,为随后的系统初始化和应用程序建立硬件和软件的运行环境。
系统级初始化:以软件为主的初始化过程,进行操作系统的初始化。
(2)设计硬件相关的设备驱动
3 嵌入式系统开发方法分析
3.1 嵌入式系统设计
嵌入式系统的设计过程主要包括:嵌入式系统的设计流程、嵌入式系统的一般设计方法、嵌入式系统的软、硬件协同设计技术
嵌入式系统设计一般由5个阶段构成:需求分析、体系结构设计、硬件,软件设计、系统集成和系统测试。各个阶段之间往往要求不断的反复和修改,直至完成最终设计目标。 3.2 嵌入式系统开发方法
嵌入式系统开发技术方面主要有需求分析、详细设计、系统实现、系统测试 3.2.1 开发原则
嵌入式系统的开发应遵循软件工程的原则。但是,软甲工程的原则是要自己在学习软件工程之后,在实践中慢慢体会的。做任何一个项目,要在计算机硬盘上建立一个的文件
夹,并在此之下建立“文档”、“硬件设施”、“软件设计”、“实验过程”等下一级文件夹。 3.2.2 详细设计
设计阶段对系统进行输入输出分析是整个工程的第一步,应该以单片机为核心展开。输入分析分为开关量类与模拟量类。开关类输入样表见表1,模拟量类输入样表件表2,输出分析也可分为开关量类与模拟量类,开关类输出样表见表3,模拟量类输出样表见表4,还可以对通信类输入、键盘类输入进行必要的列表,参照进行。还可以对通信类输出、显示类输出进行必要的列表,参照进行。
一般开发方法:
表1
编号 1
嵌入式系统输入量分析表(开关量) (样表)
命名 (英文简写名)
来源 (那个传感器)
备注 (额外信息)
开关量名称 (给出中文名)
表2
编号 1
模拟量名称 (给出中文名)
嵌入式系统输入量分析表(模拟量) (样表)
来源 (哪个传
数值范围 (最小、最大)
分辨率要求 (给出分辨率,以便选择A/D位数)
备注 (额外 信息)
命名 (英文
简写名) 感器)
表3
编号 1
开关量名称 (给出中文名)
嵌入式系统输出量分析表(开关量) (样表)
命名 (英文简写名)
控制对象 (哪个执行机构)
备注 (额外信息)
表4
编号 1
模拟量名称 (给出中文名)
嵌入式系统输出量分析表(模拟量) (样表)
控制对象 (哪个执
数值范围 (最小、最大)
控制要求(分辨率) (给出分辨率,以便选择D/A位数)
备注 (额外 信息)
命名 (英文
简写名) 行机构)
3.2.3系统实现
选择单片机型号。嵌入式系统的核心就是各种不同类型的单片机芯片。在进行详细的输入输出分析后,设计者就可以根据该系统的特征,为其选择一款合适的芯片。应该遵循以下原则:
(1)合理的RAM和Flash大小; (2)通用的I/O引脚数目 (3)内部包含的功能模块 (4)芯片的封装形式 3.2.4 评估测试
选择评估系统并对于单片机有关的硬件进行评估。选择一个合适的评估工具,利用该工具可以评估系统的大部分输入/输出与通信模块,也可以自行搭建硬件评估系统。
设计并制作硬件系统。设计室,应以芯片为核心,诸葛硬件模块进行。进行布线时,滤波电容应靠近芯片引脚并尽量加粗电源线。
进行硬件系统的模块测试。首先进行焊接单片机(或其插座),及其支撑电路,利用软件测试其是否正常工作。
进行软件系统设计,系统测试。在系统开发过程中,测试是一个基本的要素,它有助于提高系统的品质。测试目标使得系统更加完善,对环境的适应能力更强。
3.3 嵌入式系统开发工具
(1)国外市场
实时在线仿真系统ICE(In-Circuit Emulator) 高级语言编译器(Compiler Tools) 源程序模拟器(Simula- tor)
(2)国内市场-国外产品占领市场90 以上,目前国内产品占领市场很小,但正在新形势下兴起,很快进入市场。
3.4 一些开发方法
3.4.1 图形化开发方法
其优势是具有实现快速重复使用、降低编程工作的复杂度、降低开发者入门难度。 图形化开发方法 — Target Register Editor包括处理器类型选择、存储器及映射配置、外设类型配置、寄存器设置、位域设置、总览、配置文件(XML)。图形化开发方法—— Scatter Load File Editor包括分散加载描述文件编辑器、可视化的存储器加载视图执行视图、加载执行映射关系一目了然、能否画图直接生成分散加载描述文件。 3.4.2 嵌入式开发工具发展方向
(1)开放的集成开发环境——Eclipse
(2)全系统实时跟踪调试——CoreSight、SW (3)软件仿真分析——Simulator (4)性能分析——Profile (5)可视化设计——RVDS、MDK (6)编译优化——RVCT
4 结论
通过对嵌入式系统原理的学习,首先从课程中明确了嵌入式系统的概念以及嵌入式系统的结构以及嵌入式系统软件和硬件的特点。其次我学习了以ARM为内核的处理器应用和发展,了解到目前以ARM内核为代表的微处理器的CPU架构、流水线结构、指令集等方面的知识。通过对ADS开发环境的认识与使用,自己对整个的程序设计流程以及实现有了较深刻的认识。
随着电子技术的不断发展,嵌入式系统为设备网络通信提供标准接口以及提供精巧的人工界面,嵌入式网络等等。可以相信未来电子技术就是嵌入式系统技术的天下。
参考文献:
[1]蒋建春,胡玮,王永清,嵌入式系统原理与设计[M]北京机械工业出版社 2010 [2]魏伟,嵌入式硬件系统接口电路设计[M]北京化学工业出版社 2010 [3]金建设,嵌入式系统基础教程[M]大连理工大学出版社 2009
[4]刘天泉,嵌入式系统开发方法及研究[D]浙江大学研究生论文 2004:12-14
[5]沙占友,王彦朋,孟志永嵌入式外围电路设计[M]北京电子工业出版社2003:161-173 [6]王宜怀,留晓升嵌入式应用技术基础教程[M]北京清华大学出版社2005:8-15 [7]桑楠,嵌入式系统原理及应用开发技术[M]北京高等教育出版社 2008
[8]Tammy Noergaard,嵌入式系统:硬件与软件架构[M]北京人民邮电出版社2008
[9]卡莫尔(RajKamal),嵌入式系统:体系结构、编程与设计[M]清华大学出版2010 [10]卿立军,徐成,李仁发,薛立功,一种新型网络化嵌入式系统的体系结构[D] 2004-04 [11]杨宗德,嵌入式ARM系统原理与实例开发[M]北京大学出版社2010