ARM嵌入式系统技术开发与应用实践(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-30 04:46:32

点击下载

作者:贾东永,孙印杰,等

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

ARM嵌入式系统技术开发与应用实践

ARM嵌入式系统技术开发与应用实践试读:

前言

随着电子技术的发展,以ARM微处理器为核心的电子应用系统已经进入人们日常生产生活的各个方面,ARM以其出色的性能优势赢得了广大电子产品开发者的认可。如何巧妙地应用ARM微处理器的技术特点,在最短的时间内开发出高性能和低成本的电子系统是广大技术开发人员最关心的问题。本书以NXP公司生产的LPC213X系列ARM微处理器为对象,以系统开发为目标,从基础和实践两个方面来介绍基于ARM微处理器的开发技术。全书分为两个部分。第一部分为基本技术部份,由七章内容组成,介绍了ARM微处理器的基础知识和基本技术,作为第二部分实践模块的铺垫。在第1章中,主要介绍了各种ARM微处理器和电子系统的基本概念,使读者对ARM微处理器和基于ARM的系统开发有直观的了解。第2章介绍了ARM微处理器的体系架构,包括指令流水、存储器架构和寄存器结构等。第3章和第4章分别介绍了ARM微处理器的两种指令集,ARM指令集和Thumb指令集。通过对两种指令集中主要指令的介绍,可以使读者对它们的主要特点和优缺点有直接的了解。第5章介绍了如何利用C语言或者汇编语言开发ARM微处理器的应用程序,包括如何设计程序框架,如何实现两种语言的交叉使用等。第6章介绍了ARM微处理器中一些常见的功能模块,和电子系统中几个比较普遍的通信协议,使读者渐渐上升到一个系统开发者的高度看问题。第7章也就是基础部分的最后一章,介绍了典型的ARM小系统和Windows下ARM的开发环境ADS,使读者渐渐向实际应用靠拢,为读者过渡到本书的第二部分打好基础。本书的第二部分主要介绍ARM微处理器的实例。通过10个实例,深入浅出地介绍如何利用ARM进行各种应用系统的开发。所选择的实例,都以LPC2131型ARM微处理器为控制核心,为了实现不同的系统需求,采用不同的电路和控制方式,最终的目的都为了更高效可靠地完成系统的开发,内容包括交通信号灯控制系统、数字秒表、温度计、俄罗斯方块游戏、服务请求系统、手写板、无线指令终端、计算器、USB-Key和逻辑分析仪。通过实例的开发,增强和拓展将基础知识应用到工程实践中的能力与思路,借以扩展和提高读者的系统开发水平。实例部分所涉及的案例,都是日常生活中和学习研究中比较常见和熟悉的应用,不但有比较强的综合性,而且容易激发读者的学习兴趣。为了便于学习和借鉴,10个实践案例的源程序,读者可从http://www.tqxbook.com中的相应书名的资源中下载。由于ARM微处理器功能强大,产品系列庞杂,本书有限的篇幅不可能完整介绍ARM微处理器的各个方面。真正利用ARM微处理器进行设计会涉及很多技术细节,本书也不可能一一罗列,因为过多的内容只会让读者觉得应接不暇。本书的编写只是通过对原理和一些设计实例的介绍,为读者利用ARM微处理器进行项目开发打下一个坚实的基础。本书由贾东永、孙印杰、陈安统稿,参加本书编写的人员还有:朱敬、张凌云、刘文、李龙、魏东、王立华、李勇、刘峰、徐浩、李建国、马建军和张新等。由于作者水平有限,难免存在一些错误和不足,希望广大读者批评与指正。我们的E-mail地址:qiyuqin@phei.com.cn。编著者2009年5月第1章 ARM微处理器概述ARM微处理器在我们日常消费的电子生产控制领域随处可见,其优越的性能和完善的开发环境得到了广大电子工程师的青睐。ARM微处理器由ARM公司提供IP授权,由多个芯片设计厂商进行整合生产。随着ARM的发展,其内核版本和生产厂商越来越多,因此市场上能够找到的ARM芯片种类繁多。虽然不同的ARM微处理器有着不同的特点,但是有一个特点是共同的,即它们有着类似的体系结构。本章将介绍ARM微处理器的基本知识和常见的ARM微处理器,并对基于ARM微处理器的嵌入式系统做简要介绍。1.1 ARM简介初次接触ARM的人心里都会有这样的疑问:什么是ARM?ARM的英文全称是Advanced RISC Machine,既可以认为是一个公司的名字,也可以认为是一种微处理器核技术的名称,还可以认为是带有这种微处理器核技术的一类芯片的统称。对于从事系统开发的电子工程师来说,ARM通常是指带有ARM核的一类微处理器。1.1.1 ARM的历史ARM公司(Advanced RISC Machine)是微处理器行业一家知名企业,1990年11月成立于英国,是苹果电脑、Acorn电脑集团和VLSI Technology的合资企业。1985年,Acorn推出世界上首个商用RISC微处理器,这就是ARM最初的原型,其英文全称是Acorn RISC Machine。而苹果电脑当时希望将RISC技术应用于自身系统,于是在20世纪80年代后期,苹果电脑开始与Acorn合作开发新版的ARM核芯。Acorn公司非常重视这项合作,在1990年将ARM的设计团队另组成一家名叫Advanced RISC Machine的公司。也正是由于这个原因,我们通常将ARM称作Advanced RISC Machine,而不是Acorn RISC Machine。1998年ARM Holding Plc在伦敦交易市场和NASDAQ挂牌上市,使得ARM成为了ARM ltd.旗下拥有的产品。但是作为嵌入式系统的系统级开发人员来说,可能对ARM公司并不熟悉。因为ARM公司既不生产芯片也不销售芯片,它只以授权的方式转让它的芯片技术。它在微处理器行业中的地位有点类似于高通公司在通信行业中的位置,它真正的TM产品是技术的知识产权。1991年ARM公司推出首个嵌入式RISC核心——ARM6微处理器系列后不久,VLSI率先获得技术授权,随后夏普、GEC Plessey、德州仪器(英文缩写为TI)和Cirrus Logic也成为授权用户,随后ARM又相继推出了ARM7,ARM9,ARM10,ARM11。与此同时,ARM在美国加利福尼亚、日本东京、德国慕尼黑等世界各地开设了办事处,授权用户也急剧增加。到目前为止,全球有103家巨型IT公司在采用ARM技术,20家最大的半导体厂商中除了AMD以外其他19家均是ARM的用户,包括德州仪器、意法半导体、Philips、Intel等。ARM之所以取得如此巨大的成功。主要基于以下两点。1. 致力于发展低功耗、低成本的微处理器技术在竞争对手都着眼于提高性能,发展适合高端工作站使用的RISC结构的时候,ARM将目光投向了低成本、低功耗的RISC结构,并且成功研制了首个低成本RISC微处理器结构,迅速在市场上崭露头角。因为有低功耗的特点,使得采用ARM技术的芯片非常适用于移动终端设备中,再加上它的低成本,使它非常容易被广大厂商接受。尽管Intel的微处理器在PC领域处于压倒性优势地位,但在嵌入系统领域,Intel还是要使用ARM核的技术授权。例如,推出基于ARM技术的MP3播放器,Intel与TI在2001年7月30日同时取得ARM V6结构的授权。微软的PocketPC今后只支持ARM结构。Motorola、National Semiconductor、Lucent等一批厂商都取得ARM核的技术授权。同时随着合作伙伴的增多,ARM获得了更多第三方工具、软件和制造的支持,这样就使得基于ARM技术的产品的开发时间减少、成本更低,更具备竞争优势。2. 成功的商业模式ARM公司是一家既不生产芯片也不销售芯片的公司,它通过出售芯片技术授权,建立起新型的微处理器设计、生产和销售商业模式。这种商业模式取得了极大的成功,采用ARM技术IP核的微处理器遍及各类电子市场,包括汽车、消费电子、成像、工业控制、海量存储、网络、安保和无线等,ARM技术几乎无处不在。ARM将其技术授权给世界上许多著名的半导体、软件和OEM厂商,每个厂商得到的都是一套独一无二的ARM相关技术及服务。基于这种大范围的合作关系,ARM很快成为全球性RISC标准的缔造者。1.1.2 ARM微处理器的技术特点到2008年为止,带有ARM核的微处理器产量累计已经达到了100亿个。我们日常生活中所接触到的手机、PDA等众多电子消费品中无不存在着ARM的影子。ARM之所以取得如此巨大的成功,跟它在技术上的优势是密不可分的。这一节将简要介绍ARM的技术特点。1. 低功耗ARM微处理器低功耗的特点使得它非常适合应用到手持电子设备当中。目前,ARM微处理器和包含ARM核的SOC芯片已经在手持终端、手机、MP4等电子设备中得到了广泛的应用。2. 开发周期短开发周期是由ARM的商业模式决定的。ARM公司将成熟的ARM技术直接授权给芯片设计厂商,大大缩短了产品开发周期。这对于芯片设计厂商是个非常大的优势。3. 支持Thumb和ARM双指令集ARM微处理器有ARM和Thumb两种工作状态,它们分别支持32位的ARM指令集和16位的Thumb指令集。这两种指令集各有所长。32位的ARM指令集在功能上相对更丰富,性能更好,实现同样的功能所需的指令数量较少;而16位的Thumb指令集是ARM指令集的子集,虽然实现相同功能的指令数量比ARM指令集多,但是程序空间却相对较小。由于16位位宽的译码逻辑相对简单,Thumb指令集在功耗上更低。这两种指令集各有优势,ARM微处理器支持在运行状态下这两种工作状态进行切换,这使得ARM微处理器可以充分发挥这两种指令集各自的优势。4. 高效的总线系统AMBA(Advanced Microcontroller Bus Architecture)总线是一组针对基于ARM核的片上系统开发的的总线规范,它由ARM公司设计,独立于微处理器的制造工艺技术。AMBA规范定义了3种可以组合使用的不同类型的总线。● AHB(Advanced High-performance Bus)支持多种数据传输方式、多个总线主设备,适合于高性能和高时钟频率的系统模块。如CPU、片上存储器、DMA设备、DSP或者其他协处理器等。● ASB(Advanced System Bus)也适用于高性能的系统模块。在不需要使用AHB的场合,可以选择ASB作为系统总线。● APB(Advanced Peripheral Bus)主要特点是简单、低速、低功耗。它适用于低功耗、低速的外部设备。采用AMBA总线系统,可以充分发挥ARM的性能优势,提高系统的数据吞吐量。1.2 ARM微处理器系列简介由于ARM公司成功的商业模式,使得ARM在核市场上取得了巨大成功,基于ARM技术的微处理器应用约占据了32位RISC微处理器75%以上的市场份额。目前广泛应用的ARM微处理器包括ARM7、ARM9、ARM9E、ARM10E、SecurCore、Xscale、StrongARM以及ARM11等几个系列。它们的架构特点见表1-1所列。表1-1 ARM微处理器系列各大微处理器生产厂商利用ARM公司的IP授权,为ARM核定制了各种各样的外围设备,形成了形态各异的ARM微处理器。下面简要介绍ARM主要生产厂商推出的ARM器件。1.2.1 Actel公司可编程器件Actel公司是单芯片FPGA解决方案的领导性厂商。它成立于1985年,全球雇员超过570人。它的产品涉及低功耗FPGA、混合信号FPGA、开发软件、系统解决方案等。产品市场包括便携设备、医疗、军事技术、航空航天、汽车电子等各个方面。2005年,ARM和Actel签订了一项具有里程碑意义的协议,即ARM公司将ARM微处理器作为“软”IP授权给Actel公司,将原来的ARM核针对FPGA器件进行了适™™当的优化,推出世界上第一款面向FPGA应用的ARM核——Cortex―M1。Cortex―M1的最高工作频率可以达到 68 MHz ,并且可以用相对较少的资源在 FPGA 中实™现。Cortex―M1支持Thumb指令集,使得原来用Thumb指令集开发的程序可以很™™方便地移植到Cortex―M1上。另外Cortex―M1的AHB总线接口让设计者可以方便地为ARM核添加外设。图1-1 Cortex―M1™除了 Actel 和 ARM 为 Cortex―M1 提供广泛的工具支持(如 SmartDesign、™CoreConsole、SoftConsole和RealView)外,Cortex―M1还有着广泛的第3方工具™支持,包括编译器、调试器、实时操作系统支持。Cortex―M1有着以下几方面的特性。● 专门为在FPGA中实现做了优化,使得在FPGA中实现时能够兼顾速度和资源。● 支持所有的Thumb指令集。● 32比特位宽的3级流水线结构。● 存储接口和AHB总线接口分离,提高了数据访问速度。● 用户能够访问所有Cortex―M1的I/O接口。● Actel可编程器件用户无需为ARM核付任何知识产权费用。● 集成实时调试和JTAG接口。有关Cortex―M1更详细的信息,读者可以查阅Actel的官方网站http://www.actel.com。1.2.2 ATMEL公司微控制器ATMEL公司是是世界上高级半导体产品设计、制造和行销的领先者,是非易失性存储器技术的创建之父,产品包括了微处理器、可编程逻辑器件、非易失性存储器、安全芯片、混合信号及RF射频集成电路。通过这些核心技术的组合,ATMEL生产出了各种通用目的及特定应用的系统级芯片,以满足当今电子系统设计工程不断增长和演进的需求。在ATMEL公司的产品中,我们比较熟悉的要数AVR单片机和8051单片机了。ATMEL的AT91SAM系列32位ARM微控制器是为系统设计、用户界面管理等应用而开发的,它具有低功耗、易于使用的特点。这个系列提供了各种不同的存储器容量和片上功能,以确切地满足各种高性能应用的需要。目前AT91SAM已经在POS终端、工业控制、PC机外设、玩具和手机上得到了广泛应用。表1-2列出了ATMEL公司几个基于ARM的微控制器的型号,要查看更多的ATMEL公司ARM微控制器的信息,请读者登录ATMEL公司的官方网站http://www.atmel.com查询。表1-2 ATMEL公司部分基于ARM的微控制器ATMEL的DIOPSIS系列是面向视屏、语音应用领域推出的SOC芯片。这个系列的芯片中集成了一个浮点DSP微处理器和一个ARM926EJ―S核,兼具ARM和DSP微处理器的优点使得它能够同时满足和控制大量数值运算的需要。DIOPSIS提供了丰富的外设,如USB、Ethernet MAC、4xSSC、3xUSART、2xSPI、Time Counter、2xTWI和2xCAN等。它每秒钟可进行10亿次的浮点运算和220 M的指令操作,浮点的运算精度可以达到40个浮点位。此外它还有一套强大的开发工具和一个完整的库。1.2.3 Intel公司XScale微处理器当年ARM推出嵌入式核芯之后,DEC公司获得许可并在此基础上开发出增强版的StrongARM微处理器。后来DEC公司的半导体部门被Intel公司收购,而其余部分则被Compaq公司并购,自此StrongARM 便成了 Intel 公司的产品。此后Intel 公司围绕着StrongARM开发出了一系列的产品。ARMV5TE问世之后,Intel公司又以此为基础定义了自己的XScale系统结构,并开发出采用XScale内核的PXA―250、“I/O微处理器80200”等芯片。由于XScale系统结构的核是基于更新版本的ARM系统结构的,又与StrongARM向下兼容,因此Intel公司在2004年以后就停止生产StrongARM,而把相应的研发和生产能力都转到了XScale方面,目前XScale已经在PDA领域占有举足轻重的地位。在指令集结构上,XScale仍然属于ARM的“V5TE”体系,与ARM10系列内核相同,但它拥有与众不同的7级流水线,除了无法直接支持Java解码和V6 SIMD指令集外,各项性能参数与ARM11核心都比较接近。再结合Intel在半导体制造领域的技术优势,XScale的性能获得了极大提升,它的最高频率可达到1 GHz,并保持ARM体系贯有的低功耗特性。加上丰富的软件支持、强大的扩展能力和附属功能,以及Intel在产业界的巨大影响力, XScale被广泛应用于Pocket PC和Palm平台的PDA产品中,成为该领域的事实主宰者。其他半导体厂商(如索尼、三星)基于ARM的解决方案虽然也有一定的市场,但在该领域完全不是Intel XScale的对手,连曾依赖Dragonball微处理器成为霸主的摩托罗拉也都无力反击。到目前为止,Intel已推出PXA25x、PXA26x和PXA27x三代XScale架构的嵌入式微处理器。PXA25x采用0.18 µm工艺制造,拥有32 KB指令缓存和32 KB数据缓存,并具有专用于多媒体数据流的2 KB缓存。PXA25x整合的功能极为强大,可支持4 Bank结构、最多256 MB容量的100 MHz SDRAM内存或闪存,采用16、32位宽度总线连接;支持双Bank结构的PCMCIA、CF卡控制器和MMC/SD存储卡控制器;整合LCD显示控制器,最多可支持16位色彩显示,且具有一定的几何填充、矩形单元变换等硬件加速功能;支持AC97音频、USB、蓝牙和红外接口等等。PXA25x系列有200 MHz、300 MHz、400 MHz 3个频率的版本,芯片封装尺寸只有1717mm。由于微处理器自身具备强大的扩展功能, PDA厂商的设计工作变得很简单。目前PDA或智能手机中90%以上的功能都是由微处理器直接整合,厂商并不需要进行额外的设计,这就是高集成度带来的好处。相比之下,PXA26x系列只能算是PX25x的扩展,两者的核心设计以及功能扩展完全相同,不同之处在于,PXA26x系列在微处理器中直接集成了闪存。一个完整的PXA26x产品由1枚处理核芯和1到2枚闪存芯片共同组成,对应16 MB、32 MB的闪存配置方案,这种方式分别比传统的分离封装方案节省了56%和65%的空间占用。不过,板载闪存也将占用6个Bank中的一个,若该系统集成了4Bank、256 MB容量的SDRAM,那么仅剩1个Bank可供给CF/PCMCIA插槽或其他类似的设备使用。但总的来说,PXA26x所拥有的高集成度让它非常适合追求便携性的PDA、智能手机的切实需要,推出之后获得市场的热烈反响,目前仍然还占据着主流地位。PXA27x系列是Intel目前的主打产品,它的发布时间是在2004年4月份。PXA27x最大的改进就是采用0.13 µm制造工艺,时钟频率提升至624 MHz的高水平。其次,PXA270x首次引入Intel的无线MMX技术,它是一套64位的SIMD指令集,这些指令集可有效增强视频、3D图形、音频以及其他SIMD元素的处理效率,显著改善了多媒体处理性能。1.2.4 NXP公司微控制器NXP是一家成立于2006年的公司,总部在荷兰,它的前身是飞利浦公司的半导体部门。该企业涉足半导体行业的历史超过50年,是半导体行业的领先企业。它主要提供各种半导体产品与软件,为移动通信、消费类电子、安全应用、非接触式付费与连线,以及车内娱乐与网络等产品带来更优质的感知体验。NXP的ARM7微控制器系列包括LPC2100系列、LPC2200系列、LPC2300系列、LPC2400系列和LPC2800系列。它们的微处理器核都是ARM7TDMI―S。表1-3 NXP公司部分ARM微控制器每一个系列的产品都配备了不同的内存和外设,使得设计者可以根据系统的需要选择最合适的型号。1.2.5 三星公司微处理器三星公司是韩国的电子企业,它从创办最初的小出口生意开始发展到如今,已经成为世界上电子行业的领导者。它的产品覆盖了机顶盒、通信系统、存储设备、半导体等各个方面。三星的ARM9系列微处理器速度从200 MHz到533 MHz,是目前世界上最快的移动处理芯片,也是世界上唯一集NAND FLASH以及MSDRAM于一身的芯片。表1-4中列出了三星公司的ARM微控制器产品。表1-4 三星公司的ARM微控制器1.3 ARM嵌入式系统概述嵌入式系统(Embedeled System)就是可以嵌入到其他系统中的微处理器应用系统。它本身是一个可以独立执行的系统。以ARM为核心微处理器的嵌入式系统我们称之为ARM嵌入式系统。ARM嵌入式系统是一个软硬件结合的综合性系统,嵌入式系统的软件开发,常常与硬件结构有着直接的联系。1.3.1 嵌入式系统硬件基础因为嵌入式系统的硬件结构与软件开发有着直接的联系,所以任何从事嵌入式系统开发的人员都必须熟悉嵌入式系统的硬件体系结构。嵌入式系统的硬件一般由ARM微处理器和外围设备构成。1. ARM微处理器ARM微处理器是嵌入式系统的核心设备,目前为止它包括嵌入式微处理器、嵌入式微控制器、嵌入式DSP、嵌入式片上系统几类,其中大部分ARM芯片属于嵌入式微控制器,也有部分SOC芯片上同时集成了ARM核和DSP。嵌入式微处理器是指功能强大的CPU,本质上与PC机上的CPU(如Intel的80x86系列和Motorola的68x系列)没有差别。所不同的是嵌入式系统的CPU在工作温度、抗电磁干扰、可靠性方面都做了改进,使其能够满足特定的应用要求。在应用中,如果要使嵌入式微处理器成为完整的嵌入式系统,还需要ROM、RAM、总线接口和其他大量外围器件。但这样庞大的应用系统通常具有较大的体积和功耗,降低了系统的可靠性。因此,采用嵌入式微处理器的系统通常出现在对体积和功耗要求不高的工业控制领域。目前常见的嵌入式微处理器有PowerPC、MIPS、ARM等。嵌入式微控制器(MCU)与嵌入式微处理器类似,只是嵌入式微控制器是专门针对嵌入式系统而设计的,它将整个系统集成到一块芯片中。它通常是以某种微处理器内核为核心,芯片内部集成了ROM、RAM、总线、定时器、看门狗等各种必需的功能和外设,因此嵌入式微控制器通常又称为单片机。它是当前嵌入式系统应用的主流。为了最大程度地满足各种应用系统的需求,一般某种系列的微控制器具有多种衍生产品,每种衍生产品都具有相同的微处理器内核,但有不同的外设配置和封装。因此嵌入式微控制器的种类非常繁多。本书后面几章实例中用到的ARM芯片就属于这一类。嵌入式DSP中的CPU是针对各种离散时间数字信号处理设计的。由于数字音频和视频编解码、数字滤波等运算中要用到大量浮点操作和累乘操作,如果用一般的微处理器去完成这些运算,一个累乘操作需要有两条以上的运算指令去完成。嵌入式DSP中的CPU有专门针对这些数字信号处理运算的指令,可以让累乘操作等一些数字信号处理中常用到的运算在很短指令周期内完成,大大提高了处理速度。嵌入式DSP芯片领域的两大霸主是Motorola公司和TI(德州仪器)公司,它们的DSP芯片在市场上占有相当大的份额。嵌入式片上系统是指在单个芯片上集成微电子应用所需的全部系统功能。它的发展得益于以下两个方面。● 半导体制造工艺的进步。由于半导体制造工艺已经发展到深亚微米阶段,单颗芯片上集成的电路规模越来越大,使得在一颗芯片上集成整个系统成为可能。● IP核复用。IP核复用使设计的时间大大缩短,使芯片设计团队有能力在有限的开发时间内将系统的各个功能模块集成到一起。片上系统(SOC-System On Chip)是当前VLSI的发展趋势,也是21世纪集成电路技术的主流。SOC芯片中典型的有TI公司推出的Davinci系列芯片,它集成了ARM核、DSP核、网络接口、USB接口等众多模块,只需要少量外设就可以满足视频、音频、网络等各种应用的需要,使得一个复杂的嵌入式系统可以在较小的体积内实现。2. ARM嵌入式系统外围设备图1-2表示的是一个典型的嵌入式系统组成,除了ARM微处理器以外,它还包括LCD、键盘接口、存储设备、通信接口、AD/DA等外设。根据应用场合的不同,嵌入式系统的外围设备千差万别。例如用于视频监控设备的嵌入式系统要包括视频接口;用于音频播放的嵌入式系统中要包括音频接口。由于外设种类千差万别,我们不可能一一讲解,这里只介绍两类使用最频繁的外设,存储器和通信接口。图1-2 典型嵌入式系统组成(1) 存储器存储器是几乎每个嵌入式系统都必须用到的外设。有些人可能有些疑问,既然每个嵌入式系统都必须用到,为什么不在每块微控制器芯片中加入存储器,这样不就可以节省外设数量吗?不这样做的原因是微控制器的制造和存储器的制造有着完全不同的工艺。如果用制造微控制器的工艺去制造存储设备,芯片的资源会消耗很多,代价很昂贵,而现在的半导体制造技术还无法很好地在同一块芯片上进行两种工艺制造。这也是为什么绝大部分微控制器上所包含的存储空间都非常少,一般都在1 MB以下。为了兼顾性能和成本,嵌入式系统的存储结构一般包含Cache(缓冲存储器,缓存)、主存和辅助存储器,如图1-3所示。图1-3 嵌入式系统中的存储器结构Cache是一种访问速度比较快的存储器阵列,它通常用来存储最近一段时间微处理器访问概率最大的代码和数据。当需要再次访问这些数据的时候,微处理器可以直接从Cache中读取,而不是从主存中读取,这样就减少了由于主存访问速度造成的存储区访问瓶颈,提高了系统的性能。Cache根据用途可以分为数据Cache、指令Cache、混合Cache等,一般只有在高端的微处理器内才会有集成Cache。主存是指速度相对于Cache较慢,但是ARM微处理器能够直接访问的寄存器,直接访问是指读取数据不需要作为中介的访存控制器。由于片内主存的空间一般比较小,根据系统需要一般还要加上片外主存。而辅助存储器是指ARM微处理器不能直接访问的存储设备,通常用来存储数据量很大的程序代码和信息。存储器芯片生产厂家中比较有名的有三星、SST等。目前的存储器密度可以做到在单颗存储芯片上实现上百兆字节的存储空间。存储器的种类也多种多样,包括ROM、EEROM、SRAM、DRAM、Nand-Flash、Nor-Flash等。这些不同的存储设备在接口上、存储容量上、存取速度上各有优势,在实际应用中往往根据特定要求进行选择。例如用于存储指令的存储设备,一般在系统启动时将指令加载到内存的过程中才会访问到。对于这种存储设备,在系统设计中首先考虑的不是它的访问速度,因此常常选择串行接口的EEROM作为指令的存储设备。(2) 通信接口通信接口一般也是嵌入式系统所必不可少的。对于一些简单的通信接口,例如UART、IIC、SPI等,很多微控制器都有集成。对于一些更加复杂的通信接口,例如Ethernet、USB、红外、蓝牙等,一般用专门的通信接口芯片来实现。例如对于USB接口,现在市场上有USB―UART桥接芯片,通过采用这种桥接芯片,访问USB设备就像访问UART接口一样简单。图1-4是USB―UART桥接芯片的应用示意图,嵌入式系统和PC主机通过USB接口连接,对于微控制器来说,访问PC主机就像访问UART接口一样;而对于PC主机来说,桥接芯片为操作系统配备了专门的驱动,只要调用相应的API函数就可以访问桥接芯片。图1-4 USB―UART桥接芯片在系统中应用对于其他通信接口,市场上也有各式各样的接口芯片提供,这里不再赘述。部分比较高端的微触控制器和SOC芯片已经集成了某些通信接口,例如USB接口、Ethernet等。1.3.2 嵌入式系统软件基础嵌入式系统与普通的PC机相比,资源相对缺乏,速率相对较慢,因此嵌入式系统的软件开发对程序员提出了更高的要求,除了要考虑软件的稳定性之外,还要考虑软件占用的系统资源、软件的执行效率等一系列因素。1. 嵌入式系统软件的特点嵌入式系统软件是指应用在嵌入式系统中的各种软件。在嵌入式系统的发展初期,软件的种类很少,规模很小,基本上是硬件的附属品。但随着嵌入式系统的发展,嵌入式系统软件的规模和种类都得到了较大的发展,形成了一个完整独立的体系。作为嵌入式系统的一部分,嵌入式系统软件有着它自身的一些特点。(1) 以硬件为平台,与硬件紧密相连随着高级编程语言的出现,系统工程师在从事系统开发的时候只需要关注软件,而不需要去关心底层硬件的情况。但是对于从事嵌入式系统开发的工程师而言,运用高层次的语言(如C++,Java)进行系统开发并不意味着可以对底层硬件一无所知。相反的,嵌入式系统上的软件开发往往要求开发人员对系统的硬件结构、微处理器架构及微处理器指令集有着深入的了解。(2) 以有限的系统资源为约束嵌入式系统开发的一个很重要的目标是缩减成本。缩减成本也就意味着要用有限的系统资源来实现特定的系统目标。以实现一个汉字识别系统为例,首先要考虑微控制器芯片的成本,因此,在设计软件的时候我们就要考虑软件的实现效率。而在选取存储芯片的时候,并不是存储量越大越好,而是在尽可能满足系统需求的情况下,选取尽可能小的存储容量。因此嵌入式系统软件也要求尽量精简,一般软件都在几兆字节以内实现。如果是采用嵌入式系统的话,需要对系统进行裁剪。2. 嵌入式系统软件的分类嵌入式系统软件可以使用裸机程序,也可以包含操作系统。具体采用哪种形式开发ARM嵌入式系统,取决于系统的规模和任务的数量。嵌入式系统软件主要分为以下两类。(1) 无操作系统对于一些比较简单的嵌入式系统,由于硬件的配置比较低,而且系统的应用范围也比较有限,对系统软件的支持要求不是那么迫切。对于这部分嵌入式系统,软件一般直接搭在硬件上,没有专门的操作系统,这种情况通常被称为裸机程序。对于这类操作,有两种实现方式,即循环方式和前后台方式。一般一个嵌入式系统要同时处理好几种工作,例如一个手机终端,它要不断地扫描按键输入,根据需要刷新屏幕,还要不断地检测通信接口。对于这种多任务的情况,我们一般可以用一种循环的方式来实现。循环方式的优点是简单、直观、开销小。它不需要任务之间的调度和切换,因此系统开销非常小。但是它的缺点也是非常明显的,就是无法处理异步时间,无法实现实时控制。(2) 带操作系统当系统的功能比较简单时,可以用循环的方式来解决不同任务之间的调度,但是当系统规模比较庞大,需要处理的任务较多时,用简单的循环方式来解决就有点力不从心了。假设我们要设计一个系统,它需要的基本功能有扫描按键输入、通信接口输入、屏幕显示等,这些功能之间的调度不是通过简单的循环就可以解决,因为有些任务需要实时处理。例如扫描按键的任务,如果没有及时处理就可能给用户带来按键不灵敏的感觉;如果通话时音频编解码没有及时得到处理,用户的通话就会不顺畅。因此不同的任务之间需要有优先级关系,部分高优先级的任务一定要及时得到处理。但是高优先级的任务也不能无限制地占据资源,例如音频编解码是最高优先级的任务,倘若在通话期间编解码程序始终占据着CPU,那么其他任务,例如按键输入就得不到处理,给用户造成死机的感觉。因此当系统规模变大,任务数量变多时,就需要专门的调度算法和系统资源管理程序,这个时候我们就需要借助操作系统。操作系统的优势主要表现在以下几个方面。● 有了操作系统,程序员就可以将注意力集中于系统某个功能本身,一些与底层硬件相关的操作都可以交由操作系统来完成。例如当需要内存时,只要借助操作系统提供的函数就可以找到相应的内存,而不需要关心到底应该调用哪块内存,是否会和其他程序调用的内存冲突等一系列令程序员头疼的问题。● 借助操作系统,程序员只需要根据不同的系统内核,设定各种任务的优先级和其他相关参数,就可以保证任务之间的顺利调度。这使得程序员可以很方便地添加或者去除系统的部分模块。● 操作系统一般还提供完整的初始化程序和错误处理机制。但是对于嵌入式应用工程师来说,使用操作系统并不是意味着就可以对底层硬件和操作系统内核一无所知。相反的,由于硬件平台的千变万化,嵌入式操作系统一般需要做适当的修改才能正常运行在特定的硬件平台上。另外操作系统在调试上也需要相当的技巧和经验。目前常见的嵌入式操作系统有µC/OS、嵌入式Linux、WinCE、VxWorks,在本章的后面部分,将对这几种嵌入式操作系统进行更详细深入的介绍。3. 嵌入式系统软件的编程语言由于嵌入式系统较小的系统结构规模和有限的系统资源,在系统规模较小和资源相对紧张的嵌入式系统中,常采用汇编语言来编程。但是在系统规模较大的情况下,汇编语言显然是难以胜任的。而且汇编语言开发的系统软件还有很大的弱点,即移植性差,难以维护。因此高级编程语言渐渐进入了嵌入式系统软件的设计领域,嵌入式系统常用的高级语言有C/C++、Ada等。嵌入式系统中的高级语言与一般软件开发的高级语言相比有以下几个显著的特点。● 具备和汇编语言的接口。在高级语言中可以嵌入一段汇编程序,或者用汇编程序编写一个独立的外部进程,然后在高级语言中调用这段进程。高级语言和汇编语言的接口使得部分对性能要求很高的代码可以用汇编语言来编写,而对性能要求不高的代码则用高级语言来编写,既节省了开发时间,又能够最大可能地满足系统性能的需求。● 对系统资源的直接访问。在高级语言中可以通过指针对系统资源直接寻址,也可以通过Peek、Poke等操作来完成存储器寻址。● 更强的位操作需求。由于ARM微处理器中基本都具备逻辑运算功能,利用移位或者位逻辑运算能够很大程度地改善程序性能。嵌入式系统的程序中经常会用到位操作,因此面向嵌入式系统的高级语言应该具备较强的位操作功能。C语言有较强的位操作功能,在C++中还可以通过定义“bitfield”结构来实现更加强大的位操作功能。● 中断和异常事件处理。中断和异常事件处理是嵌入式系统一个重要的特点。在高级语言中可以通过中断服务函数来实现。中断服务函数的定义方法与一般函数大致相同,不同的是中断服务函数在定义过程中,一般加入特定的关键字来告诉编译器中断服务类型、中断号等信息。4. 嵌入式软件开发基本流程由于嵌入式系统是一个系统资源极度受限制的系统,因此直接在嵌入式系统硬件上进行嵌入式系统软件开发是行不通的。一般的做法是先在PC机上进行开发,然后通过交叉编译和连接,生成在目标系统上可以运行的二进制代码,最后将二进制代码下载到嵌入式系统的程序存储空间中。当嵌入式系统启动时,启动程序将自动从程序存储空间读取可执行代码,从而启动嵌入式系统。图1-5是嵌入式系统软件开发的一般流程。首先程序员在PC机上进行程序开发,即编写源代码,程序可以用汇编语言编写,也可以用C/C++等高级语言编写,还可以用汇编语言和C/C++语言的混合体进行编写。当程序开发完成后,再用编译器或者汇编器将源代码编译成目标文件。随后链接器将各个目标文件链接成一个目标文件,即可重定位程序。最后,定址器再对可重定位程序进行重定址,产生一个可以在嵌入式系统上运行的可执行二进制映像文件。上述的源代码开发、编译、连接、重定址都在PC机上完成。图1-5 嵌入式系统软件开发流程编译器或者汇编器将源代码文件编译成目标文件,这个目标文件的结构通常是按照标准格式定义的,例如COFF和ELF。它们通常包含几个段,每个段包含一块或者几块代码或者数据。例如所有代码被收集到text段中,已经初始化的全局数据被收集到data段中,未被初始化的全局变量被收集到bass段中。目标文件中还有一个符号表,记录了源文件引用的所有变量和函数名以及它们的位置。链接器是把目标文件以一种特殊的方式组合起来,输出一个和原目标文件格式相同的目标文件。新目标文件的text段包含了程序的代码,data段和bass段包含了程序的变量。链接器除了合并各个目标文件的代码段和数据段以外,它的另外一个重要作用是解决原目标文件中相互之间跨文件变量引用的问题。因为在嵌入式系统程序进行开发的过程中,为了使程序有很好的可读性,并同时能对文件进行维护,通常把不同功能的模块写在不同的文件里,然后对这些文件分别编译,使其生成目标文件。这些目标文件之间可能存在跨文件变量引用的问题,由于只对一个文件进行编译是无法知道一个在其他文件中定义的变量的情况的,因此编译器先将它们保存在符号表中,在链接时再解决这些引用问题。图1-6是链接时解决符号引用的一个例子。在文件b.c中定义了一个全局变量counter,在文件a.c中需要访问这个变量,所以用extern关键字告诉编译器这个变量的定义在其他文件中。当编译器编译文件a.c时就先将变量符号counter保存到符号表中,在链接器将两个文件分别产生的目标文件链接起来时,再解决变量counter引用的问题。图1-6 链接时的符号应用问题举例由于不同的系统对于存储空间的地址分配都不一样,因此要使程序能够正确地寻址,还要对链接后产生的程序进行重定址。这部分工作由定址器来完成。在有些工具中,定址器和连接器是安装在一起的,所以有时我们看到只需要编译和链接就可以生成可执行代码。当程序下载到目标系统上后,一般还需要对程序进行调试。目标系统的调试需要通过在线仿真器(In-Circuit Emulator,ICE)或常驻在目标上的调试监控器(Debug Monitor)来实现。由于ARM芯片已经嵌入了在线仿真器的功能,因此嵌入式系统开发工程师可以通过JTAG接口直接进行调试,省去了昂贵的在线仿真器(ICE)。1.3.3 常见嵌入式系统简介由于嵌入式系统在消费类电子产品,以及航空航天、军事技术等方面的广泛应用,嵌入式操作系统的发展也出现了百花齐放的局面,下面介绍几个应用较广的嵌入式操作系统。1.嵌入式实时操作系统是“Micro-ControllerOperationSystem”的缩写,由于其源代码开放、内核小、实时性好等突出优点,能够被移植到各种微处理器和控制器上。是的升级版本,也是目前被广泛应用的版本。是由多任务、多中断和高效实时内核组成的一个有机整体。应用系统在实时内核的统一管理下协调工作,能够高效地实现任务切换、任务调度、任务间通信、同步、互斥、实时时钟管理、中断管理等功能。作为一个应用广泛的实时操作系统,具有如下优点。● 公开源代码。公开的源代码使得系统在商业应用中具有明显的价格优势。● 可移植性好。绝大部分的源代码是用移植性很强的ANSIC编写的,只有最底层和微处理器硬件相关的部分是用汇编语言写的。● 可裁剪。如果只使用部分功能,可以通过条件编译来裁减的代码。● 抢占式。完全是占先式的实时内核。这意味着总是运行全部就绪条件下优先级最高的任务。● 多任务。可以管理64个任务,目前系统保留了8个。● 可确定性。的全部函数调用与服务的时间是可知的,系统服务的时间不依赖于应用程序任务的多少任务栈,每个任务有自己单独的栈。● 中断管理。中断可以使正在执行的任务暂时挂起。如果优先级更高的任务被该中断唤醒,则高优先级的任务在中断嵌套全部退出后立即执行。中断嵌套层数可达255层。2. 嵌入式操作系统LinuxLinux最初由芬兰赫尔辛基大学的Linus Torvalds创建,他把Linux建立在一个基于PC机上运行的名为minix的UNIX操作系统之上,1991年首次公布于众。Linux允许大家免费地运用系统源代码,并且鼓励他们对其进行开发,这使Linux在短期内成为一个成熟稳定的操作系统。嵌入式操作系统Linux有很多显著的优点。● 源代码开放,成本低,并且有着丰富的软件资源。由于嵌入式系统的硬件千差万别,往往需要针对应用系统进行定制,因此源代码对于开发者来说是非常重要的。由于有丰富的的软件资源,开发基于Linux的程序往往可以借鉴已有的类似的自由软件,而不需要从头做起,节省了开发时间。Linux的源代码开放,无需版权税,在产品成本上有很大的优势。● 裁剪性。由于Linux系统高度的模块化,非常灵活,可以根据需要进行定制,以适应产品的需要。● 完善的通信、图形和文件管理功能。Linux提供完善的网络通信机制。有Qt、MiniGUI等嵌入式GUI,支持ext2、FAT、ROMFS等多种文件系统。驱动程序丰富。Linux支持如x86、ARM、MIPS、ALPHA等体系结构,目前Linux系统已经被移植到各种平台上。3. 嵌入式操作系统WinCE在PC机操作系统领域,微软公司是市场的领导者和开拓者,但是在嵌入式操作系统领域,微软公司并不是早期的开拓者。WinCE是微软发布的面向嵌入式领域的操作系统。到目前为止WinCE已经发展到WinCE6.0。WinCE取得的巨大成功,使微软在嵌入式操作系统领域获得了足够的市场份额和开发者的认可。WinCE操作系统具有以下特点。● 具有灵活的电源管理功能,包括睡眠/唤醒模式。● 使用了对象存储(object store)技术,包括文件系统、注册表及数据库。● 具有很多高性能、高效率的操作系统特性,包括按需换页、共享存储、交叉处理同步、支持大容量堆(heap)等。● 拥有良好的通信能力。广泛支持各种通信硬件,亦支持直接的局域网连接以及拨号连接,并提供与PC机、内部网以及Internet的连接,还提供与Windows 9x/NT的最佳集成和通信。● 支持嵌套中断。允许更高优先级别的中断首先得到响应,而不是等待低级别的ISR完成。这使得该操作系统具有嵌入式操作系统所要求的实时性。● 更好的线程响应能力。对高级别IST(中断服务线程)的响应时间上限的要求更加严格,在线程响应能力方面的改进,帮助开发人员掌握线程转换的具体时间,并通过增强的监控能力和对硬件的控制能力帮助他们创建新的嵌入式应用程序。● 256个优先级别。可以使开发人员在控制嵌人式系统的时序安排方面有更大的灵活性。● Windows CE的API是Win32 API的一个子集,支持近1500个Win32 API。有了这些API,足可以编写任何复杂的应用程序。当然,在Windows CE系统中,所提供的API也可以随具体应用的需求而定。4. VxWorks嵌入式操作系统VxWorks操作系统是美国Wind River公司在1983年设计开发的一种实时操作系统(RTOS)。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通信、军事演习、弹道制导、飞机导航等。在美国的F―16、F/A―18战斗机、B―2隐形轰炸机和爱国者导弹上,甚至连1997年7月在火星表面登陆的火星探测器,2008年5月在火星表面上登陆的凤凰号火星探测器上也都使用到了VxWorks。WRS公司还提供主机上的集成开发环境 Tornado,开发者通过Tornado 来编辑、编译、连接和存储实时代码,但是实时代码的运行和调试都在VxWorks上进行。1995 年开发出的 Tornado,赢得该年度电子设计新闻的“嵌入式开发软件创新奖”。VxWorks的突出特点是可靠性、实时性、可裁剪性。它是目前嵌入式系统领域中使用最广泛、市场占有率最高的操作系统。它支持多种微处理器,如x86、PowerPC、MIPS等。1.4 本章小结本章首先介绍了ARM微处理器的基本概念和特点,使读者对ARM微处理器有个大致的了解。ARM微处理器实际上是指包含ARM微处理器核的一系列微处理器芯片。各大生产厂商在取得ARM公司的IP授权之后,为ARM核定制了各种外设,从而形成了种类繁多的ARM系列。本章的第2部分介绍了市场上主要的ARM微处理器,这些微处理器广泛应用于各种日常电子消费品中。本章的第3部分从嵌入式系统的角度对ARM进行了介绍,一个普通的嵌入式系统设计过程通常包括嵌入式系统的硬件设计和软件设计。硬件设计需要搭建ARM微处理器的主要工作单元,例如电源、存储器等。软件设计根据系统的需要可以选择是否采用嵌入式操作系统。学习了本章之后,有兴趣的读者可以试着去了解身边某一个电子设备的主芯片是否采用的ARM微处理器。如果是,可以查看一下该ARM微处理器的型号,并且试着思考为什么要采用这一款微处理器。1.5 课后习题1. 填空题(1) AMBA(Advanced Microcontroller Bus Architecture)规范定义了三种不同类型的总线,它们分别是_____、_____和________。(2) ARM微处理器有两套指令集,它们分别是_______和_______。(3)嵌入式开发环境中,链接器的作用是___________。(4)嵌入式实时操作系统可以管理的任务数量最多可以达到_________个,目前系统保留了___________个。(5)微软发布的面向嵌入式领域的操作系统是__________,该嵌入式系统的进程具有_________个优先级别。2. 选择题(1) ARM嵌入式系统开发环境中,将高级语言源代码文件转换成汇编代码文件的程序是_________。A. 编译器B. 链接器C. 定址器D. 汇编器(2)嵌入式系统的中断嵌套层数可达__________层。A. 127B. 255C. 63D. 64(3) ARM和Actel通过将原来的ARM核针对FPGA器件进行了适当的优化,推™™出世界上第一款面向FPGA应用的ARM核——Cortex―M1,Cortex―M1的流水级数为______。A. 3B. 4C. 5D. 7(4) Intel公司推出的XScale微处理器核具有________级流水结构。A. 3B. 4C. 5D. 7(5)以下不是嵌入式操作系统VxWorks特点的是________。A. 可靠性B. 实时性C. 可裁剪性D. 源代码开放3. 问答题(1) 试比较ARM7和ARM11之间的异同?(2)操作系统有哪些优点?(3) Linux嵌入式操作系统的主要特点有哪些?

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载