內容簡介
本書重點介紹了新的ARM架構、指令集的總結、硬體特性以及調試系統的概覽。本書還提供了一些程式示例,並且在其中講解了使用GNU工具鏈與ARM工具的基本方法與步驟。主要內容包括:ARM架構的背景、CortexM3入門、操作模式、異常與中斷、彙編語言基礎、存儲器系統、CortexM3上的彙編與C編程、開發流程、電源管理、多處理機通信、開發工具、調試、KeilRealViewMDK使用入門等。隨書附光碟1張,內含ARMCortexM3相關文章及KeilRealViewMDK評估軟體等。作者簡介
本書由JosephYiu編著,宋岩翻譯。
圖書目錄
第1章介紹.
1.1ARMCortex-M3處理器初探
1.1.1從Cortex-M3處理器核心到基於Cortex-M3的MCU
1.1.2ARM及ARM架構的背景
1.2ARM的各種架構版本
1.3指令集的開發
1.4Thumb-2指令集體系結構(ISA)
1.5Cortex-M3處理器的舞台
1.6本書的組織結構
1.7深入研究用的讀物
第2章Cortex-M3概覽
2.1簡介
2.2暫存器組
2.3操作模式和特權級別
2.4內建的嵌套向量中斷控制器
2.5存儲器映射
2.6匯流排接口
2.7存儲器保護單元(MPU)
2.8指令集
2.9中斷和異常
2.10調試支持
2.11Cortex-M3的品性簡評
2.11.1高性能
2.11.2先進的中斷處理功能
2.11.3低功耗
2.11.4系統特性
2.11.5調試支持
第3章Cortex-M3基礎
3.1暫存器組
3.1.1通用目的暫存器R0~R
3.1.2通用目的暫存器R8~R
3.1.3堆疊指針R
3.1.4連線暫存器R
3.1.5程式計數器R
3.2特殊功能暫存器組
3.2.1程式狀態暫存器(PSRs或曰xPSR)
3.2.2PRIMASK.FAULTMASK和BASEPRI
3.2.3控制暫存器(CONTROL)
3.3操作模式
3.4異常與中斷
3.5向量表
3.6棧記憶體操作
3.7Cortex-M3的堆疊實現
3.8復位序列
第4章指令集
4.1彙編語言基礎
4.1.1彙編語言:基本語法
4.1.2彙編語言:後綴的使用
4.1.3彙編語言:統一彙編語言書寫語法
4.2指令集
4.2.1分類指令表
4.2.2未支持的指令
4.3近距離檢視指令
4.3.1彙編語言:數據傳送
4.3.2彙編語言:數據處理
4.3.3彙編語言:子程調用與無條件跳轉指令
4.3.4彙編語言:標誌位與條件轉移
4.3.5彙編語言:指令隔離指令和存儲器隔離指令
4.3.6彙編語言:飽和運算
4.4CM3中一些前衛的指令
4.4.1MRS和MSR
4.4.2IF-THEN
4.4.3CBZ和CBNZ
4.4.4SDIV和UDIV
4.4.5REV,REVH,REV16以及REVSH
4.4.6RBIT
4.4.7SXTB,SXTH,UXTB,UXTH
4.4.8BFC/BFI,UBFX/SBFX
4.4.9LDRD/STRD
4.4.10TBB,tbh
第5章存儲器系統
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端模式
第6章實現Cortex-M3的全景概貌
6.1流水線
6.2詳細的框圖
6.3Cortex-M3的匯流排接口
6.4Cortex-M3的其他接口
6.5外部私有外設匯流排
6.6典型的連線方式
6.7復位信號
第7章異常
7.1異常類型
7.2優先權的定義
7.3向量表
7.4中斷輸入及掛起行為
7.5Fault異常
7.5.1匯流排fault
7.5.2存儲器管理fault
7.5.3用法fault
7.5.4硬fault
7.5.5應對fault
7.6SVC和PendSV
第8章NVIC與中斷控制
8.1NVIC概覽
8.2中斷配置基礎
8.3中斷的使能與除能
8.4中斷的掛起與清除
8.4.1優先權
8.4.2活動狀態
8.4.3PRIMASK與FAULTMASK特殊功能暫存器
8.4.4BASEPRI暫存器
8.4.5其他異常的配置暫存器
8.5中斷建立全過程的演示..
8.6軟體中斷
8.7SysTick定時器
第9章中斷的具體行為
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異常回響期間的fault
第10章Cortex-M3的低層編程
10.1概覽
10.1.1使用彙編
10.1.2使用C
10.2彙編與C的接口
10.3典型的開發流程
10.4第1步工作
10.5與外界互動
10.6使用數據存儲器
10.7使用互斥訪問實現信號量操作
10.8使用位帶實現互斥鎖操作
10.9使用位段提取與查表跳轉
第11章使用異常系統
11.1使用中斷
11.1.1建立堆疊
11.1.2建立向量表
11.1.3建立中斷優先權
11.1.4使能中斷
11.2異常/中斷服務例程
11.3軟體觸發中斷
11.4異常服務例程的範例
11.5使用SVC
11.6SVC示範:用於輸出函式
11.7在C中使用SVC
第12章編程進階與系統行為
12.1在系統中使用雙堆疊
12.2雙字的堆疊對齊方式
12.3非基級的執行緒模式
12.4性能評估
12.5當處理器被鎖定(lockup)時
12.5.1鎖定情形下的眾生相
12.5.2避免被鎖定
第13章Cortex-M3的其他特性
13.1SysTick定時器
13.2電源管理
13.3多處理器通信
13.4自復位控制
第14章存儲保護單元MPU
14.1MPU概覽
14.2MPU的暫存器組
14.3啟用MPU
14.4MPU的典型設定
14.5使用子region除能的示例
第15章調試系統架構
15.1調試特性概覽
15.2CoreSight技術概覽
15.2.1處理器的調試接口
15.2.2DP模組.AP模組和DAP
15.2.3跟蹤接口
15.2.4CoreSight的性質
15.3調試模式
15.4調試事件
15.5Cortex-M3中的斷點
15.6調試時訪問暫存器
15.7核心的其他調試特性
第16章調試組件
16.1簡介
16.2跟蹤組件:數據觀察點與跟蹤(DWT)
16.3跟蹤組件:儀器化跟蹤宏單元(ITM)
16.3.1基於ITM的軟體跟蹤
16.3.2基於ITM和DWT的硬體跟蹤
16.3.3ITM時間戳
16.4跟蹤組件:嵌入式跟蹤宏單元(ETM)
16.5跟蹤組件:跟蹤連線埠接口單元(TPIU)
16.6快閃記憶體地址重載及斷點單元(FPB)
16.7AHB訪問連線埠
16.8ROM表
第17章開始Cortex-M3開發
17.1選擇一款Cortex-M3產品
17.2Cortex-M3版本0與版本1的區別
17.3Cortex-M3修訂版1與修訂版2的區別
17.3.1雙字堆疊對齊方式成為預設值
17.3.2新增輔助控制暫存器(AuxiliaryControlRegister)
17.3.3ID暫存器的更新
17.3.4調試功能
17.3.5睡眠特性
17.3.6使用修訂版2帶來的好處和注意事項
17.4開發工具
17.4.1C編譯器
17.4.2嵌入式作業系統支持
第18章ARM7應用程式移植到Cortex-M
18.1簡介
18.2系統性質
18.2.1存儲器映射
18.2.2中斷/異常系統
18.2.3MPU
18.2.4系統控制
18.2.5操作模式
18.3彙編源程式
18.3.1Thumb狀態
18.3.2ARM狀態
18.4C源程式
18.5預編譯的目標檔案
18.6最佳化
第19章使用GNU工具鏈開始Cortex-M3開發
19.1背景
19.2獲取GNU工具鏈
19.3示例程式
19.4訪問特殊功能暫存器
19.5使用未支持的指令
19.6GNUC編譯器的內聯彙編
第20章KEILRealViewMicrocontrollerDevelopmentKit(RVMDK)使用入門
20.1簡介
20.2μVision使用入門
20.3使用UART輸出“Helloworld”
20.4測試示例程式
20.5使用調試器
20.6指令模擬器
20.7修改向量表
20.8使用中斷實現的秒表示例程式
附錄ACortex-M3指令小結
附錄B16位Thumb指令及架構版本
附錄CCortex-M3異常快速參考
附錄DNVIC暫存器小結
附錄ECortex-M3疑難解答
E.1簡介
E.2設計fault服務例程
E.2.1上報fault狀態暫存器
E.2.2上報入棧的PC
E.2.3上報fault地址暫存器
E.2.4其他注意事項
E.3理解發生fault的原因
E.4在C中上報入棧的暫存器和各fault狀態暫存器