logo资料库

CM3权威指南CnR2(pdf)中文版.pdf

第1页 / 共322页
第2页 / 共322页
第3页 / 共322页
第4页 / 共322页
第5页 / 共322页
第6页 / 共322页
第7页 / 共322页
第8页 / 共322页
资料共322页,剩余部分请下载后查看
前置
网络版初稿的译序
出版致谢(按时间顺序)
原作序
前 言
致谢
缩略语
其它参考资料
chpt01-介绍
1.1 ARM Cortex-M3 处理器初探
1.1.1 从Cortex-M3 处理器内核到基于Cortex-M3的MCU
1.1.2 ARM及ARM架构的背景
1.1.2.1 一路走来
1.2 ARM的各种架构版本
1.2.1 处理器命名法
1.3 指令集的发展
1.4 Thumb-2指令集体系体系结构(ISA)
1.5 Cortex-M3处理器的舞台
1.6 深入研究用的读物
chpt02-Cortex-M3概览
2.1 简介
2.2 寄存器组
2.2.1 R0-R12:通用寄存器
2.2.2 Banked R13: 两个堆栈指针
2.2.3 R14:连接寄存器
2.2.4 R15:程序计数寄存器
2.2.5 特殊功能寄存器
2.3 操作模式和特权极别
2.4 内建的嵌套向量中断控制器
2.4.1 可嵌套中断支持
2.4.2 向量中断支持
2.4.3 动态优先级调整支持
2.4.4 中断延迟大大缩短
2.4.5 中断可屏蔽
2.5 存储器映射
2.6 总线接口
2.7 存储器保护单元(MPU)
2.8 指令集
2.9 中断和异常
2.9b 低功耗与高能效( r2p0修订版)
2.10 调试支持
2.11 Cortex-M3的品性简评
2.11.1 高性能
2.11.2 先进的中断处理功能
2.11.3 低功耗
2.11.4 系统特性
2.11.5 调试支持
chpt03-Cortex-M3基础
3.1 寄存器组
3.1.1 通用目的寄存器R0-R7
3.1.2 通用目的寄存器R8-R12
3.1.3 特殊功能寄存器:
3.1.4 堆栈指针R13
3.1.5 连接寄存器R14
3.1.6 程序计数器R15
3.2 特殊功能寄存器组
程序状态寄存器组(PSRs或曰xPSR)
中断屏蔽寄存器组(PRIMASK, FAULTMASK,以及BASEPRI)
控制寄存器(CONTROL)
3.2.1 程序状态寄存器(PSRs或曰PSR)
应用程序PSR(APSR)
中断号PSR(IPSR)
执行PSR(EPSR)
3.2.2 PRIMASK, FAULTMASK和BASEPRI
3.2.3 控制寄存器(CONTROL)
CONTROL[1]
CONTROL[0]
3.3 操作模式
3.4 异常与中断
3.5 向量表
3.6 栈内存操作
3.6.1 堆栈的基本操作
3.7 Cortex-M3的堆栈实现
3.7.1 再论Cortex-M3的双堆栈机制
3.8 复位序列
chpt04-指令集
4.1 汇编语言基础
4.1.1 汇编语言:基本语法
4.1.2 汇编语言:后缀的使用
4.1.3 汇编语言:统一汇编语言书写语法
4.2 指令集
4.2.1 分类指令表
表4.2 16位数据操作指令
表4.3 16位转移指令
表4.4 16位存储器数据传送指令
表4.5 其它16位指令
表4.6 32位数据操作指令
表4.7 32位存储器数据传送指令
表4.8 32位转移指令
表4.9 其它32位指令
4.2.2 未支持的指令
4.3 近距离检视指令
4.3.1 汇编语言:数据传送
LDR伪指令 vs. ADR伪指令
4.3.2 汇编语言:数据处理
表4.18 常见的算术四则运算指令
表4.19 64位乘法指令
表4.20 常用逻辑操作指令
表4.21 移位和循环指令
表4.22 带符号扩展指令
表4.23 数据序翻转指令
表4.24 位段处理及把玩指令
4.3.3 汇编语言:子程呼叫与无条件跳转指令
4.3.4 汇编语言:标志位与条件转移
表 4.25 Cortex-M3 APSR中可以影响条件转移的4个标志位
表4.26 跳转及条件执行判据
4.3.5 汇编语言:指令隔离(barrier)指令和存储器隔离指令
4.3.6 汇编语言:饱和运算
4.4 CM3中一些前卫的指令
4.4.1 MRS和MSR
4.4.2 IF-THEN
4.4.3 CBZ和CBNZ
4.4.4 SDIV和UDIV
4.4.5 REV, REVH,REV16以及REVSH
4.4.6 RBIT
4.4.7 SXTB, SXTH, UXTB, UXTH
4.4.8 BFC/BFI,UBFX/SBFX
4.4.9 LDRD/STRD
4.4.10 TBB,TBH
chpt05-存储器系统
5.1 存储系统功能概览
5.2 存储器映射
5.3 存储器的各种访问属性
5.4 存储器的缺省访问许可
5.5 位带操作
5.5.1 位带操作的优越性
5.5.2 其它数据长度上的位带操作
5.5.3 在C语言中使用位带操作
5.6 非对齐数据传送
5.7 互斥访问
5.8 端模式
chpt06-实现Cortex-M3的全景概貌
6.1 流水线
6.2 详细的框图
6.3 Cortex-M3的总线接口
6.3.1 I-Code总线
6.3.2 D-Code总线
6.3.3 系统总线
6.3.4 外部私有外设总线
6.3.5 调试访问端口总线
6.4 Cortex-M3的其它接口
6.5 外部私有外设总线
6.6 连接方式样板
6.7 复位信号
chpt07-异常
7.1 异常类型
7.2 优先级的定义
抢占优先级与子优先级
7.3 向量表
7.4 中断输入及悬起行为
7.5 Fault类异常
7.5.1 总线Faults
7.5.2 存储器管理faults
7.5.3 用法faults
7.5.4 硬fault
7.5.5 应对faults
7.6 SVC和PendSV
chpt08-NVIC与中断控制
8.1 NVIC概览
8.2 中断配置基础
8.3 中断的使能与除能
8.4 中断的悬起与解悬
8.4.1 优先级
8.4.2 活动状态
8.4.3 特殊功能寄存器PRIMASK与FAULTMASK
8.4.4 BASEPRI寄存器
8.4.5 其它异常的配置寄存器
8.5 中断系统设置全过程的演示
8.6 软件中断
8.7 SysTick定时器
chpt09-中断的具体行为
9.1 中断/异常的响应序列
9.1.1 入栈
9.1.2 取向量
9.1.3 更新寄存器
9.2 异常返回
9.3 嵌套的中断
9.4 咬尾中断
9.5 晚到(的高优先级)异常
9.6 异常返回值
9.7 中断延迟
9.8 异常响应期间的faults
9.8.1 入栈期间
9.8.2 出栈期间
9.8.3 取向量期间
9.8.4 无效返回时
chpt10-Cortex-M3的低层编程
10.1 概览
10.1.1 使用汇编
10.1.2 使用C
10.2 汇编与C的接口
10.3 典型的开发流程
10.4 第一步工作
10.5 与外界互动
10.5.1 “Hello World”示例程序
10.6 使用数据存储器
10.7 使用互斥访问实现信号量操作
10.8 使用位带实现互斥锁操作
10.9 使用位段提取与查表跳转
chpt11-玩转异常系统
11.1 使用中断
11.1.1 建立堆栈
11.1.2 建立向量表
11.1.3 建立中断优先级
11.1.4 使能中断
11.2 异常/中断服务例程
11.3 软件触发中断
11.4 异常服务例程的范例
11.5 使用SVC
11.6 SVC示范:用于输出函数
11.7 在C中使用SVC
chpt12-编程进阶与系统行为
12.1 在系统中使用双堆栈
12.2 双字的堆栈对齐方式
12.3 非基级的线程模式
小心地使用此功能
12.4 性能评估
12.5 当处理器被锁定(Lockup)时
12.5.1 锁定情形下的众生相
12.5.2 避免被锁定
chpt13-编程进阶与系统行为
13.1 SysTick定时器
13.2 电源管理
13.3 多处理机通信
13.3.1 多机同步的深入讨论
13.4 自复位控制
chpt14-存储保护单元MPU
14.0 译者添加的引子
引子1:野指针与C语言
引子2:使命-关键系统
14.1 MPU概览
14.2 MPU的寄存器组
14.3 启用MPU
14.4 MPU的典型设置
14.4.1 使用子region除能的示例
chpt15-调试系统架构
15.1 调试特性概览
侵入式调试(这也是基本的调试机能)
非侵入式调试(大多数人更少接触到的,高级的调试机能)
15.2 CoreSight技术概览
15.2.1 处理器的调试接口
15.2.2 DP模块,AP模块和DAP
15.2.3 跟踪接口
15.2.4 CoreSight的性质
15.3 调试模式
15.4 调试事件
15.5 Cortex-M3中的断点
15.6 调试时访问寄存器
15.7 内核的其它调试特性
chpt16-调试组件
16.1 简介
16.1.1 Cortex-M3的跟踪系统
16.2 跟踪组件:数据观察点与跟踪(DWT)
16.3 跟踪组件:仪器化跟踪宏单元(ITM)
16.3.1 基于ITM的软件跟踪
16.3.2 基于ITM和DWT的硬件跟踪
16.3.3 ITM时间戳
16.4 跟踪组件:嵌入式跟踪宏单元
16.5 跟踪组件:跟踪端口接口单元(TPIU)
16.6 闪存地址重载及断点单元(FPB)
什么是“字面值加载”?
16.7 AHB访问端口
16.8 ROM表
chpt17-开始Cortex-M3开发
17.1 选择一款Cortex-M3产品
17.2 Cortex-M3修订版0与修订版1的区别
17.2.1 修订版1:从JTAG-DP到SWJ-DP
17.3 Cortex-M3修订版1与修订版2的区别
17.3 .1 双字堆栈对齐方式成为缺省值
17.3.2 新增辅助控制寄存器(Auxiliary Control Register)
17.3 .3 ID寄存器的更新
17.3 .4 调试功能
17.3.5 睡眠特性
17.3 .6 使用修订版2带来的好处和注意事项
17.4 开发工具
17.4.1 C编译器
17.4.2 嵌入式操作系统支持
chpt18-ARM7应用程序移植到Cortex-M3
18.1 简介
18.2 系统的个性
18.2.1 存储器映射
18.2.2 中断/异常系统
18.2.3 MPU
18.2.4 系统控制
18.2.5 操作模式
18.3 汇编源程序
18.3.1 Thumb状态
18.3.2 ARM状态
18.4 C源程序
18.5 预编译的目标文件
18.6 优化
chpt19-使用GNU工具链开始Cortex-M3开发
19.1 背景
19.2 获取GNU工具链
19.2.1 开发流程
19.3 示例程序
19.3.1 例1:第一个程序
19.3.2 例2:连接多个文件
19.3.3 例3:一个简单的”Hello World”程序
19.3.4 例4:把数据放到RAM中
19.3.5 例5:纯C程序
19.3.6 例6:纯C程序,带有标准C启动代码
19.4 访问特殊功能寄存器
19.5 使用未支持的指令
19.6 GNU C编译器的内联汇编
chpt20-KEIL RealView Microcontroller Development Kit(RVMDK)使用入门
20.1 简介
20.2 uVison使用入门
20.3 使用UART输出“Hello World”
20.4 测试示例程序
20.5 使用调试器
20.6 指令模拟器
20.7 修改向量表
20.8 使用中断实现的秒表示例程序
apdxA-Cortex-M3指令小结
16位Cortex-M3指令汇总
32位 Coxtex-M3指令汇总
apdxB- 16位Thumb指令及架构版本
表B.1 不同ARM架构版本下对16位指令的改动
apdxC- Cortex-M3异常快速参考
表C.1 异常一览表
表C.2 自动入栈后堆栈中的内容以及SP的调整
apdxD- 寄存器小结
表D.1 中断控制器类型寄存器ICTR 0xE000_E004
表D.2 SysTick控制及状态寄存器(地址:0xE000_E010)
表D.3 SysTick重装载数值寄存器(地址:0xE000_E014)
表D.4 SysTick当前数值寄存器(地址:0xE000_E018)
表D.5 SysTick校准数值寄存器(地址:0xE000_E01C)
表D.6 SETENA/CLRENA寄存器族
表D.7 SETPEND/CLRPEND寄存器族
表D.8 ACTIVE寄存器族 0xE000_E300_0xE000_E31C
表D.9 中断优先级寄存器阵列 0xE000_E400 – 0xE000_E4EF
表D.10 CPUID寄存器 0xE000_ED00
表D.11 中断控制及状态寄存器ICSR 0xE000_ED04
表D.12 向量表偏移量寄存器(VTOR) 0xE000_ED08
表D.13 应用程序中断及复位控制寄存器(AIRCR) 0xE000_ED0C
表D.14 系统控制寄存器 0xE000_ED10
表D.15 配置与控制寄存器 0xE000_ED14
apdxE-Cortex-M3疑难解答
E.1 简介
E.2 设计Fault服务例程
E.2.1 上报fault状态寄存器
E.2.2 上报入栈的PC
E.2.3 上报fault地址寄存器
E.2.4 其它注意事项
E.3 在C中上报入栈的寄存器和各fault状态寄存器
E.4 理解发生fault的原因
Cortex-M3 权威指南 Cortex-M3 权威指南 Joseph Yiu 著 宋岩 译 www.ouravr.com热心网友 校对 前置 1
Cortex-M3 权威指南 前置 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 3
Cortex-M3 权威指南 前置 出版致谢(按时间顺序) 在本译文的酝酿期和翻译的全过程,我的兄弟魏国平一直鼓励我,相信这是对社会有益的事, 并且给从精神和物质上给我打气和支招。这只是他八年来与我兄弟之间的一段小掠影,在此感谢之 情已难以言表!他的能力也是我非常佩服的,他仅在加入国内视频监控业的老大“海康威视”一年 后,就在只有二人当选的最佳员工中榜上有名。 在本书翻译的后期,我告知了父母。虽然他们知道这会冲击我的工作,但依然支持我继续下去。 对父母的感谢早已超出任何语言和行动所能及的程度,因此不多提也罢。 本译文完成后,我交给了 4 位好友去试读。在这里为他/她们“正名”:黄强,杨波,马铭遥, 李武华。他们不仅评估了译文在“文笔”上的质量,还找出了一些错误。尤其是黄强,他和他的“先 锋突击队”率先“软硬兼施”地实践过基于 CM3 的 STM32 单片机,并且从人文的层面上对各种读者 的口味都很了解,因此为我提出最多的技术上和文风上的建议。在内测期和译文发表后,我多次和 他一起讨论如何改进。另外,他也是带我认知 CM3 的第一人。 后来,我的恩师吴建德在看过译文后,就组织他带领的研究生去在新项目中使用基于 CM3 的单 片机,并且研究在电源与拖动控制器中,从 16 位 DSP 转到 CM3 上的一些课题,还鼓励我继续做类 似的工作。他和实验室的精英们以实际的先锋行动给了我很大的鼓励。 在“内部测试”期间和网上发表后,我的好友高明和、李小林、梁纪荣、沈争、王金成、杨福 双、叶枫和于艳良都支持我发表,并且在我工作之余为我计划未来的蓝图,王金成还经常是我吐苦 水时的受害者。他们的友情扫除了我在工作中的枯燥,并且让我更加信心满满! 在经过“内部测试版”后,本译文的初稿是发表在 www.ouravr.com的论坛上的。阿莫站长在 帖子发表后的第一时间(已经是凌晨)就置“酷”,后来又置顶,再后来还专门开出一个Cortex-M3 技术讨论区,并任命我为第一任版主。阿莫给了我一个大舞台,这也是一个大家畅所欲言、求医问 道、展现自己闪亮的大舞台。这里自由开放,甚至不需要登录就可以下载资源!在这里再次向阿莫 站长致敬! 帖子发表后,ouravr 的很多热心网友回贴鼓励我,顶我的贴子直到顶到置顶。难能可贵的是 watercat 还第一个警示我不要乐昏了头,提出我的这种翻译方式和文风会面临的风险。这在我校 对的过程中起了很多指导作用。 帖子发表后才两天,北航出版社的胡晓柏主任就联系我,与我讨论出版的事宜。胡主任其实早 就慧眼识中了这本书的原版,从而北航出版社购得本书的简体版版权。于是,本书中文版的出版简 直是大路通天般的顺畅!我以前没有出版过书,胡主任一直耐心地解答我的每个疑问,无论在邮件 中还是电话里,都平易近人。在商务上,和胡主任与北航出版社的合作也轻松愉快,比我谈的绝大 多数项目都容易得多。推荐大家有好作品就去找他,最近的一本热销书《匠人手记》也是胡主任“执 着”的成果。 后来我得知,是周立功先生在看到译文后,推荐使用这个译文出版的。后来周公还来信鼓励我 再接再厉。我以前读过周公的一篇讲学习点 RTOS 的文章后曾热血沸腾,在此对周公的大度和鼓励 我非常感激。 后来在上海沁科的王永虹经理主办的一次活动中,我和英蓓特的周麒相叙多时。我希望能由 ARM 中国的总裁谭军先生写序,经过周麒的表奏后,谭总欣然同意了。这样落地有声的肯定,我在继续 前进的路上还有什么好犹豫的!我现在觉得我加入了一个充满战斗力并且温暖和谐的精英先锋队, 为了让 32 位单片机新生代的春风化雨早日润遍人间而激情战斗! 谭总把此事告知了原作者,他的中文名是姚文祥先生。他也很高兴地重新写了中文版前言,并 且还把今年夏天 Cortex-M3 最新修订版的更新内容发给我,以使此书与时俱进。姚先生的敬业和热 情是令人肃然起敬的! 4
Cortex-M3 权威指南 前置 感谢纸版的读者您。您的阅读就是对我工作的肯定和鼓励,并且我也因为祖国的嵌入式领域在 向次世代挺进的过程中,又多了一位生力军而兴奋不已! 5
Cortex-M3 权威指南 前置 原作序 谁是最节能,最擅长把好钢用在刀刃上的人?要让我说,我一定得表一表单片机的开发者。 他们使出浑身解术写出精妙玲珑的代码,把单片机点点滴滴的力量汇集起来,让它如同涌泉一 般尽情地迸发,灌溉滋养着各行各业。是什么灵丹妙药赐予了他们这么神奇的力量?天资聪慧 是主观方面。在客观方面,除了有好的处理器之外,还要配合好的开发环境和工具链。也正出 于此,在设计ARM7TDMI处理器时,ARM的工具链工程师们和CPU设计师们强强联手,为了 让它的内部结构更优化、更精练、更到位而并肩奋战了很多日日夜夜,终于有了ARM7TDMI 的无限辉煌,并且久经岁月的洗礼依旧光芒绽放。 珠联璧合的最新果实,是破茧而出的ARM Cortex-M3处理器。这个小尤物,处处闪耀着 ARM体系结构最激动人心的新突破。它基于最新最好的32位ARMv7架构——这个架构支持高 度成功的Thumb-2指令集,还有很多时尚、前卫甚至崭新的特性,充满了新生代的气息。它在 很好、很强大的同时,编程模型却变得更加清新爽洁了。不管你是祖国的花朵、是人民教师、 还是精明的商人,也无所谓是新手还是骨灰级玩家,Cortex-M3都将尽情展现它的秀外慧中, 带给你喜出望外的收获和“激活”! ARM嵌入式解决方案主任 Wayne Lyons 6
Cortex-M3 权威指南 前置 前 言 不管你是做软件的还是做硬件的,只要相中了ARM的Cortex-M3处理器,这本书就是 为你而写。以前Cortex-M3的资料只有两个大部头,分别是:  《Cortex-M3技术参考手册》(Cortex-M3 Technical Reference Manual, 简称 Cortex-M3 TRM)  《ARMv7-M应用程序级架构参考手册》(ARMv7-M Application Level Architecture Reference Manual) 虽然这它俩差不多是权威到“古文观止”级的,但实在是太深入了,以致于对新手来 说那简直就是天书。本书则是一个精简版,并且叙述的前后更有条理。目标读者包括: 一线程序员,嵌入式产品设计师,片上系统(SoC)工程师,嵌入式系统发烧友,学院 研究员,还包括所有涉猎过单片机和微处理器领域,慧眼识珍看中了Cortex-M3的人民 大众们。 本书要给Cortex-M3的架构做一个简介,浏览一下指令系统,写几个段代码练练手, 说一些硬件特性,再表一表该处理器精深的调试系统。本书还给出了应用程序范例,手 把手地教你使用开发工具,包括ARM的工具和GNU的工具链。如果你以前是ARM7TDMI 的玩家,正准备着升级装备到Cortex-M3,本书也非常解渴,里面讲述了两者的不同, 以及鸟枪换炮的升级过程。 7
Cortex-M3 权威指南 前置 致谢 我要感谢下面的人们,他们有人帮我检查了本书,还有人提供了我建议和反馈 Alan Tringham, Dan Brook, David Brash, Haydn Povey, Gary Campbell, Kevin McDermott,Richard Earnshaw, Samin Ishtiaq, Shyam Sadasivan, Simon Axford, Simon Craske, Simon Smith, Stephen Theobald and Wayne Lyons. 我还要感谢CodeSourcery为我提供技术支持,以及Luminary Micro提供封面图(英文原书)。当 然,Elsevier的朋友们为出版本书作出了专业的工作,在这里我也要一并感谢。 最后,特别感谢读者您,以及Peter Cole与Ivan Yardley,他们鼓励我写这本书。 8
分享到:
收藏