圖書內容
本書以Cortex-M4系列的Kinetis處理器為基礎,從ARM的基礎理論知識入手,以不同的外設為基準點講解Cortex-M4系列的強大功能,主要內容涵蓋Cortex-M4核心簡介、Cortex-M4核心結構、Cortex-M4彙編指令集、DSP擴展指令和FPU、Cortex-M4彙編語言與C語言混合編程、系統控制和存儲管理、Cortex-M4的異常處理、嵌套中斷向量控制器、Cortex-M4調試與跟蹤系統、開發環境介紹、以mC/OS-II移植例程理解Cortex-M4核心編程、基於Cortex-M4核心的Kinetis架構介紹、Kinetis系統控制模組和時鐘模組、Freescale Kinetis開發實例等內容。
目 錄
第1章 Cortex-M4核心簡介 1
1.1 主流的ARM處理器介紹 1
1.1.1 ARM體系結構的命名規則 2
1.1.2 ARM Cortex應用程式處理器 2
1.1.3 ARM Cortex嵌入式處理器 4
1.1.4 經典ARM處理器 8
1.1.5 ARM專家處理器 9
1.1.6 其他ARM處理器 10
1.1.7 ARM處理器的特點 11
1.2 套用領域 11
1.3 ARM Cortex-M4簡介 12
1.3.1 Cortex-M4信號處理技術 13
1.3.2 ARM Cortex-M微控制器技術 13
1.4 以ARM Cortex-M4為核心的處理器 14
本章小結 16
第2章 Cortex-M4核心結構 17
2.1 Cortex-M4處理器與核心外圍設備 17
2.2 流水線 21
2.3 Cortex-M4的匯流排接口 23
2.4 Cortex-M4相關暫存器組 28
2.4.1 暫存器 28
2.4.2 異常與中斷 34
2.5 操作模式 34
本章小結 35
第3章 Cortex-M4彙編指令集 37
3.1 Cortex-M4指令集 37
3.1.1 ARM32和Thumb指令集 37
3.1.2 Thumb-2指令集 38
3.2 CMSIS標準 38
3.3 ARM彙編語言基礎 39
3.3.1 指令的格式 40
3.3.2 運算元 40
3.3.3 PC與SP暫存器的使用限制 40
3.3.4 靈活的第二個運算元 40
3.3.5 移位運算 40
3.3.6 地址對齊 43
3.3.7 標號——PC相對地址表達式 44
3.3.8 條件碼 44
3.3.9 指令寬度 46
3.4 Cortex-M4處理器定址方式 47
3.4.1 立即定址 47
3.4.2 暫存器定址 48
3.4.3 暫存器間接定址 48
3.4.4 暫存器偏移定址 48
3.4.5 基址變址定址 48
3.4.6 多暫存器定址 49
3.4.7 堆疊定址 49
3.5 Cortex-M4指令集 50
3.5.1 分支指令 50
3.5.2 常見的數據處理指令 55
3.5.3 乘除指令 59
3.5.4 飽和指令 61
3.5.5 擴展指令 62
3.5.6 位段操作指令 63
3.5.7 狀態暫存器訪問指令 65
3.5.8 載入存儲指令 67
3.5.9 多暫存器載入和存儲指令 69
3.5.10 雜項處理指令 70
3.5.11 異常生成指令 72
3.5.12 協處理指令——Cortex-M4不支持的指令 73
3.6 彙編實例 74
本章小結 75
第4章 DSP擴展指令和FPU 77
4.1 簡介 77
4.2 DSP擴展指令 77
4.2.1 乘加指令 78
4.2.2 飽和指令 82
4.2.3 位段指令 83
4.2.4 SIMD並行加減指令 85
4.2.5 雜項數據處理指令 86
4.3 FPU 87
4.3.1 FPU的暫存器 87
4.3.2 FPU的操作模式 88
4.3.3 浮點數載入存儲指令 88
4.3.4 浮點數暫存器傳送指令 89
4.3.5 浮點數數據處理指令 89
本章小結 91
第5章 Cortex-M4彙編與C混合編程 93
5.1 ATPCS概述 93
5.1.1 暫存器的使用規則 94
5.1.2 數據棧使用規則 94
5.1.3 參數傳遞規則 95
5.2 內嵌彙編 96
5.2.1 內嵌彙編的語法格式 96
5.2.2 內嵌彙編指令的特點 96
5.2.3 內嵌彙編指令注意事項 98
5.2.4 內嵌彙編指令舉例 100
5.3 ARM中的彙編和C語言相互調用 101
5.3.1 從彙編程式中訪問C程式變數 102
5.3.2 C程式調用彙編程式 102
5.3.3 彙編程式調用C程式 104
本章小結 104
第6章 系統控制和存儲管理 105
6.1 系統控制 105
6.1.1 系統控制和ID暫存器 106
6.1.2 系統定時器 107
6.1.3 可嵌套中斷向量控制器(NVIC) 108
6.1.4 記憶體保護系統架構(PMSAv7) 109
6.2 記憶體映射 109
6.2.1 對齊訪問 112
6.2.2 位元組序(Endian) 113
6.3 位帶操作 114
6.3.1 bit-band和bit-band alias區域的訪問 116
6.3.2 bit-banding的功能 116
6.4 記憶體保護單元(MPU) 117
6.4.1 記憶體保護單元(MPU)簡介 117
6.4.2 MPU暫存器組 119
6.4.3 MPU套用示例 122
本章小結 123
第7章 Cortex-M4的異常處理 125
7.1 異常類型 125
7.2 異常的優先權 127
7.3 異常向量表 130
7.4 異常處理 131
7.4.1 異常的進入 131
7.4.2 異常中斷的回響時序 132
7.4.3 異常的返回 133
7.4.4 中斷late-arrive和tail-chaining機制 133
7.5 故障類異常 135
7.5.1 匯流排故障 135
7.5.2 存儲器管理故障 136
7.5.3 套用故障 138
7.5.4 硬故障 139
本章小結 139
第8章 嵌套中斷向量控制器 141
8.1 NVIC介紹 141
8.2 NVIC工作原理 142
8.3 NVIC暫存器 143
8.4 中斷編程實例 145
本章小結 151
第9章 Cortex-M4調試與跟蹤系統 153
9.1 嵌入式調試技術概述 153
9.2 CoreSight技術介紹 154
9.3 Cortex-M4調試架構 155
9.4 SW-DP和SWJ-DP 156
9.4.1 SWJ-DP 156
9.4.2 SWJ-DP接口 157
9.4.3 SWJ-DP中JTAG和SWD的選擇機制 157
9.5 Cortex-M4調試模式 158
9.6 Cortex-M4的跟蹤系統 160
9.6.1 數據觀察點與跟蹤(DWT) 161
9.6.2 儀器化跟蹤宏單元(ITM) 162
9.6.3 嵌入式跟蹤單元ETM 163
9.6.4 跟蹤連線埠接口單元(TPIU) 163
9.6.5 快閃記憶體地址重載及斷點單元(FPB) 164
本章小結 165
第10章 開發環境介紹 167
10.1 USBDM調試器 167
10.2 CodeWarrior for MCU v10.2介紹 168
10.2.1 CodeWarrior的功能和特點 168
10.2.2 CodeWarrior安裝與配置 168
10.2.3 建立第一個工程 169
10.3 Keil MDK介紹 171
10.4 Keil ULINK仿真器 173
10.5 MDK-ARM的軟體開發周期 174
10.6 μVisionIDE的使用 174
10.6.1 μVision調試器 176
10.6.2 建立第一個工程 177
10.6.3 調試 180
10.6.4 燒寫Flash 185
10.7 IAR for ARM基本介紹 186
10.7.1 IAR EWARM 開發環境IDE介紹 187
10.7.2 建立第一個工程 188
10.7.3 調試器C-SPY 191
本章小結 193
第11章 以μC/OS-II移植例程理解Cortex-M4核心編程 195
11.1 μC/OS-II作業系統 195
11.1.1 μC/OS-II作業系統簡介 195
11.1.2 μC/OS-II的工作原理 196
11.2 μC/OS-II在Kinetis K10開發板上的移植 196
11.2.1 μC/OS-II目錄結構簡介 196
11.2.2 移植概述 197
11.2.3 移植詳解 198
11.3 測試μC/OS-II 209
11.4 板級支持包 214
本章小結 214
第12章 基於Cortex-M4核心的Kinetis架構介紹 215
12.1 Cortex-M4匯流排接口 215
12.2 Cortex-M4核心同Kinetis系統架構的連線 216
12.3 交叉開關 218
12.3.1 交叉開關簡介 218
12.3.2 交叉開關的暫存器定義 218
12.3.3 交叉開關功能描述 219
12.3.4 Kinetis K10處理器中的交叉開關 219
12.3.5 Kinetis K10處理器中的MPU 220
本章小結 221
第13章 Kinetis系統控制模組和時鐘模組 223
13.1 Kinetis的系統控制 223
13.1.1 Kinetis架構 223
13.1.2 核心匯流排 224
13.1.3 交叉開關 224
13.1.4 記憶體耦合 226
13.1.5 系統訪問時間 228
13.2 時鐘管理 229
13.2.1 多時鐘發生器 229
13.2.2 系統振盪器 235
13.2.3 實時時鐘振盪器 238
13.3 電源管理 238
13.3.1 電源模式 239
13.3.2 進入及退出電源模式 240
13.3.3 電源模式轉換 240
13.3.4 電源模式關閉序列 240
13.3.5 低功耗模式操作模組 241
13.3.6 時鐘門控技術 244
13.3.7 時鐘初始化實例 244
本章小結 248
第14章 Freescale Kinetis開發實例 249
14.1 系統初始化框架 249
14.2 GPIO 257
14.3 實時時鐘RTC 266
14.4 通用異步收發器 272
14.4.1 UART功能概述 272
14.4.2 UART相關暫存器 273
14.4.3 UART測試實例 278
14.5 定時器 287
14.5.1 定時器簡介 287
14.5.2 定時器測試實例 288
14.6 看門狗 291
14.6.1 看門狗簡介 291
14.6.2 測試實例 293
14.7 模/數轉換模組 295
14.7.1 ADC功能概述 295
14.7.2 ADC特殊功能暫存器 296
14.7.3 ADC測試實例 298
14.8 矩陣鍵盤 300
14.8.1 鍵盤概述 300
14.8.2 矩陣鍵盤測試實例 302
14.9 PWM模組操作(servo9g舵機) 309
14.9.1 FTM功能概述 309
14.9.2 FTM特殊功能暫存器 310
14.9.3 FTM控制舵機測試實例 318
本章小結 324
參考文獻 325