内容简介目录全面讲述了嵌入式系统开发与应用技术,以嵌入式系统的基本开发技术为主线,以ARM处理器核及国内应用广泛的Samsung公司S3C44B0X(基于ARM7TDMI)为硬件平台,系统讲述了嵌入式系统开发的基本知识、基本流程、基本方法及以ARM微处理器为核心的嵌入式系统软、硬件开发过程。主要内容包括:◆ 嵌入式系统开发基础知识;◆ ARM技术概述;◆ 基于ARM的嵌入式系统应用程序设计;◆ 基于S3C44B0X的嵌入式系统应用开发实例;◆ μC/OSⅡ和μCLinux嵌入式操作系统及应用开发。本书可作为高校计算机和电类专业的本科生、研究生教材,以及相关工程技术人员进行嵌入式系统应用开发的教材,也可供基于ARM核嵌入式系统开发的工程技术人员参考。本书配套多媒体教学课件。嵌入式技术的发展以8位单片机(或微控制器,MCU)为核心的嵌入式系统早已广泛应用于各个领域,这些应用大多数还处于单机使用的嵌入式低层次阶段。其特点是以MCU为核心,与一些简单的传感器及监测、伺服控制、指示和显示等设备配合,实现一定的测量、显示、信息处理及控制等功能。虽然在一些工业控制、汽车电子和智能家居等多机应用中,为了实现多个MCU构成的系统间的信息交流,通常是利用CAN、RS232和RS485等总线将MCU组网。但这种网络的应用空间有限,相关的通信协议也比较单一,并且一般孤立于广泛应用的Internet以外。目前,Internet已成为社会重要的基础信息设施,是信息流通的重要渠道。嵌入式系统必将与Internet完美融合,方便、低廉地将信息传送到世界上任何一个地方。随着嵌入式设备与Internet的广泛结合,手机、PDA、路由器和调制解调器等复杂的高端应用对嵌入式处理器的性能提出了更高的要求。虽然以8位单片机为核心的嵌入式技术不断发展,性能也不断提高,但由于其性能的局限性,已无法满足未来高性能嵌入式技术的发展需求。激烈的市场和技术竞争要求不断提高嵌入式系统的性价比;同时,也要求缩短嵌入式系统的开发周期。自从20世纪70年代初出现嵌入式系统的概念以来,嵌入式系统以其高性能、低功耗等特点高速发展。当时的嵌入式系统很多都不采用操作系统,它们只是为了实现某个控制功能,使用简单的循环控制来对外界的控制请求进行处理。随着嵌入式系统的发展,当应用系统越来越复杂、使用范围越来越广泛时,每增加一项新的应用功能,都可能需要从头开始设计系统软件,没有操作系统已成为其最大缺陷。但目前在8位单片机上运行嵌入式操作系统尚有一定困难,因此,以32位处理器作为高性能嵌入式系统开发的核心已是嵌入式技术发展的必然趋势。20世纪90年代后,嵌入式系统设计从以嵌入式微处理器/DSP为核心的"集成电路"级设计,逐渐转向"集成系统"级设计,提出了片上系统SoC(Sytem on a Chip)的基本概念。目前,嵌入式系统已进入以SoC为核心的设计阶段,并开始逐步实用化和规范化。SoC为高性能嵌入式系统开发提供了功能丰富的硬件平台,也为实时嵌入式操作系统的广泛使用提供了硬件基础。从20世纪80年代开始,陆续出现了一些嵌入式操作系统,比较著名的有VxWorks、Windows CE、Palm、μCLinux、pSOS和μC/OSⅡ等,但真正广泛使用只是近几年的事情。一方面是因为嵌入式系统软件开发复杂度增加的需求;另一方面是大量高性能、面向实际应用、集成多种系统功能的SoC芯片成为高端嵌入式应用的硬件核心,为可靠、高效、低成本地运行嵌入式操作系统提供了硬件平台。大部分嵌入式操作系统价格昂贵,而源代码开放的μC/OSⅡ、μCLinux是大家比较看好的,也比较适用于教学。有关嵌入式操作系统的知识体系相对复杂,一些出版社已经出版了多种相关的书籍,如果在教学、科研中对这方面内容比较感兴趣,请参阅相关资料。嵌入式微处理器具有体积小、重量轻、成本低和可靠性高的优点,是嵌入式系统的核心。目前比较有影响的32位嵌入式处理器有ARM公司的ARM、Compaq公司的Alpha、HP公司的PARISC、IBM公司的PowerPC、MIPS公司的MIPS和Sun公司的Sparc等。而ARM处理器具有高性能、低功耗和低成本等显著优点,已成为高性能、低功耗嵌入式微处理器的代名词,是目前32位、64位嵌入式处理器中应用最为广泛的一个系列。20世纪90年代初,半导体行业产业链形成设计业、制造业和封装测试业三业分离的产业分工。台积电、联电等半导体代工厂崛起,一些fabless、chipless公司如雨后春笋般出现。而英国先进RISC机器公司(Advanced RISC Machines,简称ARM公司)作为fabless、chipless这一生产模式最为成功的典范。ARM公司既不生产芯片,也不销售芯片,而是设计出高效的IP内核,授权给各半导体公司使用;半导体公司在ARM技术的基础上,根据自己公司的产品定位,添加自己的设计并推出芯片产品;最后由OEM客户采用这些芯片来构建基于ARM技术的最终应用系统产品。经过10多年的发展,ARM公司已是业界领先的IP供应商。回顾ARM技术的发展历程,在ARM7体系结构(体系结构版本v3)刚被广泛接受和使用时,嵌入式微处理器的市场仍然大都由8位、16位处理器占领。然而,这些产品却不能满足当时移动电话、调制解调器等高端应用对处理器性能的要求。这些高端产品需要32位RISC处理器的性能和更优于16位CISC处理器的代码密度,这就要求要以更低的成本取得更好的性能和更优的代码密度。为了满足这种发展需求,ARM体系结构增加了T变种,开发了一种新的指令体系,即16位Thumb指令集。Thumb技术是ARM技术的一大特色。ARM发布的ARM7TDMIT体系结构(体系结构版本v4T)的处理器,是第一个支持Thumb指令集的微处理器,其工作模式可以方便地切换到Thumb状态。在该状态下运行的指令集是16位Thumb指令集,这在当时的16位系统与现在需要的32位系统之间搭起了一座桥梁。性能更优而不需要付出额外代价的ARM,为那些在当时使用8位或16位处理器,却一直在寻找更优性能处理器的用户来说,提供了解决方案,也极大地推动了ARM技术的发展。16位处理器一直没有像人们预期的那样发展起来的原因很复杂,由于32位ARM微处理器提供了低于一般16位微处理器的价格而高于一般16位微处理器的性能,使得高端的嵌入式应用可以完全跨越16位而直接进入32位应用领域,这也许是原因之一。ARM微处理器得到了众多半导体厂家和整机厂商的大力支持,全球已有100多家IT公司在采用ARM技术,20家最大的半导体厂商中有19家是ARM的用户,包括TI、Philips和Intel等公司。优良的性能和准确的市场定位极大地丰富了ARM资源,加速了基于ARM核的面向各种应用系统芯片的开发应用,使得ARM获得了更广泛的应用,确立了ARM技术的市场领先地位。ARM在高性能嵌入式应用领域获得了巨大的成功,已在32位嵌入式应用中稳居世界第一。在2002年,基于ARM核的芯片占据了整个32位、64位嵌入式微处理器市场的79.5%,全世界已使用了20多亿个ARM核。如今,ARM公司已经成为业界的龙头老大,"每个人口袋中都装着ARM"是毫不夸张的,因为几乎所有的手机、移动设备、PDA都是用基于ARM核的系统芯片开发的。为了顺应当今世界技术革新的潮流,了解、学习和掌握高性能嵌入式技术,就必然要学习以32位ARM微处理器为核心的嵌入式开发技术及其应用开发环境和平台。 对IT产业发展规律进行总结可发现:如果说过去20年PC机的广泛应用是集成电路和IT相关技术发展的驱动器并且极大地促进了IT相关技术发展,那么未来几十年除了PC技术要继续高速发展之外,主要驱动器应该是与Internet相结合的、可移动的(Mobile)、便携的(Portable)、实时嵌入式Internet的信息处理设备,即进入了后PC(PostPC)时代。目前嵌入式Internet还仅局限于移动商务、智能家居(家电上网)、工业控制和智能设备的应用等方面。随着相关应用技术的发展,嵌入式技术必将与许多实际应用领域相结合,以难以想像的速度发展。这必然会极大地拓展嵌入式应用的广度和深度,体现嵌入式系统与实际应用密切结合的价值。当代通用计算机工业是Wintel(Microsoft和Intel公司20世纪90年代初建立的联盟)垄断的工业。随着信息技术和网络技术的高速发展,嵌入式技术的广泛应用使得这种垄断在后PC时代不再存在。嵌入式系统正是非PC设备的主体。互联网技术在世界范围的扩展及中国通信事业的高速发展,为我国开发嵌入式产品造就了巨大市场。与实际应用密切结合且技术高度分散的嵌入式技术,为我国IT技术的发展提供了难得的机遇。加快嵌入式技术的开发应用,学习与掌握嵌入式系统开发的核心技术,对于IT技术并不发达的中国是非常重要的。学习32位嵌入式系统应用开发知识的迫切性与传统的以8位51单片机为核心的开发应用相比,ARM微处理器的性能和处理能力遥遥领先,应用也日益广泛,但与之相应的,基于ARM的32位嵌入式系统软/硬件开发的复杂度和难度也急剧加大。现在我国嵌入式应用开发技术人才状况是:掌握低端8位单片机应用技术的人才相对过剩;而真正了解高端32位嵌入式系统开发技术的人才,却凤毛麟角,需求与供给严重失衡。就我国大部分高校目前的嵌入式系统教学而言,整体仍然停留在20世纪80年代初发展起来的以8位51单片机为核心的单片机教学水平上。目前教学内容设置、教学方法、教学手段、教材编写体系与这门课程以实际应用为主的基本特征严重脱节。学生学习了这门课程后,只能进行一般的、基于指令基础上的简单编程,而不能进行基本的应用系统设计。在此基础上要想完成具有较大规模的应用程序设计是有一定难度的,要独立进行一般的开发工作就更加有难度。一般学生进入技术开发岗位后,基本上要进行相当长一段时间的实际培训,才能基本进入开发流程;要独立承担项目,还需要更长一段时间。发展嵌入式技术,人才是关键。培养和培训相关人才,一方面,要在高校中加强嵌入式系统教学,这是人才的源头;另一方面,有一定实际项目开发经验的工程技术人员也需要加强嵌入式系统开发技术的学习。因此,为满足高等院校相关专业嵌入式系统教学要求,迫切需要适合教学特点的高水平教材;从事嵌入式系统开发的一般工程技术人员也迫切需要对嵌入式系统应用开发技术进行全面、系统、深入介绍的参考资料。作者是国内最早翻译ARM bible级的《ARM SoC体系结构》\[1\]一书的译者之一,并从事于ARM技术的相关教学及科研工作多年,积累了大量的嵌入式系统教学和开发经验;作者与ARM公司、基于ARM核的芯片厂商以及对ARM感兴趣的读者建立了广泛的联系,获得了大量的技术信息和建议。因此,为满足高等院校相关专业的师生及嵌入式系统开发工程技术人员的需要,作者在此基础上,编写了4本图书,即本书及另外3本一套的《嵌入式系统开发与应用系列教程》。本书涉及的硬件平台及开发环境Samsung公司S3C系列芯片是国内市场占有率最高的基于ARM核的微处理器之一,其接口模块丰富,适用面广,故本书和《嵌入式系统开发与应用系列教程》都选择Samsung公司S3C44B0X(基于ARM7TDMI)作为硬件平台。在学习基于ARM的嵌入式系统开发时,选择合适的开发工具可以加快开发进度,降低开发成本。目前世界上有几十家公司提供不同类别的ARM开发工具和产品。ARM应用的开发工具主要包括集成开发环境IDE、嵌入式实时操作系统、评估板和JTAG仿真器等。一般来说,一套具备最基本功能的嵌入式集成开发环境IDE是嵌入式系统开发所必不可少的。目前国内外主要使用的IDE环境有ARM 公司的SDT和ADS、美国Green Hills软件公司的Multi 2000、台湾的Hitool for ARM以及英蓓特公司的Embest IDE for ARM等,而国内使用较多的IDE为ARM公司的SDT、ADS以及英蓓特公司的Embest IDE。仿真器有ARM公司的Muti-ICE和英蓓特公司的Embest系列ARM JTAG仿真器。SDT和ADS是ARM公司早期的集成开发环境(IDE),其用户界面不太符合中国人的使用习惯,而且软件本身价格很高,仿真器也是价格不菲。SDT和ADS目前都已经停止升级。英蓓特公司的ARM集成开发环境套件(包括Embest IDE、指令集模拟器、仿真器及Flash编程器等相关开发工具)是国内最早的ARM开发工具之一。作为国内较早成功开发出IDE环境的公司,英蓓特是目前国内唯一的ARM Connected Community Membership(参见http://arm.convergencepromotions.com/catalog/Embest.htm),完全自主开发,本土技术支持实力雄厚,且价格合理,并能为嵌入式系统开发人员提供软硬件开发工具和嵌入式系统完整解决方案及技术信息服务;因此,本书和《嵌入式系统开发与应用系列教程》都选用英蓓特公司的集成开发环境套件作为ARM应用开发的工具。学习32位嵌入式系统开发与应用技术所需的基础知识嵌入式系统开发与应用的内容繁杂,涉及基本的硬件知识(如嵌入式微处理器及其基本接口、扩展人机接口和网络通信接口等知识)、操作系统(应该至少了解一种操作系统的中断、优先级、任务间通信和同步等知识)、程序设计知识(C语言、C++语言和汇编语言程序设计,至少要熟悉C语言);同时,还要具备一定的数字电路知识以及使用示波器、逻辑分析仪等基本技能。因此,在系统地学习本书和《嵌入式系统开发与应用系列教程》之前,必须有学习过微机原理与接口、C语言程序设计等课程的基础,掌握计算机操作系统原理、体系结构和系统结构的基本概念,同时对于网络协议有一定的了解。本书内容组成本书全面、系统地讲述了嵌入式系统开发的基础理论与应用技术,以嵌入式系统的基本开发技术为主线,以ARM处理器核及目前应用广泛的Samsung公司的S3C44B0X(基于ARM7TDMI)为硬件平台,系统讲述了嵌入式系统开发的基本知识、基本流程、基本方法及以ARM微处理器为核心的嵌入式系统软/硬件开发过程。在加强嵌入式系统开发基础、嵌入式系统应用软件设计、嵌入式基本硬件接口、嵌入式操作系统移植及应用内容的基础上,紧密结合嵌入式系统开发过程的实际工程应用,将嵌入式系统外围复杂的实用模块开发例程移植到了本书内容中。本书按技术内容分为8章,共5大部分。各部分具体内容及包含的章节如下:第1部分: 为书的第1章,主要介绍嵌入式系统开发的基础知识。内容包括嵌入式系统的基本概念、组成结构、硬件组成、操作系统、应用软件开发、开发流程和发展趋势。通过本部分的学习,可使读者系统地建立起嵌入式系统开发的整体概念和知识体系。第2部分: 为书的第2章,主要对ARM技术进行全面论述。通过本部分的学习,可使读者全面地了解ARM技术,并建立起以ARM技术为基础的嵌入式系统应用和以ARM核为基础的嵌入式SoC芯片设计的技术框架。在学习本部分时,可根据自己的具体情况有所取舍。第3部分: 为书的第3、4和5五章。主要介绍嵌入式系统的应用程序设计。第3章主要介绍ARM指令集。第4章主要介绍Thumb指令集。ARM和Thumb这两种指令集只是基于ARM的嵌入式编程的基础。第5章主要介绍如何运用前面学过的汇编指令并结合C语言来进行嵌入式程序设计。首先介绍伪操作、宏指令和伪指令等嵌入式汇编语言程序设计基础知识;然后讲述ARM汇编语言程序设计,以实际例程中用到的C语言讲述嵌入式C语言程序设计基础,并在此基础上列举一个嵌入式C程序设计实例;对于嵌入式编程技巧和C语言与汇编混合编程也进行了简述;最后通过一个基于Embest IDE for ARM开发环境的嵌入式软件开发与调试实例讲述了嵌入式软件开发流程和开发工具的使用。本章密切结合嵌入式系统开发的实际例程,通过学习能使读者掌握嵌入式程序设计的基本知识、基本方法和基本流程。第4部分: 为书的第6章。主要介绍基于S3C44B0X的嵌入式系统开发。Samsung公司的S3C44B0X片上功能很强大,是国内应用广泛的基于ARM7TDMI内核的SoC。本部分以S3C44B0X为例,对嵌入式系统开发进行全面介绍,涉及片上基本功能模块及这些模块的应用开发;在此基础上还介绍基于S3C44B0X的S3CEV40开发板设计,并对基于S3CEV40的启动程序和基于S3CEV40的USB接口的嵌入式开发进行讲述,其他如网络等功能的完整的应用开发可详见《嵌入式系统开发与应用实验教程》\[2\]一书。通过对这些嵌入式外围主要模块应用功能(部分内容可参见《嵌入式系统开发与应用实验教程》)开发的讲述,可使读者对嵌入式系统开发有一个全面了解。第5部分: 为书的第7、第8章,主要对于嵌入式操作系统μC/OSⅡ和μCLinux的基本知识进行讲述,在此基础上分别对基于S3C44B0X的移植及应用开发进行介绍。本书包含大量软件和硬件设计资源,为系统学习与掌握基于ARM的嵌入式开发技术提供了一种选择方案。通过该书的学习,不仅可使读者系统地掌握嵌入式系统开发的基本知识,而且对复杂实用的外围接口模块的开发、嵌入式操作系统的移植也能有一个全面了解。本书提供的实际嵌入式系统开发例程也可应用到实际开发过程中。本书读者对象本书力求将嵌入式系统开发与应用技术全面介绍给读者,内容全面、详细和系统,非常适于学习嵌入式系统开发的工程技术人员阅读。因其内容较多,不太适宜作为高等院校嵌入式系统课程的短学时教材,但高校研究生或本科生的多学时嵌入式系统课程可选用此书作为教材。此书亦可作为嵌入式系统开发工程技术人员的培训资料。对于选用《嵌入式系统开发与应用系列教程》作为教材的高校师生,亦可将此书作为配套参考资料。为了便于教学和培训,本书还配套了多媒体教学课件。本书与《嵌入式系统开发与应用系列教程》的配套使用作者编写的另外3本一套的《嵌入式系统开发与应用系列教程》是专门针对高校嵌入式系统教学特点而编写的教材,包括:◆ 《嵌入式系统开发与应用教程》(理论课教材,即将出版):配套多媒体教学课件◆ 《嵌入式系统开发与应用实验教程》(实验课教材):配套Embest ARM实验教学系统:配套多媒体教学课件◆ 《嵌入式系统开发与应用学习指导》(即将出版)本套教程中的理论教材:《嵌入式系统开发与应用教程》,是针对高校嵌入式系统教学的特点,在本书基础上将内容重新整合而成的,更适合于短学时的教学和培训。本书可结合《嵌入式系统开发与应用系列教程》中的实验教材:《嵌入式系统开发与应用实验教程》来学习,这样可使读者用最短时间掌握32位嵌入式系统应用开发的基础理论和实践知识,培养高端嵌入式产品的研发和设计能力,达到社会对高素质、开拓型嵌入式人才的要求。作者根据实际教学情况和相关技术的发展,对《嵌入式系统开发与应用实验教程》进行了修订,其第2版即将出版。教学课件及获取方式为了便于教学和实验,作者针对本书以及《嵌入式系统开发与应用系列教程》的理论课和实验课教材3本书,为教师提供相配套的多媒体教学课件。有需要的教师,请与北京航空航天大学出版社联系。联系方式如下:通讯地址:北京市海淀区学院路37号北京航空航天大学出版社市场及客户服务部邮编:100083Email:bhpress@263.netTel:01082317031Fax:01082317031致谢在《嵌入式系统开发与应用系列教程》及本书的编写过程中,得到了北京航空航天大学出版社的大力支持,并得到了ARM中国总裁谭军博士、北京理工大学马忠梅教授的关心和指导,北京大学信息科学技术学院盛世敏教授、于敦山博士和蒋安平博士也给予了大量的支持和帮助。感谢我的博士导师中国科学院微电子研究所的仇玉林研究员、北大盛世敏教授,感谢我的硕士导师西安交通大学邱祖廉教授,感谢他们对我一如既往的关心、理解和帮助。他们将我带入科学研究的殿堂,并给予我各种帮助,是我无穷的精神源泉,在此表示深深感谢!我的硕士研究生万永波、闫效莺、车晓萍、杨峰、陈群英、李攀、王进军、刘涛和余兆安以及本科生谢辉、杨冬峰、张精通、徐德正、宋文博、侯利军、杨艳锋、杨景松、宫志坚、郑晓亮和朱书恬等同学亦参与了这一系列图书编写的部分工作,在此表示感谢! 深圳市英蓓特信息技术有限公司的徐光峰、张国瑞、黄日新、唐晖等工程师也提供了更详细的Embest ARM实验教学系统的技术资料和各种帮助,并提出了大量意见和建议,在此表示感谢!感谢我的爱人王永红给予我的理解和支持,是她在家庭中默默地劳作和操持,使我可以安心于工作。正是由于她给予我最及时、最需要的关心和照顾,使我在单调的工作之余,生活总是绚丽、多彩。感谢我的儿子田祎琨,我很少在生活和学习上给予他照顾,希望他幼小的心灵能够理解我!感谢北京航空航天出版社的编辑们,正是由于他们高效、努力的工作,才使得本书能够及时与大家见面!感谢所有帮助过我的人们,有了他们的理解、帮助和支持,我才能完成写作。由于时间仓促及众多客观条件的制约,书中存在的错误不足之处,敬请读者谅解,并真诚地欢迎读者提出宝贵意见和建议。希望教育界、科研界、产业界携手并进,抓住嵌入式技术为我国IT发展提供的难得机遇,促进我国嵌入式技术快速、稳定、健康地发展。田泽2004年10月 第1章 嵌入式系统开发基础1.1 嵌入式系统的基本概念11.1.1 嵌入式计算机11.1.2 嵌入式系统的概念51.1.3 嵌入式系统的特点61.1.4 嵌入式系统的分类91.1.5 嵌入式系统的应用范围91.1.6 嵌入式技术是中国IT发展的难得机遇91.2 嵌入式系统的组成结构101.2.1 嵌入式系统硬件基本结构介绍111.2.2 嵌入式系统软件的层次结构121.2.3 启动程序BootLoader介绍141.3 嵌入式系统的硬件组成151.3.1 嵌入式处理器151.3.2 典型嵌入式处理器介绍161.3.3 嵌入式SoC211.3.4 可编程片上系统SOPC221.3.5 嵌入式外围接口电路和设备接口241.4 嵌入式操作系统251.4.1 嵌入式操作系统261.4.2 嵌入式实时操作系统261.4.3 典型嵌入式操作系统介绍281.5 嵌入式应用软件开发311.5.1 嵌入式软件开发的特点和技术挑战311.5.2 嵌入式软件开发环境321.5.3 嵌入式应用软件开发的基本流程351.5.4 嵌入式软件开发的可移植性和可重用性391.6 嵌入式系统的开发流程401.6.1 嵌入式开发考虑的要素411.6.2 软硬件协同设计411.6.3 嵌入式系统开发的基本流程421.7 嵌入式系统的发展趋势441.7.1 即将来临的以ARM为核心的32位浪潮441.7.2 嵌入式系统与Internet的融合461.7.3 嵌入式系统的发展趋势47习题48第2章 ARM技术概述2.1 ARM体系结构的发展历史和技术特征502.1.1 ARM技术的发展历程512.1.2 RISC体系结构562.1.3 ARM体系结构的技术特征612.2 ARM体系结构不同版本的发展概述622.2.1 ARM体系结构的基本版本622.2.2 ARM体系结构的演变652.2.3 ARM体系结构的命名规则672.3 Thumb技术介绍672.3.1 Thumb的技术概述682.3.2 Thumb的技术实现682.3.3 Thumb的技术特点702.4 ARM处理器工作状态702.5 ARM处理器工作模式712.6 ARM寄存器组成722.6.1 ARM寄存器组成概述722.6.2 ARM状态下的寄存器组织732.6.3 Thumb状态下的寄存器组织782.7 ARM的异常中断792.7.1 ARM的异常中断响应过程802.7.2 从异常中断处理程序中返回812.7.3 异常中断向量表832.7.4 异常中断的优先级832.8 ARM组织结构简介842.8.1 3级流水线ARM的组织842.8.2 5级流水线ARM的组织872.9 ARM存储器接口及存储器层次892.9.1 ARM存储数据类型和存储格式892.9.2 ARM的存储器层次简介902.9.3 ARM存储系统简介912.10 ARM协处理器942.11 ARM片上总线AMBA952.11.1 总线标准概述962.11.2 AHB简介962.11.3 ASB简介982.11.4 APB简介982.12 基于JTAG的ARM系统调试992.12.1 JTAG边界扫描测试接口简介1002.12.2 ARM的调试结构1032.12.3 ARM的嵌入式跟踪1062.13 ARM核综述1072.13.1 ARM7系列核介绍1072.13.2 ARM9系列核介绍1152.13.3 ARM10系列核1202.13.4 StrongARM和XScale系列核1232.13.5 SecurCore系列核1282.14 基于ARM核的芯片选择1292.14.1 应用角度的ARM芯片选择原则1292.14.2 多内核ARM角度芯片选择原则1312.14.3 国内常用ARM芯片及供应商简介132习题133第3章 ARM指令集3.1 ARM指令集概述1343.1.1 ARM指令集编码1343.1.2 条件执行1353.1.3 指令分类及指令格式1363.2 ARM寻址方式1373.2.1 立即寻址1373.2.2 寄存器寻址1393.2.3 寄存器间接寻址1403.2.4 基址加偏址寻址1413.2.5 堆栈寻址1433.2.6 块拷贝寻址1443.2.7 相对寻址1463.3 ARM指令详细介绍1463.3.1 数据处理指令1463.3.2 Load/Store指令1543.3.3 状态寄存器与通用寄存器之间的传送指令1633.3.4 转移指令1663.3.5 异常中断产生指令1703.3.6 协处理器指令1733.3.7 未使用的指令空间177习题179第4章 Thumb指令集4.1 Thumb指令集概述1824.1.1 Thumb指令集编码1834.1.2 Thumb状态切换1834.1.3 编程模型1844.1.4 Thumb指令集特点1854.2 Thumb指令详细介绍1864.2.1 Thumb数据处理指令1864.2.2 Thumb转移指令1944.2.3 数据存取指令1984.2.4 异常中断指令204习题206第5章 基于ARM的嵌入式程序设计5.1 ARM汇编语言的伪操作、宏指令与伪指令2085.1.1 2种编译模式的集成开发环境IDE介绍2095.1.2 ADS编译环境下的ARM伪操作和宏指令2095.1.3 GNU编译环境下的ARM伪操作与宏指令2365.1.4 ARM汇编语言的伪指令2465.2 ARM汇编语言程序设计2505.2.1 ARM汇编中的文件格式2505.2.2 ARM汇编语言语句格式2505.2.3 ARM汇编语言编程的重点2605.2.4 ARM汇编程序实例2675.3 嵌入式C语言程序设计基础2735.3.1 C语言的"预处理伪指令"在嵌入式程序设计中的应用2735.3.2 嵌入式程序设计中的函数及函数库2925.3.3 嵌入式程序设计中常用的C语言语句3075.3.4 嵌入式程序设计中C语言的变量、数组、结构和联合3125.4 嵌入式C语言程序设计实例3185.4.1 实例实现功能介绍3185.4.2 实例实现程序源代码介绍3215.5 嵌入式C语言程序设计技巧3355.5.1 变量定义3355.5.2 参数传递3375.5.3 循环条件3375.6 C语言与汇编语言混合编程3385.6.1 ATPCS介绍3395.6.2 内嵌汇编3425.6.3 C语言和ARM汇编语言程序间相互调用3495.7 基于Embest IDE for ARM 环境的软件开发实例3515.7.1 开发实例介绍3525.7.2 源文件解释3525.7.3 建立工程3595.7.4 工程配置3605.7.5 在RAM中调试软件3675.7.6 软件的固化3695.7.7 程序在Flash中调试369习题370第6章 基于S3C44B0X的嵌入式系统应用开发实例6.1 S3C44B0X处理器介绍3746.1.1 Samsung S3C44B0X简介3746.1.2 Samsung S3C44B0X特点3746.1.3 S3C44B0X功能结构框图3786.1.4 S3C44B0X引脚信号描述3786.2 S3C44B0X存储控制器功能及应用开发3836.2.1 S3C44B0X存储控制器概述3846.2.2 S3C44B0X存储器空间划分简述3846.2.3 S3C44B0X存储控制器功能描述3856.2.4 S3C44B0X存储控制器的特殊功能寄存器3866.2.5 S3C44B0X存储器应用编程3906.3 S3C44B0X I/O端口功能及应用开发3926.3.1 S3C44B0X I/O功能概述3926.3.2 S3C44B0X端口功能配置3936.3.3 S3C44B0X端口功能控制描述3946.3.4 S3C44B0X I/O端口的特殊功能寄存器3966.3.5 S3C44B0XI/O端口应用编程4016.4 S3C44B0X DMA功能及应用开发4046.4.1 S3C44B0XDMA概述4046.4.2 S3C44B0XZDMA/BDMA操作4046.4.3 S3C44B0X DMA特殊功能寄存器4096.4.4 S3C44B0XDMA应用编程4156.5 S3C44B0X UART接口功能及应用开发4176.5.1 S3C44B0X UART概述4176.5.2 S3C44B0X UART的操作4196.5.3 S3C44B0X UART的特殊功能寄存器4226.5.4 S3C44B0X UART应用编程4276.6 S3C44B0X中断控制器功能及应用开发4316.6.1 S3C44B0X中断概述4316.6.2 S3C44B0X中断控制器的操作4326.6.3 S3C44B0X中断源4326.6.4 S3C44B0X矢量中断模式4356.6.5 S3C44B0X矢量中断模式的程序举例4356.6.6 S3C44B0X中断控制器的特殊功能寄存器4386.6.7 S3C44B0X中断控制器应用编程4436.7 S3C44B0X时钟电源管理器功能及应用开发4456.7.1 S3C44B0X时钟电源管理器概述4456.7.2 S3C44B0X时钟电源管理器功能描述4466.7.3 S3C44B0X时钟发生器与电源管理特殊功能寄存器4516.7.4 S3C44B0X时钟与电源管理器应用编程4536.8 S3C44B0X PWM定时器功能及应用开发4556.8.1 S3C44B0X PWM定时器概述4556.8.2 S3C44B0X PWM定时器工作原理4576.8.3 S3C44B0X PWM 定时器操作4576.8.4 S3C44B0X PWM定时器的特殊功能寄存器4596.8.5 S3C44B0X PWM定时器应用编程4646.9 S3C44B0X LCD控制器功能及应用开发4666.9.1 S3C44B0X LCD控制器概述4666.9.2 S3C44B0X LCD控制器的特性4666.9.3 S3C44B0X LCD外部接口信号4676.9.4 S3C44B0X LCD控制器框图4676.9.5 S3C44B0X LCD 控制操作4686.9.6 S3C44B0X LCD视频操作4696.9.7 S3C44B0X LCD控制器的特殊功能寄存器4726.9.8 S3C44B0X LCD控制器应用编程4776.10 S3C44B0X A/D转换器功能及应用开发4796.10.1 S3C44B0X的A/D转换器概述4806.10.2 S3C44B0X A/D转换器特点4806.10.3 S3C44B0X的A/D转换操作4806.10.4 S3C44B0X A/D转换的特殊功能寄存器4826.10.5 S3C44B0X A/D转换器应用编程4846.11 S3C44B0X RTC功能及应用开发4846.11.1 S3C44B0X RTC概述4856.11.2 S3C44B0X RTC特性4856.11.3 S3C44B0X RTC操作4856.11.4 S3C44B0X RTC特殊功能寄存器4876.11.5 S3C44B0X RTC应用编程4936.12 S3C44B0X看门狗定时器功能及应用开发4956.12.1 S3C44B0X看门狗定时器概述4966.12.2 S3C44B0X看门狗定时器特殊功能寄存器4966.12.3 S3C44B0X看门狗定时器应用编程4986.13 S3C44B0X I2C总线接口功能及应用开发4996.13.1 S3C44B0X I2C总线概述4996.13.2 S3C44B0X I2C总线接口操作4996.13.3 S3C44B0X I2C接口特殊功能寄存器5036.13.4 S3C44B0X I2C总线应用编程5066.14 S3C44B0X IIS总线接口功能及应用开发5076.14.1 S3C44B0X IIS概述5076.14.2 S3C44B0X IIS特性5086.14.3 S3C44B0X IIS功能描述5086.14.4 S3C44B0X IIS接口工作模式5096.14.5 S3C44B0X音频串行接口格式5096.14.6 S3C44B0X IIS接口特殊功能寄存器5116.14.7 S3C44B0X IIS应用编程5146.15 S3C44B0X SIO功能及应用开发5176.15.1 S3C44B0X SIO概述5176.15.2 S3C44B0X SIO特点5176.15.3 S3C44B0X SIO正常操作模式 5176.15.4 S3C44B0X SIO DMA 操作5186.15.5 S3C44B0X SIO 接口特殊功能寄存器5196.16 基于S3C44B0X的S3CEV40开发介绍5216.16.1 S3CEV40基本功能介绍5216.16.2 S3CEV40X外围接口硬件资源简介5226.17 S3C44B0X启动程序设计5266.18 USB接口功能开发实例5336.18.1 USB简介5336.18.2 USB接口电路设计5356.18.3 USB接口控制程序设计536习题543第7章 μC/OSⅡ及应用开发7.1 实时操作系统5447.2 μC/OSⅡ操作系统5457.2.1 μC/OSⅡ简介5457.2.2 μC/OSⅡ的特点5477.2.3 μC/OSⅡ的内核结构5487.3 μC/OSⅡ的内核5547.3.1 任务调度5547.3.2 任务间的通信与同步5557.3.3 任务管理5587.3.4 时间管理5597.3.5 内存管理5607.3.6 μC/OSⅡ的文件体系5617.4 μC/OSⅡ应用程序开发5627.4.1 变量类型5627.4.2 应用程序基本结构5637.4.3 μC/OSⅡAPI介绍5647.4.4 μC/OSⅡ多任务实现机制5657.5 μC/OSⅡ在S3CEV40上的移植5667.5.1 移植条件5667.5.2 移植步骤5677.5.3 移植μC/OSⅡ后的测试572习题573第8章 μCLinux及应用开发8.1 嵌入式Linux概况5748.1.1 Linux简介5748.1.2 嵌入式Linux5798.1.3 嵌入式Linux的版本5808.1.4 嵌入式Linux应用5818.2 开发工具GNU的使用5828.2.1 GNU简介5828.2.2 GCC介绍5838.2.3 makefile介绍5888.2.4 gdb调试工具5908.3 Linux内核分析5918.3.1 Linux内核概述5928.3.2 进程管理5928.3.3 内存管理5948.3.4 文件系统管理5968.3.5 设备管理5978.3.6 网络管理5988.4 μCLinux操作系统5998.4.1 进程管理6008.4.2 内存管理6028.4.3 文件系统6038.5 构造嵌入式Linux系统6058.5.1 构造嵌入式Linux系统的几个关键问题6058.5.2 构造嵌入式Linux系统的关键步骤6088.6 μCLinux应用程序开发6108.6.1 μCLinux程序设计要点6108.6.2 高效的程序开发6118.7 μCLinux在 S3CEV40上的移植6128.7.1 移植前的准备6128.7.2 移植步骤6128.8 基于S3CEV40平台的μCLinux开发实例6168.8.1 μCLinux编译运行6168.8.2 Boot Loader编译运行6178.8.3 μClinux内核调试实验6188.8.4 在文件系统中增加应用程序6188.8.5 多进程应用程序的编写及调试6198.8.6 网络应用程序的编写及调试619习题620参考文献621