ARM嵌入式系统开发:软件设计与优化
基本信息
- 作者: (美)Andrew Sloss, Dominic Symes, Chris Wright [作译者介绍]
- 译者: 沈建华
- 出版社:北京航空航天大学出版社
- ISBN:7810776525
- 上架时间:2005-6-15
- 出版日期:2005 年5月
- 开本:16开
- 页码:646
- 版次:1-1
- 所属分类:
计算机 > 计算机组织与体系结构 > 嵌入式计算机
编辑推荐
从事ARM嵌入式系统软件开发的每一位工程师的桌上都应摆着这本书。对于初学者,它是一本详尽,透彻的使用指南,对于ARM专家,它则是一本有益的参考书!
内容简介回到顶部↑
本书从软件设计的角度,全面、系统地介绍了arm处理器的基本体系结构和软件设计与优化方法。内容包括:arm处理器基础;arm/thumb指令集;c语言与汇编语言程序的设计与优化;基本运算、操作的优化;基于arm的dsp;异常与中断处理;固件与嵌入式os;cache与存储器管理;armv6体系结构的特点等。全书内容完整,针对各种不同的arm内核系统结构都有详尽论述,并有大量的例子和源代码。附录给出了完整的armv4/v5/thumb指令的功能、编码、周期定时以及汇编参考。
本书适于从事arm嵌入式系统教学与研发,或想把其它嵌入式平台的软件移植到arm平台上去的专业技术人员使用,要求对arm处理器有一定的了解,并有c语言和汇编语言基础。若在编译原理、操作系统、数字信号处理、计算机体系结构等方面有一定的基础,则效果会更好。
本书也可作为嵌入式系统专业方向的本科生和研究生相关课程的教材或教学参考书。
本书从开发者的角度,侧重于软件方面,全面描述了arm内核的操作。它不仅示范了如何用c语言和汇编语言编写高效的arm软件,还说明了如何优化代码。本书中的所有范例程序都可以集成到商用产品中,或者作为模板,以加速软件开发。
本书涵盖了arm和thumb指令集、intel的xscale处理器,概括了arm体系结构的不同版本之间的差异,示范了如何实现dsp算法,解释了异常和中断处理,描述了围绕arm内核的cache技术,以及最有效的存储器管理技术。
最后一章介绍了armv6体系结构的特征和arm未来的发展,以及对指令集所做的最新改进,这些改进增强了arm体系结构的dsp和多媒体处理能力。
本书特色
●本书从系统和软件的角度来描述arm内核,这是与其它书的显著差别。
●作者结合了丰富的arm软件工程经验和arm开发者所需要的广泛、透彻的知识。
●书中提供了许多实用的可运行代码范例,并作了详尽的解释,可以从出版商的网站下载:http://www.mkp.com/companions/1558608745。
●包含了一个简单的嵌入式操作系统。
本书适于从事arm嵌入式系统教学与研发,或想把其它嵌入式平台的软件移植到arm平台上去的专业技术人员使用,要求对arm处理器有一定的了解,并有c语言和汇编语言基础。若在编译原理、操作系统、数字信号处理、计算机体系结构等方面有一定的基础,则效果会更好。
本书也可作为嵌入式系统专业方向的本科生和研究生相关课程的教材或教学参考书。
本书从开发者的角度,侧重于软件方面,全面描述了arm内核的操作。它不仅示范了如何用c语言和汇编语言编写高效的arm软件,还说明了如何优化代码。本书中的所有范例程序都可以集成到商用产品中,或者作为模板,以加速软件开发。
本书涵盖了arm和thumb指令集、intel的xscale处理器,概括了arm体系结构的不同版本之间的差异,示范了如何实现dsp算法,解释了异常和中断处理,描述了围绕arm内核的cache技术,以及最有效的存储器管理技术。
最后一章介绍了armv6体系结构的特征和arm未来的发展,以及对指令集所做的最新改进,这些改进增强了arm体系结构的dsp和多媒体处理能力。
本书特色
●本书从系统和软件的角度来描述arm内核,这是与其它书的显著差别。
●作者结合了丰富的arm软件工程经验和arm开发者所需要的广泛、透彻的知识。
●书中提供了许多实用的可运行代码范例,并作了详尽的解释,可以从出版商的网站下载:http://www.mkp.com/companions/1558608745。
●包含了一个简单的嵌入式操作系统。
作译者回到顶部↑
本书提供作译者介绍
Abdrew N.Sloss
于1992年获得Herefordshire大学(英国)计算机科学学土学位,英国计算机协会认证注册工程师(C.Eng,MBCS)。他已在计算机行业工作了16年,从1987年开始参与有关ARM处理器的研发,在ARM处理器上开发了众多领域的应用项目,积累了丰富的经验。他为Emerald出版集团(英国)设计了首个能够在ARM2和ARM3处理器上运行的针对中文和埃及象形文字的编辑系统。他在ARM公司工作了6年多,目前是ARM在美国加州Los Gatos的技术销售工程师,负责为开发新产品的公司提供建议和支持。
Dominic .. << 查看详细
于1992年获得Herefordshire大学(英国)计算机科学学土学位,英国计算机协会认证注册工程师(C.Eng,MBCS)。他已在计算机行业工作了16年,从1987年开始参与有关ARM处理器的研发,在ARM处理器上开发了众多领域的应用项目,积累了丰富的经验。他为Emerald出版集团(英国)设计了首个能够在ARM2和ARM3处理器上运行的针对中文和埃及象形文字的编辑系统。他在ARM公司工作了6年多,目前是ARM在美国加州Los Gatos的技术销售工程师,负责为开发新产品的公司提供建议和支持。
Dominic .. << 查看详细
目录回到顶部↑
第1章 基于arm的嵌入式系统1
1.1 risc设计思想2
1.2 arm设计思想3
1.3 嵌入式系统的硬件5
1.3.1 arm总线技术6
1.3.2 amba总线协议6
1.3.3 存储器7
1.3.4 外设9
1.4 嵌入式系统的软件10
1.4.1 初始化(启动)代码10
1.4.2 操作系统11
1.4.3 应用程序12
1.5 总结12
第2章 arm处理器基础1
2.1 寄存器16
2.2 当前程序状态寄存器17
2.2.1 处理器模式18
2.2.2 分组寄存器18
2.2.3 状态和指令集21
2.2.4 中断屏蔽22
1.1 risc设计思想2
1.2 arm设计思想3
1.3 嵌入式系统的硬件5
1.3.1 arm总线技术6
1.3.2 amba总线协议6
1.3.3 存储器7
1.3.4 外设9
1.4 嵌入式系统的软件10
1.4.1 初始化(启动)代码10
1.4.2 操作系统11
1.4.3 应用程序12
1.5 总结12
第2章 arm处理器基础1
2.1 寄存器16
2.2 当前程序状态寄存器17
2.2.1 处理器模式18
2.2.2 分组寄存器18
2.2.3 状态和指令集21
2.2.4 中断屏蔽22
译者序回到顶部↑
2004年7月,一个偶然的机会,我去北京参加美国国家半导体(NS)公司的一个颁奖活动,正巧北京航空航天大学出版社的马广云老师打电话给我,说有一本关于ARM软件设计与优化的英文原版书,各方评价都很高,是否可以帮助翻译。我看到这本原版著作后,便当即答应尽快翻译此书。这确实是本好书。
我是从2000年开始接触、使用ARM处理器的。2001年2月至2002年2月,我在加拿大维多利亚大学访学期间,对ARM体系结构进行了分析、研究,并以CirrusLogic的EP7312和EP9312为美国一家公司做了两个嵌入式无线应用的系统设计。出于对嵌入式系统的浓厚兴趣和对ARM处理器前景的认同,近几年,我和我们实验室的其他老师、研究生一起,使用ARM处理器设计、开发了10多个应用项目、产品和一些软/硬件基础平台。软件部分包括OS移植、驱动、FAT文件系统、GUI、TCP/IP网络协议栈、WiFi(802.11b)、USB协议栈、实时音频、图像信号处理以及许多应用软件。涉及的ARM处理器芯片有Samsung的S3C44BOX,4510,2410;Atmel的AT91R40008,RM9200;Cirrus Logic的EP7312,EP93121Philips的LPC2106,2132,2292;OKI的ML674000;Analog Device的AduC7026;In-tel的Xscale PXA255等。
多年对ARM系统的研究与实践,一方面加深了我们对ARM处理器系统的理解并丰富了我们的经验;另一方面也使我们深深感到了嵌入式软件设计与优化的特殊重要性。嵌入式系统由于其硬件资源、成本的限制,以及一些实时需求,许多在PC等标准平台上的软件(包括系统软件和应用软件)都不能直接搬到一个特殊的嵌入式硬件平台上,而必须经过适当的裁剪、优化;否则就可能产生很差的效果,甚至会导致系统瘫痪。通过对软件系统的合理设计与优化,可以降低对系统硬件资源(如CPU性能、存储器容量等)的需求,也可以降低系统功耗,从而使一个不可行的系统变为可行,也可以把一个毫无竞争力的产品变得极有竞争力!这里,可以把程序的优化过程看作是一个艺术加工过程,精雕细琢,一步步把一个平庸之作变成一件艺术品,体现出其真正的价值。
当我看完这本原版书后,感觉它写出了这几年我们正在研究、摸索而尚未能整理出来的许多东西,是从软件系统的角度对ARM系统开发的一个原则性指导,也是嵌入式软件开发者从入门变为高手的一个必备指南。作者论述简洁明了,把原本一些较复杂的问题(如嵌入式OS),只用很少的篇幅就把一个基本框架说得很清楚,确有功底深厚,举重若轻之感。书中论述的一些知识、方法和技巧,也是做好一个嵌入式软件的基础。只有把许多细致的基础工作做扎实,才能聚沙成塔,编写出高效的软件,创造出具有竞争力的产品。翻译此书,希望能对目前国内32位(ARM)嵌入式系统教学、研发热潮中的广大专业技术人员有所帮助,并提升32位嵌入式系统应用的水平。
本书系统介绍了基于ARM的软件设计与优化方法,知识面较广,涉及了计算机学科的很多基础知识,包括C语言与汇编语言程序设计、编译原理、数据结构、操作系统、计算机体系结构、数值计算、数字信号处理等内容;同时也给翻译工作带来了一定的困难,许多词汇、术语若按字面上翻译,则很难确切地表达出其本意,我们主要根据其上下文内容和中文习惯,并参照其他相关的中文书籍,进行意译。如5.9节中的aligned,译成“(地址)边界对齐的”,endianness译成“字节排列方式(大/小端)”;6.2书中的profiler,译成“性能分析器”等。另外一些简单的常用词,如load-store,在用作名词时不译,在用作动词时译成“装载—存储”,如“load指令在装载数据时……”,而不译成“装载指令在装载数据时……”。关于cache写策略的writethrough和writeback,本书中分别译为“直写”和“回写”,而没有用通常所说的“写直达”和“写回”,我们认为这样更简单明了而贴近原意。还有一些专业词汇,如DSP部分的“tap(抽头)”、“biquad(gt阶节)”等,首次出现时都给出译文和英文,以后简单而都能理解的一般只给出英文,特别是用作单位时,如cycles/tap和cycles/biquad等。还有ARMv5和ARMv6体系结构的一些内容,几乎找不到相关资料可参考,也没有实验平台可以验证,只能根据我们的理解进行翻译。另外,对于一些程序中的简单注释,考虑到此书并非入门级读物,以及书中已有较详细的说明,经与出版社商量,没有全部翻译。
为了尊重原著,本书有些用词可能与国内一些书不太一致,例如原著中多处出现的"processor(处理器)”,是一种广义的泛指,可能是指一个ARM内核或内核中的一部分,也可能是指一个芯片;另外在一些地方(如表2.10中),把ARM7TDMI,ARM9TDMI,ARM720T及ARM920T等都统称为“CPU核(core)”。所以本书也不区分“内核”与“核”。请读者阅读时注意。
在翻译过程中,发现了原著中的一些错误与不妥之处,通过与原作者多次交流并得到确认,在译稿中已得到纠正。还有一些标有“译者注”的地方,是我们根据对原文的理解,结合国内的习惯用法,作的一些补充说明。
本书对许多问题作了简明、细致的阐述,论述非常客观、公正。对一个事物的介绍,总是结合其背景或环境;对一个问题的描述或改进,一般也是从正、反两方面来进行,既说明了一种技术、方法对某方面的益处,同时也指出可能对另一方面造成的负面影响,即使对ARM处理器的介绍,也并非全是褒奖之词。这种严谨、科学的辩证思维和工作作风,更是值得我们每一个人学习并应身体力行的。
全书主要由笔者翻译并校对。我的研究生张群忠、沈颖、梁丹、庄艺唐、姜宁、吴红举及杨海波等参与了部分内容的翻译和资料整理工作。我的同事续晋华老师帮助修改和审核了第8章。我的同事杨艳琴老师通读了译稿,并提出了许多修改建议。原著的3位作者Andrew N.Sloss,DominicSymes和ChrisWright及时提供了许多帮助,Andrew N.Sloss先生还亲临我们实验室交流、指导。在此书的翻译过程中,还得到了ARM(中国)总裁谭军博士、费浙平先生,北京航空航天大学出版社马广云博士、胡晓柏编辑,深圳英蓓特信息技术有限公司徐光峰先生,广州周立功单片机发展有限公司周立功先生的热情指导和鼓励。在此,谨向他(她)们表示衷心的感谢。
我也要特别感谢我的家人——妻子戴军、女儿沈维嘉,正是由于她们的无私帮助和全力支持,使我能全身心地投入到自己所热爱的工作之中,并在短短6个月的时间里完成了此书的翻译工作。
翻译是一件很难做得完美的事。由于时间仓促及水平所限,错误及不妥之处,请各位读者批评指正,并提出宝贵意见。我也会在我们实验室的网站(WWW.emlab.net)上及时发布相关信息,欢迎访问并相互交流。
沈建华
2005年2月
于华东师范大学
我是从2000年开始接触、使用ARM处理器的。2001年2月至2002年2月,我在加拿大维多利亚大学访学期间,对ARM体系结构进行了分析、研究,并以CirrusLogic的EP7312和EP9312为美国一家公司做了两个嵌入式无线应用的系统设计。出于对嵌入式系统的浓厚兴趣和对ARM处理器前景的认同,近几年,我和我们实验室的其他老师、研究生一起,使用ARM处理器设计、开发了10多个应用项目、产品和一些软/硬件基础平台。软件部分包括OS移植、驱动、FAT文件系统、GUI、TCP/IP网络协议栈、WiFi(802.11b)、USB协议栈、实时音频、图像信号处理以及许多应用软件。涉及的ARM处理器芯片有Samsung的S3C44BOX,4510,2410;Atmel的AT91R40008,RM9200;Cirrus Logic的EP7312,EP93121Philips的LPC2106,2132,2292;OKI的ML674000;Analog Device的AduC7026;In-tel的Xscale PXA255等。
多年对ARM系统的研究与实践,一方面加深了我们对ARM处理器系统的理解并丰富了我们的经验;另一方面也使我们深深感到了嵌入式软件设计与优化的特殊重要性。嵌入式系统由于其硬件资源、成本的限制,以及一些实时需求,许多在PC等标准平台上的软件(包括系统软件和应用软件)都不能直接搬到一个特殊的嵌入式硬件平台上,而必须经过适当的裁剪、优化;否则就可能产生很差的效果,甚至会导致系统瘫痪。通过对软件系统的合理设计与优化,可以降低对系统硬件资源(如CPU性能、存储器容量等)的需求,也可以降低系统功耗,从而使一个不可行的系统变为可行,也可以把一个毫无竞争力的产品变得极有竞争力!这里,可以把程序的优化过程看作是一个艺术加工过程,精雕细琢,一步步把一个平庸之作变成一件艺术品,体现出其真正的价值。
当我看完这本原版书后,感觉它写出了这几年我们正在研究、摸索而尚未能整理出来的许多东西,是从软件系统的角度对ARM系统开发的一个原则性指导,也是嵌入式软件开发者从入门变为高手的一个必备指南。作者论述简洁明了,把原本一些较复杂的问题(如嵌入式OS),只用很少的篇幅就把一个基本框架说得很清楚,确有功底深厚,举重若轻之感。书中论述的一些知识、方法和技巧,也是做好一个嵌入式软件的基础。只有把许多细致的基础工作做扎实,才能聚沙成塔,编写出高效的软件,创造出具有竞争力的产品。翻译此书,希望能对目前国内32位(ARM)嵌入式系统教学、研发热潮中的广大专业技术人员有所帮助,并提升32位嵌入式系统应用的水平。
本书系统介绍了基于ARM的软件设计与优化方法,知识面较广,涉及了计算机学科的很多基础知识,包括C语言与汇编语言程序设计、编译原理、数据结构、操作系统、计算机体系结构、数值计算、数字信号处理等内容;同时也给翻译工作带来了一定的困难,许多词汇、术语若按字面上翻译,则很难确切地表达出其本意,我们主要根据其上下文内容和中文习惯,并参照其他相关的中文书籍,进行意译。如5.9节中的aligned,译成“(地址)边界对齐的”,endianness译成“字节排列方式(大/小端)”;6.2书中的profiler,译成“性能分析器”等。另外一些简单的常用词,如load-store,在用作名词时不译,在用作动词时译成“装载—存储”,如“load指令在装载数据时……”,而不译成“装载指令在装载数据时……”。关于cache写策略的writethrough和writeback,本书中分别译为“直写”和“回写”,而没有用通常所说的“写直达”和“写回”,我们认为这样更简单明了而贴近原意。还有一些专业词汇,如DSP部分的“tap(抽头)”、“biquad(gt阶节)”等,首次出现时都给出译文和英文,以后简单而都能理解的一般只给出英文,特别是用作单位时,如cycles/tap和cycles/biquad等。还有ARMv5和ARMv6体系结构的一些内容,几乎找不到相关资料可参考,也没有实验平台可以验证,只能根据我们的理解进行翻译。另外,对于一些程序中的简单注释,考虑到此书并非入门级读物,以及书中已有较详细的说明,经与出版社商量,没有全部翻译。
为了尊重原著,本书有些用词可能与国内一些书不太一致,例如原著中多处出现的"processor(处理器)”,是一种广义的泛指,可能是指一个ARM内核或内核中的一部分,也可能是指一个芯片;另外在一些地方(如表2.10中),把ARM7TDMI,ARM9TDMI,ARM720T及ARM920T等都统称为“CPU核(core)”。所以本书也不区分“内核”与“核”。请读者阅读时注意。
在翻译过程中,发现了原著中的一些错误与不妥之处,通过与原作者多次交流并得到确认,在译稿中已得到纠正。还有一些标有“译者注”的地方,是我们根据对原文的理解,结合国内的习惯用法,作的一些补充说明。
本书对许多问题作了简明、细致的阐述,论述非常客观、公正。对一个事物的介绍,总是结合其背景或环境;对一个问题的描述或改进,一般也是从正、反两方面来进行,既说明了一种技术、方法对某方面的益处,同时也指出可能对另一方面造成的负面影响,即使对ARM处理器的介绍,也并非全是褒奖之词。这种严谨、科学的辩证思维和工作作风,更是值得我们每一个人学习并应身体力行的。
全书主要由笔者翻译并校对。我的研究生张群忠、沈颖、梁丹、庄艺唐、姜宁、吴红举及杨海波等参与了部分内容的翻译和资料整理工作。我的同事续晋华老师帮助修改和审核了第8章。我的同事杨艳琴老师通读了译稿,并提出了许多修改建议。原著的3位作者Andrew N.Sloss,DominicSymes和ChrisWright及时提供了许多帮助,Andrew N.Sloss先生还亲临我们实验室交流、指导。在此书的翻译过程中,还得到了ARM(中国)总裁谭军博士、费浙平先生,北京航空航天大学出版社马广云博士、胡晓柏编辑,深圳英蓓特信息技术有限公司徐光峰先生,广州周立功单片机发展有限公司周立功先生的热情指导和鼓励。在此,谨向他(她)们表示衷心的感谢。
我也要特别感谢我的家人——妻子戴军、女儿沈维嘉,正是由于她们的无私帮助和全力支持,使我能全身心地投入到自己所热爱的工作之中,并在短短6个月的时间里完成了此书的翻译工作。
翻译是一件很难做得完美的事。由于时间仓促及水平所限,错误及不妥之处,请各位读者批评指正,并提出宝贵意见。我也会在我们实验室的网站(WWW.emlab.net)上及时发布相关信息,欢迎访问并相互交流。
沈建华
2005年2月
于华东师范大学
前言回到顶部↑
如今,嵌入式系统开发人员和片上系统设计人员越来越多地选择特定的处理器内核和配套的工具、库及现成的组件来快速开发基于微处理器的新产品。ARM在这一方面表现尤为突出。在过去的10年中,ARM体系结构已成为世界上最受欢迎的32位体系结构,在本书完成时,基于ARM的处理器已发售了超过20亿片。ARM处理器已被嵌入到各种产品——从移动电话到汽车刹车系统。全球的ARM合作伙伴和第三方供应商,在半导体和产品设计公司中迅速发展壮大,包括硬件工程师、系统设计人员和软件开发人员。但至今还没有一本书能够较好地满足基于ARM的嵌入式系统及软件开发的需要,本书将填补这一空白。
本书的目标是,从一名产品开发者的角度来描述ARM内核的操作,重点放在软件设计上。由于本书是专门写给有一些嵌入式系统开发经验而可能对ARM体系结构不熟悉的工程师的,所以不要求有以前的ARM开发经验。
为了帮助读者尽快地学以致用,书中包含了一系列ARM软件范例。它们可以被集成到商业产品中,或者作为模板以快速创建应用软件。这些范例都已编号,读者可以在Morgan Kaufmann出版社的网站上方便地找到这些源代码。对于有ARM开发经验而想要获得ARM系统最高效能的人来说,这些代码同样颇有价值。
本书的结构
本书开头部分简要介绍了ARM处理器的设计原则,说明了它与传统RISC思想的区别及其原因。第1章还介绍了基于ARM处理器的简单嵌入式系统。
第2章进一步深入到硬件,介绍了ARM处理器核,并综述了当前市场上的ARM内核。
第3章和第4章分别介绍了ARM和Thumb指令集,也为本书后面的内容打下基础;有一些关键指令的解释,包括完整的例子,因此这2章可以看作是指令集的使用指南。
通过我们在协助ARM客户工作时开发的许多例子,第5章和第6章讲述了如何编写高效的代码。第5章讲述了在ARM体系结构上编写可以被高效编译的C代码的技巧和规则。这些技巧和规则已得到了证实,并且有助于确定哪些代码应该被优化。第6章详述了编写和优化ARM汇编代码的最佳方法,这对于通过降低系统功耗和时钟频率来改善系统性能是至关重要的。
由于在许多算法中都用到一些基本操作,所以如何优化它们是很值得研究的。第7章讨论了如何针对ARM处理器优化基本操作。该章不仅提供了实现一般基本操作的优化参考,而且为想得到一种快速参考方法的使用者提供了更加复杂的数学运算的优化参考。对于想要深入研究各个实现的读者,还提供了所需的理论知识。
嵌入式音频和视频系统应用的需求正在日益增长。它们需要数字信号处理(DSP)能力,直到最近,这种处理能力一般仍是由独立的DSP芯片提供的。然而,现在ARM体系结构提供了更高的存储器带宽和快速乘累加运算,使得仅用一个ARM内核的设计就能支持这些应用。第8章研究了如何尽可能改善ARM在数字处理应用方面的性能以及怎样实现DSP算法。
异常处理是嵌入式系统的核心。高效的异常处理能够大大改善系统的性能。第9章以一系列翔实的范例介绍了异常处理和中断的理论与实践。
固件是所有嵌入式系统的重要部分。在第10章中,通过我们设计的、称为Sandstone的一个简单固件包,介绍了固件的结构和设计。本章还介绍了一些可以运行在ARM上的流行的、工业固件包。
第11章以我们设计的、称为简单小操作系统(SLOS)的一个简单嵌入式操作系统为例,示范了嵌入式操作系统的实现方法。
第12,13,14章重点关注存储系统。第12章讨论了围绕ARM内核的各种cache技术,演示了带cache的特定ARM处理器的cache控制例程。第13章讨论了存储器保护单元(MPU)。第14章讨论了存储器管理单元(MMU)。
最后,在第15章,展望了ARM体系结构的未来,重点讲述今后几年内ARM指令集的发展方向和正在实现的新技术。
附录提供了详细的指令集参考、周期定时以及特定的ARM产品。
网上的范例
如前所述,本书有大量的经过测试的实用程序,可以帮助强化有关概念和方法。它们在Morgan Kaufmann出版社的网站上
http://www.mkp.com/companions/1558608745可以找到。
本书的目标是,从一名产品开发者的角度来描述ARM内核的操作,重点放在软件设计上。由于本书是专门写给有一些嵌入式系统开发经验而可能对ARM体系结构不熟悉的工程师的,所以不要求有以前的ARM开发经验。
为了帮助读者尽快地学以致用,书中包含了一系列ARM软件范例。它们可以被集成到商业产品中,或者作为模板以快速创建应用软件。这些范例都已编号,读者可以在Morgan Kaufmann出版社的网站上方便地找到这些源代码。对于有ARM开发经验而想要获得ARM系统最高效能的人来说,这些代码同样颇有价值。
本书的结构
本书开头部分简要介绍了ARM处理器的设计原则,说明了它与传统RISC思想的区别及其原因。第1章还介绍了基于ARM处理器的简单嵌入式系统。
第2章进一步深入到硬件,介绍了ARM处理器核,并综述了当前市场上的ARM内核。
第3章和第4章分别介绍了ARM和Thumb指令集,也为本书后面的内容打下基础;有一些关键指令的解释,包括完整的例子,因此这2章可以看作是指令集的使用指南。
通过我们在协助ARM客户工作时开发的许多例子,第5章和第6章讲述了如何编写高效的代码。第5章讲述了在ARM体系结构上编写可以被高效编译的C代码的技巧和规则。这些技巧和规则已得到了证实,并且有助于确定哪些代码应该被优化。第6章详述了编写和优化ARM汇编代码的最佳方法,这对于通过降低系统功耗和时钟频率来改善系统性能是至关重要的。
由于在许多算法中都用到一些基本操作,所以如何优化它们是很值得研究的。第7章讨论了如何针对ARM处理器优化基本操作。该章不仅提供了实现一般基本操作的优化参考,而且为想得到一种快速参考方法的使用者提供了更加复杂的数学运算的优化参考。对于想要深入研究各个实现的读者,还提供了所需的理论知识。
嵌入式音频和视频系统应用的需求正在日益增长。它们需要数字信号处理(DSP)能力,直到最近,这种处理能力一般仍是由独立的DSP芯片提供的。然而,现在ARM体系结构提供了更高的存储器带宽和快速乘累加运算,使得仅用一个ARM内核的设计就能支持这些应用。第8章研究了如何尽可能改善ARM在数字处理应用方面的性能以及怎样实现DSP算法。
异常处理是嵌入式系统的核心。高效的异常处理能够大大改善系统的性能。第9章以一系列翔实的范例介绍了异常处理和中断的理论与实践。
固件是所有嵌入式系统的重要部分。在第10章中,通过我们设计的、称为Sandstone的一个简单固件包,介绍了固件的结构和设计。本章还介绍了一些可以运行在ARM上的流行的、工业固件包。
第11章以我们设计的、称为简单小操作系统(SLOS)的一个简单嵌入式操作系统为例,示范了嵌入式操作系统的实现方法。
第12,13,14章重点关注存储系统。第12章讨论了围绕ARM内核的各种cache技术,演示了带cache的特定ARM处理器的cache控制例程。第13章讨论了存储器保护单元(MPU)。第14章讨论了存储器管理单元(MMU)。
最后,在第15章,展望了ARM体系结构的未来,重点讲述今后几年内ARM指令集的发展方向和正在实现的新技术。
附录提供了详细的指令集参考、周期定时以及特定的ARM产品。
网上的范例
如前所述,本书有大量的经过测试的实用程序,可以帮助强化有关概念和方法。它们在Morgan Kaufmann出版社的网站上
http://www.mkp.com/companions/1558608745可以找到。
评论交流
共有94人开贴评论 129人参与评论 85人参与打分 查看
评价等级:







发表于:2006-6-29 16:02:00
大家好!
非常感谢各位的宽容,没有批评此书的翻译质量~-~。在此书出版发行的一年里,除了China-pub的书评,还有不少读者给我发了email:有的提出了书中的疑似问题;有的希望进行技术交流、合作;有的要求提供原书的电子版;更多的是对我们的工作表示赞赏和肯定。对大部分email,我已经作了回复。在此,我作一简要说明:
1,关于对此书的个人看法,我已经在书的“译者序”作了比较全面的阐述。
2,关于此书的电子版。外文原版出版社对此控制很严,北航购买了版权也没有获得电子版,我们也是拿着原版书翻译的(可想工作量之大)。我和北航出版社签有协议,书的中文电子版是肯定不能提供的,请各位谅解。
3,有关此书的勘误。第一次印刷的,有不少排版、印刷错误,在第二次印刷的书中已经更正。现在书城卖的都是第二次印刷的(5000-8000册)。至今我们已确认的勘误(与原作者确认过),请参见我们实验室的网站:
http://www.emlab.net/assets/download/ARM_trans/arm_errortable.html
3,此书的繁体中文版(从简体中文版翻过去的),已有台湾全华科技出版:
http://www.opentech.com.tw/search/bookinfo.asp?isbn=9572150839
4,我们和意法半导体(ST)合作,在8月份将出版一本STR7的书。ST的ARM很有特色,特别是软件库非常完整,便于开发。有单5V供电的,还有ARM966E核的单片MCU。当然,英文好的直接看datasheet和user guide就可以了。
再次谢谢大家的信任和支持!
非常感谢各位的宽容,没有批评此书的翻译质量~-~。在此书出版发行的一年里,除了China-pub的书评,还有不少读者给我发了email:有的提出了书中的疑似问题;有的希望进行技术交流、合作;有的要求提供原书的电子版;更多的是对我们的工作表示赞赏和肯定。对大部分email,我已经作了回复。在此,我作一简要说明:
1,关于对此书的个人看法,我已经在书的“译者序”作了比较全面的阐述。
2,关于此书的电子版。外文原版出版社对此控制很严,北航购买了版权也没有获得电子版,我们也是拿着原版书翻译的(可想工作量之大)。我和北航出版社签有协议,书的中文电子版是肯定不能提供的,请各位谅解。
3,有关此书的勘误。第一次印刷的,有不少排版、印刷错误,在第二次印刷的书中已经更正。现在书城卖的都是第二次印刷的(5000-8000册)。至今我们已确认的勘误(与原作者确认过),请参见我们实验室的网站:
http://www.emlab.net/assets/download/ARM_trans/arm_errortable.html
3,此书的繁体中文版(从简体中文版翻过去的),已有台湾全华科技出版:
http://www.opentech.com.tw/search/bookinfo.asp?isbn=9572150839
4,我们和意法半导体(ST)合作,在8月份将出版一本STR7的书。ST的ARM很有特色,特别是软件库非常完整,便于开发。有单5V供电的,还有ARM966E核的单片MCU。当然,英文好的直接看datasheet和user guide就可以了。
再次谢谢大家的信任和支持!
| 我要写评论 |
| 查看所有评论交流(共94条) |


点击看大图




加载中...