本書(shū)是系統(tǒng)論述ARM Cortex-M0與Cortex-M0+處理器及其編程的圖書(shū),作者Joseph Yiu是英國(guó)ARM公司的主管工程師,著有久負(fù)盛名的暢銷(xiāo)圖書(shū)《ARM Cortex-M3與Cortex-M4*威指南(第3版)》(清華大學(xué)出版社)。本書(shū)適合的讀者對(duì)象包括:嵌入式產(chǎn)品設(shè)計(jì)工程師、嵌入式軟件開(kāi)發(fā)人員、電子愛(ài)好者以及學(xué)習(xí)嵌入式系統(tǒng)課程(ARM Cortex-M0與Cortex-M0+)的高年級(jí)本科生及研究生等。作者提供了詳實(shí)的配書(shū)工程源文件(見(jiàn)封面下載地址)。
l 深度剖析系統(tǒng)模型、指令集以及中斷處理,以利于理解ARM Cortex-M0與Cortex-M0+的工作方式;
l 綜合運(yùn)用匯編語(yǔ)言和C語(yǔ)言實(shí)現(xiàn)的豐富的ARM Cortex-M0與Cortex-M0+編程案例,有助于快速動(dòng)手實(shí)踐;
l 系統(tǒng)論述軟件的開(kāi)發(fā)流程,并以常用軟件開(kāi)發(fā)工具為例,介紹程序設(shè)計(jì)的實(shí)例及如何定位程序代碼問(wèn)題和軟件移植等方面的知識(shí);
l 全面揭秘從其他架構(gòu)處理器進(jìn)行軟件移植的方法,包括ARM7TDMI、ARM Cortex-M3以及8051微控制器移植的實(shí)例;
l 深入解析Cortex-M0和Cortex-M0+處理器架構(gòu)特性的差異(如非特權(quán)執(zhí)行等級(jí)、向量表重定位);
l 細(xì)致分析了Cortex-M0+處理器的優(yōu)勢(shì),比如新的單周期I/O接口、更優(yōu)的能耗效率、更高的性能以及微跟蹤緩沖(MTB)特性;
l 詳盡介紹了軟件開(kāi)發(fā)工具方面的新內(nèi)容,如Keil MDK版本5、IAR Embedded Workbench for ARM、ARM gcc、CooCox及mbed使用示例;
l 提供了基于CMSIS-RTOS API的Keil RTX實(shí)時(shí)操作系統(tǒng)的新實(shí)例;
l 提供了Cortex-M0和Cortex-M0+微控制器使用實(shí)例,包括Freescale Freedom板(FRDM-KL25Z)、STM32F0 Discovery、STM32L0 Discovery和NXP LPC1114(DIP封裝)面包板等。
本書(shū)是ARM公司微控制器系統(tǒng)級(jí)設(shè)計(jì)專(zhuān)家Joseph Yiu的作品。本書(shū)全面系統(tǒng)論述Cortex-M0與Cortex-M0+的內(nèi)核、體系結(jié)構(gòu)、指令集、編譯器、程序設(shè)計(jì)及軟件移植。全書(shū)共23章,近700頁(yè)。深度剖析系統(tǒng)模型、指令集以及中斷處理,以利于理解ARM Cortex-M0與Cortex-M0+的工作方式;綜合運(yùn)用匯編語(yǔ)言和C語(yǔ)言實(shí)現(xiàn)的豐富的ARM Cortex-M0與Cortex-M0+編程案例,有助于快速動(dòng)手實(shí)踐;系統(tǒng)論述軟件的開(kāi)發(fā)流程,并以常用軟件開(kāi)發(fā)工具為例,介紹程序設(shè)計(jì)的實(shí)例及如何定位程序代碼問(wèn)題和軟件移植等方面的知識(shí);全面揭秘從其他架構(gòu)處理器進(jìn)行軟件移植的方法,包括ARM7TDMI、ARM Cortex-M3以及8051微控制器移植的實(shí)例;深入解析Cortex-M0和Cortex-M0+處理器架構(gòu)特性的差異(如非特權(quán)執(zhí)行等級(jí)、向量表重定位);細(xì)致分析了Cortex-M0+處理器的優(yōu)勢(shì),比如新的單周期I/O接口、更優(yōu)的能耗效率、更高的性能以及微跟蹤緩沖(MTB)特性;詳盡介紹了軟件開(kāi)發(fā)工具方面的新內(nèi)容,如Keil MDK版本5、IAR Embedded Workbench for ARM、ARM gcc、CooCox及mbed的實(shí)例。另外,為便于讀者學(xué)習(xí),全書(shū)提供了完整的案例源代碼!
Joseph Yiu 英國(guó)ARM公司資深專(zhuān)家,12年半導(dǎo)體行業(yè)從業(yè)經(jīng)歷(在A(yíng)RM公司工作15年以上)。曾參與多個(gè)處理器設(shè)計(jì)項(xiàng)目,包括ARM Cortex-M3和Cortex-M0,并參與了多種ARM IP(知識(shí)產(chǎn)權(quán))產(chǎn)品的開(kāi)發(fā)。Joseph Yiu為微控制器系統(tǒng)級(jí)設(shè)計(jì)專(zhuān)家,并涉獵了諸多相關(guān)領(lǐng)域,包括ARM Cortex-M系列微控制器軟件開(kāi)發(fā)、微控制器市場(chǎng)以及片上系統(tǒng)設(shè)計(jì)技術(shù)。其他代表性著作有《The Definitive Guide to the ARM Cortex-M3, 2nd Edition》、《The Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors, 3rd Edition》(中文翻譯版均由清華大學(xué)出版社出版發(fā)行)。
譯者序1
推薦序3
前言5
致謝7
術(shù)語(yǔ)和縮寫(xiě)9
本書(shū)約定13
第1章概論
1.1歡迎來(lái)到嵌入式處理器的世界
……
1.2理解處理器的類(lèi)型
……
1.3微控制器內(nèi)部有什么
……
1.4ARM介紹
……
1.5ARM處理器和ARM微控制器方面的資源
……
第2章技術(shù)綜述
2.1CortexM0和CortexM0+處理器
2.2模塊框圖
2.3典型系統(tǒng)
2.4什么是ARMv6M架構(gòu)
2.5CortexM處理器間的軟件可移植性
2.6ARM CortexM0和CortexM0+處理器的優(yōu)勢(shì)
……
2.7CortexM0和CortexM0+處理器的應(yīng)用
……
2.8為什么要在微控制器應(yīng)用中使用32位處理器
……
第3章嵌入式軟件開(kāi)發(fā)介紹
3.1歡迎進(jìn)入嵌入式系統(tǒng)編程
3.2基本概念
……
3.3ARM CortexM編程介紹
……
3.4軟件開(kāi)發(fā)流程
3.5Cortex微控制器軟件接口標(biāo)準(zhǔn)
……
3.6軟件開(kāi)發(fā)的其他信息
第4章架構(gòu)
4.1ARMv6M架構(gòu)綜述
……
4.2編程模型
……
4.3存儲(chǔ)器系統(tǒng)
……
4.4棧存儲(chǔ)操作
4.5異常和中斷
4.6嵌套向量中斷控制器
……
4.7系統(tǒng)控制塊
4.8調(diào)試系統(tǒng)
4.9程序映像和啟動(dòng)流程
第5章指令集
5.1指令集是什么
5.2ARM和Thumb指令集背景
5.3匯編基礎(chǔ)
……
5.4指令列表
……
5.5偽指令
第6章指令使用示例
6.1概述
6.2程序控制
……
6.3數(shù)據(jù)訪(fǎng)問(wèn)
……
6.4數(shù)據(jù)類(lèi)型轉(zhuǎn)換
……
6.5數(shù)據(jù)處理
……
第7章存儲(chǔ)器系統(tǒng)
7.1微控制器中的存儲(chǔ)器系統(tǒng)
7.2CortexM0和CortexM0+處理器中的總線(xiàn)系統(tǒng)
7.3存儲(chǔ)器映射
……
7.4程序存儲(chǔ)器、Bootloader和存儲(chǔ)器重映射
……
7.5數(shù)據(jù)存儲(chǔ)器
7.6小端和大端支持
7.7數(shù)據(jù)類(lèi)型
7.8存儲(chǔ)器屬性和存儲(chǔ)器訪(fǎng)問(wèn)權(quán)限
7.9硬件行為對(duì)編程的影響
……
第8章異常和中斷
8.1異常和中斷的含義
8.2CortexM0和CortexM0+處理器內(nèi)的異常類(lèi)型
……
8.3NVIC簡(jiǎn)介
8.4異常優(yōu)先級(jí)定義
8.5向量表
8.6異常流程概述
……
8.7EXC_RETURN
8.8用于中斷控制的NVIC控制寄存器
……
8.9異常屏蔽寄存器(PRIMASK)
8.10中斷輸入和掛起行為
……
8.11異常入口流程
……
8.12異常退出流程
……
8.13中斷等待
第9章系統(tǒng)控制和低功耗特性
9.1系統(tǒng)控制寄存器簡(jiǎn)介
9.2SCB中的寄存器
……
9.3使用自復(fù)位特性
9.4使用向量表重定位特性
9.5低功耗特性
……
第10章操作系統(tǒng)支持特性
10.1支持OS的特性概述
10.2嵌入式系統(tǒng)的操作系統(tǒng)介紹
10.3SysTick定時(shí)器
……
10.4進(jìn)程棧和PSP
10.5SVCall異常
10.6PendSV
10.7高級(jí)話(huà)題: 在編程中使用SVC和PendSV
……
10.8高級(jí)話(huà)題: 實(shí)際的上下文切換
第11章錯(cuò)誤處理
11.1錯(cuò)誤異常概述
11.2錯(cuò)誤是如何產(chǎn)生的
11.3分析錯(cuò)誤
11.4意外切換至ARM狀態(tài)
11.5實(shí)際應(yīng)用中的錯(cuò)誤處理
11.6軟件開(kāi)發(fā)期間的錯(cuò)誤處理
11.7鎖定
……
11.8避免鎖定
11.9和ARMv7M架構(gòu)中錯(cuò)誤處理的對(duì)比
第12章存儲(chǔ)器保護(hù)單元
12.1MPU是什么
12.2MPU適用的情形
12.3技術(shù)介紹
12.4MPU寄存器
……
12.5設(shè)置MPU
12.6存儲(chǔ)器屏障和MPU配置
12.7使用子區(qū)域禁止
……
12.8使用MPU時(shí)的注意事項(xiàng)
……
12.9和CortexM3/M4/M7處理器的MPU間的差異
第13章調(diào)試特性
13.1軟件開(kāi)發(fā)和調(diào)試特性
13.2調(diào)試接口
……
13.3調(diào)試特性一覽
13.4調(diào)試系統(tǒng)
13.5暫停模式和調(diào)試事件
13.6利用MTB實(shí)現(xiàn)指令跟蹤
第14章Keil微控制器開(kāi)發(fā)套件入門(mén)
14.1Keil微控制器開(kāi)發(fā)套件介紹
……
14.2典型的程序編譯流程
14.3硬件介紹
……
14.4μVision IDE入門(mén)
……
14.5使用IDE和調(diào)試器
14.6底層內(nèi)容
……
14.7工程環(huán)境的優(yōu)化
……
14.8使用模擬器
14.9在SRAM中執(zhí)行程序
14.10使用MTB指令跟蹤
第15章IAR embedded workbench for ARM入門(mén)
15.1IAR embedded workbench for ARM概述
15.2典型的程序編譯流程
15.3創(chuàng)建簡(jiǎn)單的blinky工程
15.4工程選項(xiàng)
15.5在IAR EWARM中使用MTB指令跟蹤
15.6提示和要點(diǎn)
第16章GCC入門(mén)
16.1GCC工具鏈
16.2關(guān)于本章中的例子
16.3典型開(kāi)發(fā)流程
16.4創(chuàng)建簡(jiǎn)單的Blinky工程
16.5命令行選項(xiàng)概述
16.6Flash編程
16.7在Keil MDKARM中使用ARM嵌入式處理器GNU工具
16.8在CooCox IDE中使用ARM嵌入式處理器GNU工具
……
第17章mbed入門(mén)
17.1什么是mbed
17.2mbed系統(tǒng)是怎么工作的
17.3mbed的優(yōu)勢(shì)
17.4設(shè)置FRDMKL25Z板和mbed賬號(hào)
……
17.5創(chuàng)建blinky程序
……
17.6支持的常用外設(shè)對(duì)象
17.7使用printf
17.8應(yīng)用實(shí)例: 火車(chē)模型控制器
17.9中斷
17.10要點(diǎn)和提示
第18章編程實(shí)例
18.1利用通用異步收發(fā)器來(lái)產(chǎn)生輸出
……
18.2實(shí)現(xiàn)printf
……
18.3開(kāi)發(fā)輸入和輸出函數(shù)
……
18.4中斷編程實(shí)例
……
18.5應(yīng)用實(shí)例: 火車(chē)模型用的另一個(gè)控制器
18.6CMSISCORE的不同版本
第19章超低功耗設(shè)計(jì)
19.1超低功耗使用示例
……
19.2低功耗設(shè)計(jì)要求
19.3能量去哪里了
19.4開(kāi)發(fā)低功耗應(yīng)用
……
19.5調(diào)試考慮
……
19.6低電壓設(shè)備的檢測(cè)
19.6.1ULPBench的背景
19.6.2ULPBenchCP概述
19.7Freescale KL25Z低功耗特性使用示例
……
19.8LPC1114低功耗特性使用示例
……
第20章嵌入式OS編程
20.1介紹
……
20.2RTX Kernel概述
……
20.3在應(yīng)用中使用RTX
20.4調(diào)試RTX應(yīng)用
20.5疑難解答
……
20.6其他要點(diǎn)和提示
……
第21章混合語(yǔ)言工程
21.1匯編在工程開(kāi)發(fā)中的應(yīng)用
21.2匯編編程實(shí)踐和AAPCS
21.3匯編函數(shù)概述
……
21.4內(nèi)聯(lián)匯編
……
21.5嵌入?yún)R編特性(ARM工具鏈)
21.6混合語(yǔ)言工程
……
21.7在Keil MDKARM中創(chuàng)建匯編工程
……
21.8用于中斷控制的通用匯編代碼
……
21.9匯編語(yǔ)言的其他編程技巧
……
21.10使用特殊指令
……
第22章軟件移植
22.1概述
22.2從8位/16位微控制器向ARM Cortex M移植軟件
……
22.3ARM7TDMI和Cortex M0/M0+處理器間的差異
……
22.4從ARM7TDMI向Cortex M0/Cortex M0+處理器移植軟件
……
22.5各種Cortex M處理器間的差異
……
22.6在Cortex M處理器間移植時(shí)的通用改動(dòng)
22.7Cortex M0/M0+和Cortex M1間的軟件移植
22.8Cortex M0/M0+和Cortex M3間的軟件移植
22.9Cortex M0/M0+和Cortex M4/M7間的軟件移植
第23章高級(jí)話(huà)題
23.1C語(yǔ)言實(shí)現(xiàn)的位數(shù)據(jù)處理
23.2C實(shí)現(xiàn)的啟動(dòng)代碼
23.3棧溢出檢測(cè)
……
23.4中斷服務(wù)程序重入
23.5信號(hào)量設(shè)計(jì)
23.6存儲(chǔ)器順序和存儲(chǔ)器屏障
附錄A指令集快速參考
附錄B異常類(lèi)型快速參考
附錄C CMSIS CORE快速參考
附錄D NVIC、SCB和SysTick寄存器快速參考
附錄E調(diào)試寄存器快速參考
附錄F調(diào)試接頭分配
附錄G疑難解答
附錄H ARM CortexM0微控制器面包板工程
附錄I參考文檔