ARM处理器开发详解:基于ARM Cortex-A8处理器的开发设计(第2版)pdf/doc/txt格式电子书下载
本站仅展示书籍部分内容
如有任何咨询
请加微信10090337咨询
书名:ARM处理器开发详解:基于ARM Cortex-A8处理器的开发设计(第2版)pdf/doc/txt格式电子书下载
推荐语:
作者:刘洪涛,甘炜国
出版社:电子工业出版社
出版时间:2014-06-01
书籍编号:30467832
ISBN:9787121231612
正文语种:中文
字数:88400
版次:2
所属分类:教材教辅-大学
版权信息
书名:ARM处理器开发详解:基于ARM Cortex-A8处理器的开发设计(第2版)
作者:刘洪涛 甘炜国
ISBN:9787121231612
版权所有 · 侵权必究
前言
随着消费群体对产品要求的日益提高,嵌入式技术在机械器具制造业、电子产品制造业、信息通信业、信息服务业等领域得到了大显身手的机会,并被越来越广泛地应用。ARM作为一种32位的高性能、低成本的嵌入式RISC微处理器,已得到最广泛的应用。目前,Cortex-A系列处理器已经占据了嵌入式处理器大部分的中高端产品市场,尤其是在移动设备市场上,几乎占据了绝对垄断的地位。
伴随着Android系统的发展,ARM也越来越被大家所了解和接受,企业对ARM技术人才的需求也越来越大。各高校也已经认识到了这一点,并设置了相关课程。但建立一套完整的嵌入式教学课程,是一项非常复杂的工作,尤其是如何和企业需求相结合,更是高校所需要面临的重大问题。目前市场上的嵌入式开发相关书籍大多是针对研发人员编写的,并不太适合高校教学使用。北京华清远见科技信息有限公司长期以来致力于嵌入式培训,为市场输送了大量的嵌入式人才。为了普及嵌入式技术,公司计划着手针对高职院校的特点编写一套嵌入式教材。教材的内容涵盖ARM体系结构、接口技术、Linux操作系统、Linux C语言及Linux应用开发实训。本书重点讲解ARM体系结构及接口技术部分。
在学习本书之前,读者需要具有数字电路、C语言等基础知识。通过本书的学习,读者可以掌握ARM体系结构和基于Cortex-A8核心的S5PV210处理器常见硬件接口的开发方法。
本书以S5PV210处理器为平台,介绍了嵌入式系统开发的各个主要环节。本书侧重实践,辅以代码加以讲解,从分析的角度来学习嵌入式开发的各种技术。本书使用的工具是FS-JTAG仿真器。FS-JTAG是华清远见研发中心为了推进ARM Cortex-A8处理器的教学,提高合作企业及合作院校广大技术爱好者和培训学员的学习效率,研发出的低价的可以支持Cortex-A8的ARM仿真器。
本书将嵌入式软/硬件理论讲解和嵌入式实验实践融合在一起,全书共16章。其中,第1章为嵌入式系统基础知识,介绍了嵌入式系统的组成及嵌入式开发概述。第2章为ARM技术概述,讲解了ARM体系结构、应用选型及编程模型等。第3章为ARM微处理器的指令系统,重点介绍了ARM指令集。第4章为ARM汇编语言程序设计,主要介绍了GUN ARM汇编伪操作、GNU ARM汇编支持的伪指令、汇编语言与C语言的混合编程。第5章为ARM开发环境搭建,包括Eclipse环境介绍、FS-JTAG仿真器使用等。第6章为GPIO编程,介绍了GPIO的概念及S5PV210的GPIO操作方法。第7章为ARM异常及中断处理,介绍了ARM处理器的异常处理及S5PV210的中断控制器工作原理。第8章为串行通信接口,介绍了串行通信的概念及S5PV210串口的操作方法。第9章为存储器接口,介绍了NAND Flash存储器的操作方法。第10章为定时器与RTC,介绍了定时器的工作原理及S5PV210定时器接口的操作方法。第11章为A/D转换器,介绍了A/D转换器的工作原理及S5PV210 A/D控制器的操作方法。第12章为DMA(PL330)控制器,介绍了ARM公司最新的PL330DMA控制器的开发方法和PL330指令。第13章为LCD接口设计,介绍了S5PV210的LCD控制器的工作原理。第14章为CAMIF接口技术,结合OV9650摄像头,介绍了S5PV210 CAMIF控制器的开发方法。第15章为SPI接口,结合CAN控制器,介绍了SPI总线协议和S5PV210 SPI控制器开发方法。第16章为I2C接口,结合EEPROM存储器,讲解了I2C协议和S5PV210的I2C控制器开发方法。
本书的出版要感谢华清远见嵌入式培训中心的无私帮助。本书的前期组织和后期审校工作都凝聚了培训中心几位老师的心血,他们认真阅读了书稿,提出了大量中肯的建议,并帮助纠正了书稿中的很多错误。
全书由刘洪涛、邹南承担了书稿的编写及全书的统稿工作,参与本书编写的人员有刘洪涛、包文俊、田雨溪、谭翠君、李福亭、张晓平、王利丽、张志华、蔡蒙、任佳、张丹、甘炜国、杨胜利、季久峰、贾燕枫。
由于作者水平所限,书中不妥之处在所难免,恳请读者批评指正。对于本书的批评和建议,可以发表到www.farsight.com.cn技术论坛。
编 者
2014年2月
第1章 嵌入式系统基础知识
嵌入式系统已成为当前最为热门的领域之一,它无处不在,受到了社会各方面的广泛关注,越来越多的人开始学习嵌入式系统开发。本章将向读者介绍嵌入式系统的基本知识,主要内容如下:
□ 嵌入式系统的概述。
□ 嵌入式系统的组成。
□ 嵌入式系统开发举例。
□ 嵌入式系统开发概述。
1.1 嵌入式系统概述
1.1.1 嵌入式系统简介
嵌入式系统已经广泛地渗透到人们的学习、工作、生活中,我们可以看到,嵌入式系统已经应用在科学研究、工程设计、军事技术、各类产业、商业文化艺术、娱乐业及人们的日常生活等方方面面。表1-1列举了嵌入式系统应用的部分领域。
表1-1 嵌入式系统应用领域举例

随着数字信息技术和网络技术的飞速发展,计算机、通信、消费电子的一体化趋势日益明显,这必将培育出一个庞大的嵌入式应用市场。嵌入式系统技术也成了当前关注、学习研究的热点。大家可能会问究竟什么是嵌入式系统呢?嵌入式系统本身是一个相对模糊的定义,不同的组织对其定义也略有不同,但大意是相同的,我们来看一下嵌入式系统的相关定义。
按照电气电子工程师学会(IEEE)的定义,嵌入式系统是用来控制、监控,或者辅助操作机器、装置、工厂等大规模系统的设备(devices used to control,monitor,or assist the operation of equipment,machinery or plants)。这个定义主要是从嵌入式系统的用途方面来进行定义的。
更具一般性且在多数书籍资料中使用较多的关于嵌入式系统的定义如下:嵌入式系统是指以应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。
根据以上嵌入式系统的定义,可以看出,嵌入式系统是由硬件和软件相结合组成的具有特定功能、用于特定场合的独立系统。其硬件主要由嵌入式微处理器、外围硬件设备组成;其软件主要包括底层系统软件和用户应用软件。
1.1.2 嵌入式系统的特点
1.专用、软/硬件可裁剪可配置
从嵌入式系统定义可以看出,嵌入式系统是面向应用的,和通用系统最大的区别在于嵌入式系统功能专一。根据这个特性,嵌入式系统的软、硬件可以根据需要进行精心设计、量体裁衣、去除冗余,以实现低成本、高性能。也正因如此,嵌入式系统采用的微处理器和外围设备种类繁多,系统不具通用性。
2.低功耗、高可靠性、高稳定性
嵌入式系统大多用在特定场合,要么是环境条件恶劣,要么要求其长时间连续运转,因此嵌入式系统应具有高可靠性、高稳定性、低功耗等特点。
3.软件代码短小精悍
由于成本和应用场合的特殊性,通常嵌入式系统的硬件资源(如内存等)都比较少,因此对嵌入式系统设计也提出了较高的要求。嵌入式系统的软件设计尤其要求高质量,要在有限的资源上实现高可靠性、高性能的系统。虽然随着硬件技术的发展和成本的降低,在高端嵌入式产品上也开始采用嵌入式操作系统,但其和PC资源比起来还是少得可怜,所以嵌入式系统的软件代码依然要在保证性能的情况下,占用尽量少的资源,保证产品的高性价比,使其具有更强的竞争力。
4.代码可固化
为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在存储器芯片或单片机本身中,而不是存储于磁盘中。
5.实时性
很多采用嵌入式系统的应用具有实时性要求,所以大多嵌入式系统采用实时性系统。但需要注意的是,嵌入式系统不等于实时系统。
6.弱交互性
嵌入式系统不仅功能强大,而且要求使用灵活方便,一般不需要键盘、鼠标等。人机交互以简单方便为主。
7.嵌入式系统软件开发通常需要专门的开发工具和开发环境
在开发一个嵌入系统时,需要事先搭建开发环境及开发系统,如进行ARM编程时,需要安装特定的IDE,如MDK、IAR等,如果需要交叉编译时,除了特定的宿主系统外,还要有目标交叉工具链,之所以这样是因为嵌入式系统不具有通用系统那样的单一性,嵌入式系统具有多样性,因此,不同的目标就要为其准备不同的开发环境。
8.要求开发、设计人员有较高的技能
嵌入式系统是将先进的计算机技术、半导体技术和电子技术与各个行业的具体应用相结合后的产物。这一点就决定了它必然是一个技术密集、资金密集、高度分散、不断创新的知识集成系统,从事嵌入式系统开发的人才也必须是复合型人才。
1.1.3 嵌入式系统的发展
1.嵌入式系统主要经历的4个阶段
第1阶段是以单芯片为核心的可编程控制器形式的系统。这类系统大部分应用于一些专业性强的工业控制系统中,一般没有操作系统的支持,软件通过汇编语言编写。这一阶段系统的主要特点是:系统结构和功能相对单一,处理效率较低,存储容量较小,几乎没有用户接口。由于这种嵌入式系统使用简单、价格低,因此以前在国内工业领域应用较为普遍,但是现在已经远不能适应高效的、需要大容量存储的现代工业控制和新兴信息家电等领域的需求。
第2阶段是以嵌入式CPU为基础、以简单操作系统为核心的嵌入式系统。其主要特点是:CPU种类繁多,通用性比较弱;系统开销小,效率高;操作系统达到一定的兼容性和扩展性;应用软件较专业化,用户界面不够友好。
第3阶段是以嵌入式操作系统为标志的嵌入式系统。其主要特点是:嵌入式操作系统能运行于各种不同类型的微处理器上,兼容性好;操作系统内核小、效率高,并且具有高度的模块化和扩展性;具备文件和目录管理,支持多任务,支持网络应用,具备图形窗口和用户界面;具有大量的应用程序接口(API),开发应用程序较简单;嵌入式应用软件丰富。
第4阶段是以物联网为标志的嵌入式系统。这是一个正在迅速发展的技术。物联网拥有业界最完整的专业物联产品系列,覆盖从传感器、控制器到云计算的各种应用。物联网一方面可以提高经济效益,大大节约成本;另一方面可以为全球经济的复苏提供技术动力。目前,美国、欧盟等都在投入巨资深入研究探索物联网。我国也正在高度关注、重视物联网的研究,工业和信息化部会同有关部门,在新一代信息技术方面正在开展研究,以形成支持新一代信息技术发展的政策措施。
2.未来嵌入式系统的发展趋势
1)小型化、智能化、网络化、可视化
随着技术水平的提高和人们生活的需要,嵌入式设备正朝着小型化便携式和智能化的方向发展。如果携带笔记本电脑外出办事,肯定希望它轻薄小巧,甚至可能希望有一种更便携的设备来替代它,目前的PAD、智能手机,便携投影仪等都是应类似的需求而出现的。对嵌入式而言,可以说是已经进入了嵌入式互联网时代(有线网、无线网、广域网、局域网的组合),嵌入式设备和互联网的紧密结合,更为我们的日常生活带来了极大的方便和无限的想象空间。除此之外,人工智能、模式识别技术也将在嵌入式系统中得到应用,使得嵌入式系统更具人性化、智能化。
2)多核技术的应用
人们需要处理的信息越来越多,这就要求嵌入式设备运算能力更强,因此需要设计出更强大的嵌入式处理器,多核技术处理器在嵌入式中的应用将更为普遍。
3)低功耗(节能)、绿色环保
嵌入式系统的硬件和软件设计都在追求更低的功耗,以求嵌入式系统能获得更长的可靠工作时间。例如:手机的通话和待机时间、mp3听音乐的时间等。同时,绿色环保型嵌入式产品将更受人们青睐,在嵌入式系统设计中也会更多地考虑如辐射和静电等问题。
4)云计算、可重构、虚拟化等技术被进一步应用到嵌入式系统中
简单讲,云计算是将计算分布在大量的分布式计算机上,这样只需要一个终端,就可以通过网络服务来实现我们需要的计算任务,甚至是超级计算任务。云计算(Cloud Computing)是分布式处理(Distributed Computing)、并行处理(Parallel Computing)和网格计算(Grid Computing)的发展,或者说是这些计算机科学概念的商业实现。在未来几年里,云计算将得到进一步发展与应用。
可重构性是指在一个系统中,其硬件模块或(和)软件模块均能根据变化的数据流或控制流对系统结构和算法进行重新配置(或重新设置)。可重构系统最突出的优点就是能够根据不同的应用需求,改变自身的体系结构,以便与具体的应用需求相匹配。
虚拟化是指计算机软件在一个虚拟的平台上而不是真实的硬件上运行。虚拟化技术可以简化软件的重新配置过程,易于实现软件的标准化。其中CPU的虚拟化可以单CPU模拟多CPU并行运行,允许一个平台同时运行多个操作系统,并且都可以在相互独立的空间内运行而互不影响,从而提高工作效率和安全性,虚拟化技术是降低多内核处理器系统开发成本的关键。虚拟化技术是未来几年最值得期待和关注的关键技术之一。
随着各种技术的成熟与在嵌入式系统中的应用,将不断为嵌入式系统增添新的魅力和发展空间。
5)嵌入式软件开发平台化、标准化、系统可升级,代码可复用将更受重视
嵌入式操作系统将进一步走向开放、开源、标准化、组件化。嵌入式软件开发平台化也将是今后的一个趋势,越来越多的嵌入式软/硬件行业标准将出现,最终的目标是使嵌入式软件开发简单化,这也是一个必然规律。同时随着系统复杂度的提高,系统可升级和代码复用技术在嵌入式系统中得到更多的应用。
6)嵌入式系统软件将逐渐PC化
需求和网络技术的发展是嵌入式系统发展的一个源动力,随着移动互联网的发展,将进一步促进嵌入式系统软件PC化。如前所述,结合跨平台开发语言的广泛应用,未来嵌入式软件开发的概念将被逐渐淡化,也就是嵌入式软件开发和非嵌入式软件开发的区别将逐渐减小。
7)融合趋势
嵌入式系统软/硬件融合、产品功能融合、嵌入式设备和互联网的融合趋势加剧。嵌入式系统设计中软/硬件结合将更加紧密,软件将是其核心。消费类产品将在运算能力和便携方面进一步融合。传感器网络将迅速发展,其将极大地促进嵌入式技术和互联网技术的融合。
8)安全性
随着嵌入式技术和互联网技术的结合发展,嵌入式系统的信息安全问题日益凸显,保证信息安全也成为了嵌入式系统开发的重点和难点。
1.2 嵌入式系统的组成
从前面的介绍我们可以知道,嵌入式系统总体上是由硬件和软件组成的,硬件是其基础,软件是其核心与灵魂。它们之间的关系如图1-1所示。
图1-1 嵌入式系统结构简图
1.2.1 嵌入式系统硬件组成
嵌入式系统硬件设备包括嵌入式处理器和外围设备。其中的嵌入式处理器(CPU)是嵌入式系统的核心部分,它与通用处理器最大的区别在于,嵌入式处理器大多工作在为特定用户群所专门设计的系统中,它将通用处理器中许多由板卡完成的任务集成到芯片内部,从而有利于嵌入式系统在设计时趋于小型化,同时还具有很高的效率和可靠性。如今,全世界嵌入式处理器已经超过1000多种,流行的体系结构有30多个系列,其中以ARM、PowerPC、MC 68000、MIPS等使用最为广泛。
外围设备是嵌入式系统中用于完成存储、通信、调试、显示等辅助功能的其他部件。目前常用的嵌入式外围设备按功能可以分为存储设备(如RAM、SRAM、Flash等)、通信设备(如RS-232接口、SPI接口、以太网接口等)和显示设备(如显示屏等)3类。
常见存储器概念包括:RAM、ROM、SRAM、DRAM、SDRAM、EPROM、EEPROM、Flash。
存储器可以分为很多种类,其中根据掉电数据是否丢失可以分为RAM(随机存取存储器)和ROM(只读存储器),其中RAM的访问速度比较快,但掉电后数据会丢失,而ROM掉电后数据不会丢失。人们通常所说的内存即指系统中的RAM。
RAM又可分为SRAM(静态存储器)和DRAM(动态存储器)。SRAM是利用双稳态触发器来保存信息的,只要不掉电,信息是不会丢失的。DRAM是利用MOS(金属氧化物半导体)电容存储电荷来存储信息,因此必须通过不停地给电容充电来维持信息,所以DRAM的成本、集成度、功耗等明显优于SRAM。
通常人们所说的SDRAM是DRAM的一种,它是同步动态存储器,利用一个单一的系统时钟同步所有的地址数据和控制信号。使用SDRAM不但能提高系统表现,还能简化设计,提供高速的数据传输,在嵌入式系统中经常使用。
EPROM、E2PROM都是ROM的一种,分别为可擦除可编程ROM和电可擦除ROM,但使用不是很方便。
Flash也是一种非易失性存储器(掉电不会丢失),它擦写方便,访问速度快,已在很大程度上取代了传统的EPROM的地位。由于它具有和ROM一样掉电不会丢失的特性,因此很多人称其为Flash ROM。
1.2.2 嵌入式系统软件组成
在嵌入式系统不同的应用领域和不同的发展阶段,嵌入式系统软件组成也不完全相同,其大致如图1-2所示。
图1-2 嵌入式系统软件组成图
图1-2左侧显示,在某些特殊领域中,嵌入式系统软件没有使用通用计算机系统。嵌入式操作系统从嵌入式发展的第3阶段起开始引入。嵌入式操作系统不仅具有通用操作系统的一般功能,如向上提供对用户的接口(如图形界面、库函数API等),向下提供与硬件设备交互的接口(硬件驱动程序等),管理复杂的系统资源,同时,它还在系统实时性、硬件依赖性、软件固化性及应用专用性等方面具有更加鲜明的特点。
应用软件是针对特定应用领域,基于某一固定的硬件平台,用来达到用户预期目标的计算机软件。由于嵌入式系统自身的特点,决定了嵌入式应用软件不仅要求做到准确性、安全性和稳定性等方面需要,而且还要尽可能地进行代码优化,以减少对系统资源的消耗,降低硬件成本。
1.3 嵌入式操作系统举例
嵌入式操作系统主要有商业版和开源版两大阵营,从长远看,嵌入式系统开源、开放将是其发展趋势。
1.3.1 商业版嵌入式操作系统
VxWorks作为商业版嵌入式操作系统的典型代表,这里有必要简要介绍一下。
VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),它是在当前市场占有率最高的嵌入式实时操作系统。VxWorks的实时性做得非常好,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,使得它们造成的延迟很短。另外,VxWorks提供的多任务机制,对任务的控制采用了优先级抢占(Linux 2.6内核也采用了优先级抢占的机制)和轮转调度机制,这充分保证了可靠的实时性,并使同样的硬件配置能满足更强的实时性要求。另外VxWorks具有高度的可靠性,从而保证了用户工作环境的稳定。同时,VxWorks还有很完备强大的集成开发环境,这也大大方便了用户的使用。
但是,由于VxWorks的开发和使用都需要交高额的专利费,因此大大增加了用户的开发成本。同时,由于VxWorks的源码不公开,造成它部分功能的更新(如网络功能模块)滞后。
1.3.2 开源版嵌入式操作系统
嵌入式Linux(Embedded Linux)作为开源版嵌入式操作系统的典型,这里也简单介绍一下它的特性。
嵌入式Linux是指对标准Linux经过小型化裁剪处理之后,能够固化在容量只有几千字节(KB)或者几兆字节(MB)的存储器芯片或者单片机中,是适合于特定嵌入式应用场合的专用Linux操作系统。在目前已经开发成功的嵌入式系统中,大约有一半使用的是Linux。这与它自身的优良特性是分不开的。
嵌入式Linux同Linux一样,具有低成本、多种硬件平台支持、优异的性能和良好的网络支持等优点。另外,为了更好地适应嵌入式领域的开发,嵌入式Linux还在Linux基础上做了部分改进。
1.改善的内核结构
Linux内核采用的是整体式结构(Monolithic),整个内核是一个单独的、非常大的程序,这样虽然能够使系统的各个部分直接沟通,提高系统响应速度,但与嵌入式系统存储容量小、资源有限的特点不相符。因此,在嵌入式系统中经常采用的是另一种称为微内核(Microkernel)的体系结构,即内核本身只提供一些最基本的操作系统功能,如任务调度、内存管理、中断处理等,而类似于文件系统和网络协议等附加功能则运行在用户空间中,并且可以根据实际需要进行取舍。这样就大大减小了内核的体积,便于维护和移植。
2.提高的系统实时性
由于现有的Linux是一个通用的操作系统,虽然它也采用了许多技术来加快系统的运行和响应速度,但从本质上来说并不是一个嵌入式实时操作系统。因此,人们利用Linux作为底层操作系统,在其上进行实时化改造,从而构建出一个具有实时处理能力的嵌入式系统,如RT-Linux已经成功地应用于航天飞机的空间数据采集、科学仪器测控和电影特技图像处理等各种领域。
1.4 嵌入式系统开发概述
由于受嵌入式系统本身的特性所影响,嵌入式系统开发与通用系统的开发有很大的区别。嵌入式系统的开发主要分为系统总体开发、嵌入式硬件开发和嵌入式软件开发三大部分,其总体流程图如图1-3所示。
图1-3 嵌入式系统开发流程图
在系统总体开发中,由于嵌入式系统与硬件依赖程序非常紧密,往往某些需求只能通过特定的硬件才能实现,因此需要进行处理器选型,以更好地满足产品的需求。另外,对于有些硬件和软件都可以实现的功能,就需要在成本和性能上做出选择。通过硬件实现往往会增加产品的成本,但能大大提高产品的性能和可靠性。
再次,开发环境的选择对于嵌入式系统的开发也有很大的影响。这里的开发环境包括嵌入式操作系统的选择及开发工具的选择等。本书在1.3节对各种不同的嵌入式操作系统进行了比较,读者可以以此为依据进行相关的选择。比如,对开发成本和进度限制较大的产品可以选择嵌入式Linux,对实时性要求非常高的产品可以选择VxWorks等。
嵌入式软件开发总体流程为图1-3中“软件设计实现”部分所示,它同通用计算机软件开发一样,分为需求分析、软件概要设计、软件详细设计、软件实现和软件测试。其中嵌入式软件需求分析与硬件的需求分析合二为一,故没有分开画出。
由于在嵌入式软件开发的工具非常多,为了更好地帮助读者选择开发工具,下面首先对嵌入式软件开发过程中所使用的工具进行简单归纳。
嵌入式软件的开发工具根据不同的开发过程而划分,比如在需求分析阶段,可以选择IBM的Rational Rose等软件,而在程序开发阶段可以采用CodeWarrior等,在调试阶段可以采用Multi-ICE等。同时,不同的嵌入式操作系统往往会有配套的开发工具,如VxWorks有集成开发环境Tornado,WinCE的集成开发环境WinCE Platform等。此外,不同的处理器可能还有针对的开发工具,如ARM的常用集成开发工具ADS等。在这里,大多数软件都有比较高的使用费用,但也可以大大加快产品的开发进度,用户可以根据需求自行选择。
嵌入式系统的软件开发与通常软件开发的区别主要在于软件实现部分,其中又可以分为交叉编译和交叉调试两部分,下面分别对这两部分进行讲解。
1.交叉编译
嵌入式软件开发所采用的编译为交叉编译。所谓交叉编译就是在一个平台上生成可以在另一个平台上执行的代码。因此,不同的CPU需要有相应的编译器,而交叉编译就如同翻译一样,把相同的程序代码翻译成不同的CPU对应语言。要注意的是,编译器本身也是程序,也要在与之对应的某一个CPU平台上运行。
这里一般把进行交叉编译的主机称为宿主机,也就是普通的通用计算机,而把程序实际的运行环境称为目标机,也就是嵌入式系统环境。由于一般通用计算机拥有非常丰富的系统资源、使用方便的集成开发环境和调试工具等,而嵌入式系统的系统资源非常紧缺,没有相关的编译工具,因此,嵌入式系统的开发需要借助宿主机来编译出目标机的可执行代码。
由于编译的过程包括编译、链接等几个阶段,因此,嵌入式的交叉编译也包括交叉编译、交叉链接等过程,通常ARM的交叉编译器为arm-elf-gcc,交叉链接器为arm-elf-ld,交叉编译过程如图1-4所示。
图1-4 嵌入式交叉编译过程
2.交叉调试
嵌入式软件经过编译和链接后即进入调试阶段,调试是软件开发过程中必不可少的一个环节,嵌入式软件开发过程中的交叉调试与通用软件开发过程中的调试方式有很大的差别。在常见软件开发中,调试器与被调试的程序
....
本站仅展示书籍部分内容
如有任何咨询
请加微信10090337咨询