初稿Cortex-M3权威指南前置权威指南Cortex-M3著Joseph Yiu宋岩译-1-
Cortex‐M3 权威指南 初稿 前置 Cortex-M3 权威指南 Joseph Yiu 著 宋岩 译 ‐ 1 ‐
初稿前置Cortex-M3权威指南译序我接触ARM的历史约4年,早期是很欣赏这类处理器,到了后来切身使用它们的机会越来越多,慢慢地有了感觉,也更加喜欢了。在偶然听说Cortex-M3后,我就寞寞地感到它不寻常。只是因为其它工作一直没有去了解它,直到今年初才进一步学习,很快就觉得相知恨晚。当时只能看ARM官方的重量级资料,在看到这本书的英文原福后,更感觉被电到了一样,于是突然有了把它翻译成中文的冲动。经过累计约150个小时的奋战,终于有了此译稿。在翻译过程中,我始终采用下列指导思想:1.尽量使用短句,并且把句子口语化。我认为高深的道理不一定要用高级的语法句型才能表达。想想看,即使是几位博王互相聊天讨论一个课题,也还是使用口语吧,而且火花往往就是在这种讨论中产生呢!2.多用修辞方法,并且常常引用表现力强的词汇一一甚至包括网络用语和脍炙人口的歌词。另外,有时会加工句子,使得风格像是对话。这样做的目的是整个文风更鲜活一一有点像为写出高分作文而努力的样子。这点可能与很多学术著作的“严肃、平实”文风不同,也是一次大胆的尝试。还希望读者不各给予反馈。3.在“宏观”上直译,在“微观”上意译。英语不仅单一句子的语法和汉语不同,并且句子的连贯方式也与汉语不同。因此在十儿个到儿十个单词的范围内,我先把它们翻译成脑子里的“中间语言”,再把中间语言翻译成汉语。这样,就最大地避免了贻笑大方的“英式汉语”。4.有些术语名词不方便翻译成汉语,或者目前的翻译方式不统一,或者与其它术语翻译的结果很接近,如error和fault,就只能用英语意会。此时我就保留英文单词,相信这样比硬生生地翻译成汉语还好。这些词汇主要是:retarget,fault,region等。另外,英文中有一个很能精练表达“两者都”意思的单词及其用法:"both",我也常常保留之。5.图表对颜色的使用比较丰满,尤其是比较大型的插图,相信这样能帮助读者分析和理解。插图是从原图直接复制的,因此失量图变成了位图,无法再适应任何比例的缩放。不过,我在复制原图时,把原图以200%的比例放大,从而提高了图片的质量。6.我在很多地方加了译注。比较短的译注就直接以“()”加在文字后面。比较长的译注则为它开出一个“文字池”,放到相应的“.text”后面并与之相临。早期的译注多用于解释一些不是很广为人知的术语,后期的译注则更多是我认为有必要补充的内容,包括读者在阅读过程中可能会产生的问题,容易混淆的概念,深入理解等。7我对少量自然段作了改编。也有个别部分译自ARM提供的权威文档。本书的翻译工作在40%进度的时候是最困难的时期,有一种好像长跑中遇到了所谓“极限”的感觉。望着距离掉下去还有那么高的滚动条,甚至都有停住的自我暗示了。那天刚好是哀悼日的第一天,我本来情绪很低沉,但在我看到默哀完毕,天安门广场上排山倒海般地呐喊“中国加油”时,我突然有了强烈的共振感觉,那是一种热泪盈眶的激动和感叹,甚全觉得他们就是在鼓励我!让我一下子振作起来,找回了比刚开始还要强烈的千劲,并且更加信心满满。这种精神力量一直推动我翻译完最后一个字,并且还有“余勇可贾”的快感整个翻译的时间跨度是在2008.05.10-2008.06.07,共计28天。不知这是否算得上很“仓促”。想必有很多句式还能改得更好,甚至还有错别字等低级错误。我使用了五笔输入法,可能错别字会错得很离奇,不过肯定逃不过读者雪亮的双眼的。希望读者在发现错误后批评指正。反馈地址是:rock.song@hotmail.com,也可以通过QQ:9471202/9312500。本译稿草稿完成后,我交给几位好友去试读和审校,得以掀出了很多大大小小的bugs。他们是:浮云,土豆波,美眉Y和小胖,在这里以点名表示感谢!宋岩2008.07.02-2 -
Cortex‐M3 权威指南 初稿 前置 译序 我接触 ARM 的历史约 4 年,早期是很欣赏这类处理器,到了后来切身使用它们的机会 越来越多,慢慢地有了感觉,也更加喜欢了。在偶然听说 Cortex‐M3 后,我就冥冥地感到它 不寻常。只是因为其它工作一直没有去了解它,直到今年初才进一步学习,很快就觉得相知 恨晚。当时只能看 ARM 官方的重量级资料,在看到这本书的英文原稿后,更感觉被电到了 一样,于是突然有了把它翻译成中文的冲动。经过累计约 150 个小时的奋战,终于有了此译 稿。在翻译过程中,我始终采用下列指导思想: 1. 尽量使用短句,并且把句子口语化。我认为高深的道理不一定要用高级的语法句型才能 表达。想想看,即使是几位博士互相聊天讨论一个课题,也还是使用口语吧,而且火花 往往就是在这种讨论中产生呢! 2. 多用修辞方法,并且常常引用表现力强的词汇——甚至包括网络用语和脍炙人口的歌词。 另外,有时会加工句子,使得风格像是对话。这样做的目的是整个文风更鲜活——有点 像为写出高分作文而努力的样子。这点可能与很多学术著作的“严肃、平实”文风不同, 也是一次大胆的尝试。还希望读者不吝给予反馈。 3. 在“宏观”上直译,在“微观”上意译。英语不仅单一句子的语法和汉语不同,并且句 子的连贯方式也与汉语不同。因此在十几个到几十个单词的范围内,我先把它们翻译成 脑子里的“中间语言”,再把中间语言翻译成汉语。这样,就最大地避免了贻笑大方的 “英式汉语”。 4. 有些术语名词不方便翻译成汉语,或者目前的翻译方式不统一,或者与其它术语翻译的 结果很接近,如 error 和 fault,就只能用英语意会。此时我就保留英文单词,相信这样 比硬生生地翻译成汉语还好。这些词汇主要是:retarget, fault, region 等。另外,英文中有 一个很能精练表达“两者都”意思的单词及其用法:”both”,我也常常保留之。 5. 图表对颜色的使用比较丰满,尤其是比较大型的插图,相信这样能帮助读者分析和理解。 插图是从原图直接复制的,因此矢量图变成了位图,无法再适应任何比例的缩放。不过, 我在复制原图时,把原图以 200%的比例放大,从而提高了图片的质量。 6. 我在很多地方加了译注。比较短的译注就直接以“()”加在文字后面。比较长的译注则 为它开出一个“文字池”,放到相应的“.text”后面并与之相临。早期的译注多用于解释 一些不是很广为人知的术语,后期的译注则更多是我认为有必要补充的内容,包括读者 在阅读过程中可能会产生的问题,容易混淆的概念,深入理解等。 7. 我对少量自然段作了改编。也有个别部分译自 ARM 提供的权威文档。 本书的翻译工作在 40%进度的时候是最困难的时期,有一种好像长跑中遇到了所谓“极 限”的感觉。望着距离掉下去还有那么高的滚动条,甚至都有停住的自我暗示了。那天刚好 是哀悼日的第一天,我本来情绪很低沉,但在我看到默哀完毕,天安门广场上排山倒海般地 呐喊“中国加油”时,我突然有了强烈的共振感觉,那是一种热泪盈眶的激动和感叹,甚至 觉得他们就是在鼓励我!让我一下子振作起来,找回了比刚开始还要强烈的干劲,并且更加 信心满满。这种精神力量一直推动我翻译完最后一个字,并且还有“余勇可贾”的快感^_^ 整个翻译的时间跨度是在 2008.05.10‐2008.06.07,共计 28 天。不知这是否算得上很“仓 促”。想必有很多句式还能改得更好,甚至还有错别字等低级错误。我使用了五笔输入法, 可能错别字会错得很离奇,不过肯定逃不过读者雪亮的双眼的。希望读者在发现错误后批评 指正。反馈地址是:rock.song@hotmail.com,也可以通过QQ:9471202/9312500。 本译稿草稿完成后,我交给几位好友去试读和审校,得以揪出了很多大大小小的 bugs。 他们是:浮云,土豆波,美眉 Y 和小胖,在这里以点名表示感谢! 宋 岩 2008.07.02 ‐ 2 ‐
初稿前置Cortex-M3权威指南原作序谁是最节能,最擅长把好钢用在刀刃上的人?要让我说,我一定得表一表单片机的开发者。他们使出浑身解术,写出精妙玲珑的代码,把单片机点点滴滴的力量汇集起来,让它如同涌泉一般尽情地进发,灌溉滋养着各行各业。是什么灵丹妙药赐予了他们这么神奇力量?除了好的处理器之外,还要配合好的开发环境和工具链。也正出于此在设计ARM7TDMI处理器时,ARM的工具链工程师们和CPU设计师们强强联手,为了让它的内部结构更优化、更精练、更到位而并肩奋战了很多日日夜夜,终于有了ARM7TDMI的无限辉煌,并且久经岁月的洗礼依旧光芒绽放。珠联壁合的最新果实,是破茧而出的ARMCortex-M3处理器。这个小尤物,处处闪耀着ARM体系结构激动人心的新突破。它基于最新最好的32位ARMV7架构一—这个架构支持高度成功的Thumb-2指令集,还有很多时尚、前卫甚至薪新的特性,充满了新生代的气息。它在很好、很强大的同时,编程模型却变得更加清新爽洁了。不管你是祖国的花朵、是人民教师、还是精明的商人,也无所谓是新手还是骨灰级玩家,Cortex-M3都将尽情展现它的秀外慧中,带给你喜出望外的收获和“激活”!ARM嵌入式解决方案主任Wayne Lyons-3-
Cortex‐M3 权威指南 初稿 前置 原作序 谁是最节能,最擅长把好钢用在刀刃上的人?要让我说,我一定得表一表单片机 的开发者。他们使出浑身解术,写出精妙玲珑的代码,把单片机点点滴滴的力量汇集起 来,让它如同涌泉一般尽情地迸发,灌溉滋养着各行各业。是什么灵丹妙药赐予了他们 这么神奇力量?除了好的处理器之外,还要配合好的开发环境和工具链。也正出于此, 在设计ARM7TDMI处理器时,ARM的工具链工程师们和CPU设计师们强强联手,为了 让它的内部结构更优化、更精练、更到位而并肩奋战了很多日日夜夜,终于有了 ARM7TDMI的无限辉煌,并且久经岁月的洗礼依旧光芒绽放。 珠联璧合的最新果实,是破茧而出的ARM Cortex-M3处理器。这个小尤物,处处 闪耀着ARM体系结构激动人心的新突破。它基于最新最好的32位ARMv7架构——这个 架构支持高度成功的Thumb-2指令集,还有很多时尚、前卫甚至崭新的特性,充满了 新生代的气息。它在很好、很强大的同时,编程模型却变得更加清新爽洁了。不管你是 祖国的花朵、是人民教师、还是精明的商人,也无所谓是新手还是骨灰级玩家, Cortex-M3都将尽情展现它的秀外慧中,带给你喜出望外的收获和“激活”! ARM嵌入式解决方案主任 Wayne Lyons ‐ 3 ‐
初稿前置Cortex-M3权威指南前言不管你是做软件的还是做硬件的,只要相中了ARM的Cortex-M3处理器,这本书就是为你而写。以前Cortex-M3的资料只有两个大部头,分别是:《Cortex-M3技术参考手册》(Cortex-M3TechnicalReferenceManual,简·称Cortex-M3TRM)·《ARMv7-M应用程序级架构参考手册》(ARMv7-MApplicationLevelArchitectureReferenceManual)虽然这它俩差不多是权威到“古文观止”级的,但实在是太深入了,以致于对新手来说那简直就是天书。本书则是一个精简版,并且叙述的前后更有条理。目标读者包括:一线程序员,嵌入式产品设计师,片上系统(SoC)工程师,嵌入式系统发烧友,学院研究员,还包括所有涉猎过单片机和微处理器领域,慧眼识珍看中了Cortex-M3的人民大众们。本书要给Cortex-M3的架构做一个简介,浏览一下指令系统,写几个段代码续练手,说一些硬件特性,再表一表该处理器精深的调试系统。本书还给出了应用程序范例,手把手地教你使用开发工具,包括ARM的工具和GNU的工具链。如果你以前是ARM7TDMI的玩家,正准备着升级装备到Cortex-M3,本书也非常解渴,里面讲述了两者的不同,以及鸟枪换炮的升级过程。- 4 -
Cortex‐M3 权威指南 初稿 前置 前 言 不管你是做软件的还是做硬件的,只要相中了ARM的Cortex‐M3处理器,这本 书就是为你而写。以前Cortex‐M3的资料只有两个大部头,分别是: z 《Cortex‐M3技术参考手册》(Cortex‐M3 Technical Reference Manual, 简 称Cortex‐M3 TRM) z 《ARMv7‐M应用程序级架构参考手册》(ARMv7‐M Application Level Architecture Reference Manual) 虽然这它俩差不多是权威到“古文观止”级的,但实在是太深入了,以致于对 新手来说那简直就是天书。本书则是一个精简版,并且叙述的前后更有条理。目 标读者包括:一线程序员,嵌入式产品设计师,片上系统(SoC)工程师,嵌入 式系统发烧友,学院研究员,还包括所有涉猎过单片机和微处理器领域,慧眼识 珍看中了Cortex‐M3的人民大众们。 本书要给Cortex‐M3的架构做一个简介,浏览一下指令系统,写几个段代码练 练手,说一些硬件特性,再表一表该处理器精深的调试系统。本书还给出了应用 程序范例,手把手地教你使用开发工具,包括ARM的工具和GNU的工具链。如果 你以前是ARM7TDMI的玩家,正准备着升级装备到Cortex‐M3,本书也非常解渴, 里面讲述了两者的不同,以及鸟枪换炮的升级过程。 ‐ 4 ‐
初稿前置Cortex-M3权威指南缩略语含义缩写代号ADKAMBA设计套件AHB先进高性能总线AHB访问端口AHB-APAMBA先进单片机总线架构APB先进外设总线ARMARMARM架构参考手册ASIC行业领域专用集成电路ATB先进跟踪总线BE8字节不变式大端模式CPI每条指令的周期数CPU中央处理单元DAP调试访问端口DSP数字信号处理器/数字信号处理DWT数据观察点及跟踪ETM嵌入式跟踪宏单元FPB闪存地址重载及断点FSRFault状态寄存器HTMCoreSightAHB跟踪宏单元ICE在线仿真器IDE集成开发环境IRQ中断请求(通常是指外部中断的请求)ISA指令系统架构中断服务例程ISRITM指令跟踪宏单元JTAG连结点测试行动组(一个关于测试和调试接口的标准)JTAG-DPJTAG调试端口LR连接寄存器LSB最低有效位LSU加载/存储单元MCU微控制器单元(俗称单片机)MMU存储器管理单元MPU存储器保护单元MSB最高有效位MSP主堆栈指针NMI不可屏蔽中断NVIC嵌套向量中断控制器os操作系统PC程序计数器PSP进程堆栈指针PPB私有外设总线-5-
Cortex‐M3 权威指南 初稿 前置 缩略语 缩写代号 含义 ADK AMBA设计套件 AHB 先进高性能总线 AHB‐AP AHB访问端口 AMBA 先进单片机总线架构 APB 先进外设总线 ARM ARM ARM架构参考手册 ASIC 行业领域专用集成电路 ATB 先进跟踪总线 BE8 字节不变式大端模式 CPI 每条指令的周期数 CPU 中央处理单元 DAP 调试访问端口 DSP 数字信号处理器/数字信号处理 DWT 数据观察点及跟踪 ETM 嵌入式跟踪宏单元 FPB 闪存地址重载及断点 FSR Fault状态寄存器 HTM CoreSight AHB跟踪宏单元 ICE 在线仿真器 IDE 集成开发环境 IRQ 中断请求(通常是指外部中断的请求) ISA 指令系统架构 ISR 中断服务例程 ITM 指令跟踪宏单元 JTAG 连结点测试行动组(一个关于测试和调试接口的标准) JTAG‐DP JTAG调试端口 LR 连接寄存器 LSB 最低有效位 LSU 加载/存储单元 MCU 微控制器单元(俗称单片机) MMU 存储器管理单元 MPU 存储器保护单元 MSB 最高有效位 MSP 主堆栈指针 NMI 不可屏蔽中断 NVIC 嵌套向量中断控制器 OS 操作系统 PC 程序计数器 PSP 进程堆栈指针 PPB 私有外设总线 ‐ 5 ‐