作為一種32位高性能、低成本的嵌入式RISC微處理器,ARM已經成為應用最廣泛的嵌入式處理器。目前Cortex-A系列處理器已經占據了大部分的中高端產品市場。
本書在全面介紹Cortex-A9處理器的體系結構、編程模型、指令系統及Eclipse For ARM開發環境搭建的同時,以基于Cortex-A9為核心的應用處理器Exynos4412為核心,詳細介紹了ARM系統設計及相關接口技術。接口技術涵蓋了GPIO、GIC、UART、PWM、RTC、WDT、A/D、I2C、SPI等,并提供了大量的實驗例程和視頻講解,通過練習和操作實踐,幫助讀者鞏固所學的內容。
本書可以作為院校嵌入式相關專業和計算機相關專業的教材,也可以作為計算機軟硬件培訓班教材,還可以作為嵌入式研究方向的專業人才和廣大計算機愛好者的自學教材。
ARM嵌入式體系結構與接口技術(Cortex-A9版)(微課版)章節:
第1章 嵌入式ARM技術概論 1
1.1 ARM體系結構的技術特征及發展 2
1.1.1 ARM公司簡介 2
1.1.2 ARM技術特征 2
1.1.3 ARM體系架構的發展 3
1.2 ARM微處理器簡介 4
1.2.1 ARM9處理器系列 5
1.2.2 ARM9E處理器系列 5
1.2.3 ARM11處理器系列 6
1.2.4 SecurCore處理器系列 6
1.2.5 StrongARM和Xscale處理器系列 6
1.2.6 MPCore處理器系列 6
1.2.7 Cortex處理器系列 6
1.2.8 ARM應用處理器發展現狀與趨勢 8
1.3 ARM微處理器架構 9
1.4 ARM微處理器的應用選型 10
1.4.1 ARM芯片選擇的一般原則 10
1.4.2 選擇一款適合ARM教學的CPU 10
1.5 Cortex-A9內部功能及特點 12
1.6 數據類型 13
1.6.1 ARM的基本數據類型 13
1.6.2 浮點數據類型 13
1.6.3 存儲器大/小端 14
1.7 Cortex-A9內核工作模式 14
1.8 Cortex-A9存儲系統 15
1.8.1 協處理器(CP15) 16
1.8.2 存儲管理單元(MMU) 17
1.8.3 高速緩沖存儲器(Cache) 17
1.9 流水線 17
1.9.1 流水線的概念與原理 17
1.9.2 流水線的分類 18
1.9.3 影響流水線性能的因素 19
1.10 寄存器組織 19
1.11 程序狀態寄存器 21
1.12 三星Exynos4412處理器介紹 24
1.13 FS4412開發平臺介紹 25
1.14 本章小結 29
1.15 練習題 29
第2章 ARM開發環境搭建 30
2.1 仿真器簡介 31
2.2 開發環境搭建 31
2.2.1 Windows XP環境安裝FS-JTAG工具 32
2.2.2 Windows 7/Windows 8環境安裝FS-JTAG工具 34
2.2.3 Windows8.1環境安裝FS-JTAG工具 39
2.2.4 連接硬件平臺 42
2.2.5 USB轉串口驅動安裝 42
2.2.6 Putty串口終端配置 43
2.3 Eclipse for ARM使用 45
2.4 導入一個已有工程 45
2.5 調試工程 49
2.5.1 配置FS-JTAG調試工具 49
2.5.2 配置調試工具 49
2.5.3 查看變量及寄存器的方法 53
2.5.4 斷點設置方法 54
2.5.5 查看內存數據信息方法 54
2.5.6 調試結束后的處理 55
2.6 創建一個新工程 56
2.7 編譯工程 58
2.8 64位eclipse編譯常見問題及解決 60
2.9 本章小結 62
2.10 練習題 62
第3章 ARM指令 63
3.1 ARM指令集 64
3.1.1 數據處理指令尋址方式 64
3.1.2 乘法指令 69
3.1.3 跳轉指令 71
3.1.4 Load/Store指令 74
3.1.5 狀態寄存器傳輸指令 79
3.1.6 協處理器指令 81
3.1.7 異常產生指令 82
3.2 ARM指令的尋址方式 84
3.2.1 數據處理指令的操作數的尋址方式 84
3.2.2 字及無符號字節的Load/Store指令的尋址方式 85
3.2.3 批量Load/Store指令的尋址方式 86
3.2.4 相對尋址 88
3.3 本章小結 88
3.4 練習題 88
第4章 ARM匯編程序設計 89
4.1 GNU ARM匯編器的偽操作 90
4.1.1 符號定義偽操作 90
4.1.2 數據定義偽操作 91
4.1.3 匯編控制偽操作 93
4.1.4 雜項偽操作 94
4.2 ARM匯編器支持的偽指令 96
4.2.1 ADR偽指令 96
4.2.2 ADRL偽指令 97
4.2.3 LDR偽指令 97
4.3 ARM匯編語言的程序結構 98
4.3.1 匯編語言的程序格式 98
4.3.2 匯編語言的子程序調用 99
4.3.3 匯編語言程序設計舉例 99
4.4 匯編語言與C語言的混合編程 100
4.4.1 GNU內聯匯編 100
4.4.2 C和匯編的相互調用 103
4.4.3 過程調用標準AAPCS/ATPCS 104
4.5 本章小結 105
4.6 練習題 105
第5章 GPIO編程 106
5.1 GPIO功能介紹 107
5.2 Exynos4412-GPIO控制器詳解 107
5.2.1 GPIO功能描述 107
5.2.2 GPIO特性 107
5.2.3 GPIO分組預覽 108
5.2.4 Exynos4412-GPIO常用寄存器分類 108
5.2.5 Exynos4412-GPIO接口常用寄存器詳解 109
5.2.6 GPIO寄存器封裝 110
5.3 GPIO控制實驗 112
5.3.1 實驗目的 112
5.3.2 實驗原理 112
5.3.3 實驗內容 113
5.3.4 實驗代碼 113
5.3.5 實驗現象 114
5.4 本章小結 114
5.5 練習題 114
第6章 ARM異常及中斷處理 115
6.1 ARM異常中斷處理概述 116
6.2 ARM體系異常種類 116
6.3 ARM異常的優先級 121
6.4 ARM處理器模式和異常 121
6.5 ARM異常響應和處理程序返回 122
6.5.1 中斷響應的概念 122
6.5.2 ARM異常響應流程 122
6.5.3 從異常處理程序中返回 123
6.6 ARM的SWI異常中斷處理程序設計 124
6.7 ARM中斷控制器簡介 126
6.7.1 中斷軟件分支處理(NVIC和GIC) 126
6.7.2 硬件支持的分支處理(VIC) 127
6.8 通用中斷控制器(GIC) 128
6.8.1 GIC功能模塊 129
6.8.2 GIC中斷控制器中斷類型 130
6.8.3 GIC中斷控制器中斷狀態 130
6.8.4 GIC中斷處理流程 130
6.9 Exynos4412中斷源 131
6.10 Exynos4412-GIC寄存器詳解 131
6.11 GIC中斷實驗 135
6.11.1 實驗目的 135
6.11.2 實驗原理 135
6.11.3 實驗內容 136
6.11.4 實驗代碼 137
6.11.5 實驗現象 140
6.12 本章小結 140
6.13 練習題 140
第7章 串行通信接口 141
7.1 串行通信概述 142
7.1.1 串行通信與并行通信概念 142
7.1.2 異步串行方式的特點 142
7.1.3 異步串行方式的數據格式 142
7.1.4 同步串行方式的特點 142
7.1.5 同步串行方式的數據格式 143
7.1.6 波特率、波特率因子與位周期 143
7.1.7 RS-232C串口規范 143
7.1.8 RS-232C接線方式 145
7.2 Exynos4412異步串行通信 145
7.2.1 Exynos4412串口控制器概述 145
7.2.2 UART寄存器詳解 146
7.3 串口通信實驗 151
7.3.1 實驗目的 151
7.3.2 實驗原理 151
7.3.3 實驗內容 152
7.3.4 實驗代碼 152
7.3.5 實驗現象 154
7.4 本章小結 155
7.5 練習題 155
第8章 PWM定時器 156
8.1 定時器和PWM簡介 157
8.1.1 定時器概述 157
8.1.2 脈沖寬度調制(PWM)概述 157
8.2 Exynos4412-PWM定時器詳解 157
8.2.1 PWM定時器概述 157
8.2.2 PWM定時器寄存器詳解 158
8.2.3 PWM定時器雙緩沖功能 161
8.2.4 PWM定時器PWM信號輸出 162
8.3 PWM定時器實驗—定時觸發 163
8.3.1 實驗目的 163
8.3.2 實驗原理 163
8.3.3 實驗代碼 163
8.3.4 實驗現象 165
8.4 PWM定時器實驗—PWM輸出 166
8.4.1 實驗目的 166
8.4.2 實驗原理 166
8.4.3 實驗代碼 166
8.4.4 實驗現象 167
8.5 本章小結 167
8.6 練習題 167
第9章 看門狗定時器 168
9.1 看門狗簡介 169
9.2 Exynos4412看門狗定時器詳解 169
9.2.1 看門狗定時器概述 169
9.2.2 看門狗定時器寄存器詳解 170
9.3 看門狗定時器實驗 171
9.3.1 實驗目的 171
9.3.2 實驗原理 171
9.3.3 實驗內容 171
9.3.4 實驗代碼 171
9.3.5 實驗現象 172
9.4 本章小結 173
9.5 練習題 173
第10章 RTC定時器 174
10.1 RTC簡介 175
10.2 Exynos4412-RTC定時器詳解 175
10.2.1 RTC定時器概述 175
10.2.2 RTC定時器寄存器詳解 175
10.2.3 BCD碼 177
10.3 實時時鐘RTC實驗 177
10.3.1 實驗目的 177
10.3.2 實驗原理 177
10.3.3 實驗內容 178
10.3.4 實驗代碼 178
10.3.5 實驗現象 179
10.4 本章小結 180
10.5 練習題 180
第11章 A/D轉換器 181
11.1 A/D 轉換器原理 182
11.1.1 A/D轉換基礎 182
11.1.2 A/D轉換的技術指標 182
11.1.3 A/D轉換器類型 183
11.1.4 A/D轉換的一般步驟 186
11.2 Exynos4412-A/D轉換器詳解 186
11.2.1 Exynos4412-A/D轉換器概述 186
11.2.2 Exynos4412-A/D轉換器寄存器詳解 187
11.3 A/D實驗 188
11.3.1 實驗目的 188
11.3.2 實驗原理 188
11.3.3 實驗內容 188
11.3.4 實驗代碼 189
11.3.5 實驗現象 191
11.4 本章小結 191
11.5 練習題 192
第12章 I2C接口 193
12.1 I2C總線協議 194
12.1.1 I2C總線協議簡介 194
12.1.2 I2C總線協議內容 194
12.2 Exynos4412-I2C控制器詳解 197
12.2.1 I2C總線控制器概述 197
12.2.2 I2C總線控制器寄存器詳解 197
12.2.3 I2C控制器操作流程 200
12.3 I2C重力感應/陀螺儀實驗 201
12.3.1 實驗目的 201
12.3.2 實驗原理 201
12.3.3 實驗內容 202
12.3.4 實驗代碼 203
12.3.5 實驗現象 206
12.4 本章小結 207
12.5 練習題 207
第13章 SPI接口 208
13.1 SPI總線協議 209
13.1.1 協議簡介 209
13.1.2 協議內容 209
13.2 Exynos4412-SPI控制器詳解 212
13.2.1 SPI控制器簡介 212
13.2.2 SPI控制器時鐘源控制 212
13.2.3 SPI控制器寄存器詳解 215
13.3 SPI/CAN總線實驗 218
13.3.1 實驗目的 218
13.3.2 實驗原理 218
13.3.3 實驗內容 219
13.3.4 實驗代碼 220
13.3.5 實驗現象 223
13.4 本章小結 224
13.5 練習題 224