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