內容簡介
本書在全面介紹CORTEX-A8處理器的體系結構、編程模型、指令系統及EclipseFor ARM開發環境的同時,以基於CORTEX-A8的套用處理器S5PC100為核心,詳細介紹了系統的設計及相關接口技術。接口技術中涵蓋了I/O、中斷、串口、存儲器、PWM、A/D、DMA、LCD、CamIF。書中提供了大量實驗內容。
本書可作為高等院校或高等職業院校電子、通信、自動化、計算機等專業的ARM體系結構、接口技術課程的教材,也可作為相關嵌入式開發人員的參考書。
圖書目錄
第 1章 嵌入式系統基礎知識 1
1.1 嵌入式系統的概述 1
1.1.1 嵌入式系統簡介 1
1.1.2 嵌入式系統的特點 2
1.1.3 嵌入式系統的發展 3
1.2 嵌入式系統的組成 5
1.2.1 嵌入式系統的硬體組成 5
1.2.2 嵌入式系統的軟體組成 6
1.3 嵌入式作業系統舉例 6
1.3.1 商業版嵌入式作業系統 6
1.3.2 開源版嵌入式作業系統 7
1.4 嵌入式系統開發概述 8
小結 13
思考與練習 13
第 2章 ARM技術概述 14
2.1 ARM體系結構的技術特徵及發展 14
2.1.1 ARM公司簡介 14
2.1.2 ARM技術特徵 15
2.1.3 ARM體系結構的發展 16
2.2 ARM微處理器簡介 18
2.2.1 ARM7處理器系列 19
2.2.2 ARM9處理器系列 19
2.2.3 ARM9E 處理器系列 20
2.2.4 ARM11處理器系列 20
2.2.5 SecurCore處理器系列 20
2.2.6 StrongARM和Xscale處理器系列 21
2.2.7 MPCore處理器系列 21
2.2.8 Cortex處理器系列 21
2.3 ARM微處理器結構 23
2.4 ARM微處理器的套用選型 23
2.4.1 ARM晶片選擇的一般原則 24
2.4.2 選擇適合教學的ARM晶片 24
2.5 Cortex-A8內部功能及特點 28
2.6 數據類型 28
2.6.1 ARM的基本數據類型 28
2.6.2 浮點數據類型 29
2.6.3 存儲器大/小端 29
2.7 Cortex-A8核心工作模式 30
2.8 Cortex-A8存儲系統 31
2.8.1 協處理器 32
2.8.2 存儲管理單元 33
2.8.3 高速緩衝存儲器 33
2.8.4 NEON技術 34
2.8.5 安全域(TrustZone) 34
2.9 流水線 34
2.9.1 流水線的概念與原理 34
2.9.2 流水線的分類 35
2.9.3 影響流水線性能的因素 36
2.10 暫存器組織 37
2.11 程式狀態暫存器 39
2.12 SAMSUNG S5PC100處理器介紹 41
小結 43
思考與練習 43
第3章 ARM的指令集合 44
3.1 ARM指令集 44
3.1.1 數據操作指令 44
3.1.2 乘法指令 51
3.1.3 Load/Store指令 53
3.1.4 跳轉指令 59
3.1.5 狀態操作指令 62
3.1.6 協處理器指令 63
3.1.7 異常產生指令 65
3.2 ARM指令的定址方式 67
小結 71
思考與練習 71
第4章 GNU彙編偽指令集 72
4.1 GNU彙編器的平台無關偽指令 72
4.1.1 偽指令概念 72
4.1.2 符號定義偽指令 73
4.1.3 數據定義偽指令 74
4.1.4 彙編控制偽操作 76
4.1.5 雜項偽操作 78
4.2 GNU彙編器支持的ARM偽指令 80
4.2.1 ADR偽指令 80
4.2.2 ADRL偽指令 80
4.2.3 LDR偽指令 81
4.3 ARM彙編語言的程式結構 82
4.3.1 彙編語言的程式格式 82
4.3.2 彙編語言的子程式調用 82
4.3.3 過程調用標準AAPCS/ATPCS 83
4.3.4 彙編語言程式設計舉例 84
4.4 彙編語言與C語言的混合編程 84
4.4.1 GNU內聯彙編 85
4.4.2 C和彙編的混合編程 87
小結 88
思考與練習 89
第5章 ARM集成開發環境搭建 90
5.1 FS-JTAG仿真器介紹 90
5.2 開發環境搭建 91
5.2.1 開發工具的安裝 91
5.2.2 創建一個新工程 93
5.2.3 調試工程 95
小結 96
思考與練習 96
第6章 GPIO編程 97
6.1 GPIO功能介紹 97
6.2 S5PC100晶片的GPIO控制器介紹 98
6.2.1 特性 98
6.2.2 GPIO分組預覽 98
6.2.3 S5PC100的GPIO常用暫存器分類 98
6.2.4 S5PC100 I/O接口常用暫存器詳解 99
6.3 S5PC100的GPIO的實例 100
6.3.1 電路原理 101
6.3.2 暫存器設定 101
6.3.3 程式編寫 101
小結 102
思考與練習 102
第7章 ARM系統時鐘及編程 103
7.1 S5PC100時鐘域的劃分 103
7.2 S5PC100時鐘的產生過程分析 104
7.2.1 時鐘的產生 104
7.2.2 模組對應的時鐘域 105
7.3 S5PC100時鐘源的選擇 105
7.3.1 時鐘來自於外部引腳 105
7.3.2 時鐘來自於時鐘管理單元(CMU) 106
7.4 S5PC100時鐘的配置 106
7.5 S5PC100時鐘配置暫存器描述 108
7.6 S5PC100時鐘源配置示例 109
小結 110
思考與練習 110
第8章 ARM異常處理及編程 111
8.1 ARM異常中斷處理概述 111
8.2 ARM體系異常種類 112
8.3 ARM異常的優先權 116
8.4 ARM處理器模式和異常 117
8.5 ARM異常回響和處理程式返回 117
8.5.1 中斷回響的概念 117
8.5.2 ARM異常回響流程 118
8.5.3 從異常處理程式中返回 119
8.6 ARM系統中異常中斷處理程式的安裝 121
8.7 ARM的SWI異常中斷處理程式設計 121
8.8 FIQ和IRQ異常中斷程式設計 124
8.9 基於Cortex-A8核心的S5PC100異常程式設計 125
8.9.1 S5PC100中斷機制分析 125
8.9.2 S5PC100中斷處理程式實例 128
小結 132
思考與練習 132
第9章 串列通信接口 133
9.1 串列通信 133
9.1.1 串列通信與並行通信的概念 133
9.1.2 異步串列方式的特點 134
9.1.3 異步串列方式的數據格式 134
9.1.4 同步串列方式的特點 134
9.1.5 同步串列方式的數據格式 134
9.1.6 比特率、比特率因子與位周期 135
9.1.7 RS-232C串口規範 135
9.1.8 RS-232C接線方式 137
9.2 S5PC100異步串列通信 137
9.2.1 S5PC100串口控制器概述 137
9.2.2 S5PC100串口控制器暫存器 138
9.3 串口傳送接收程式示例 142
9.3.1 電路連線 142
9.3.2 程式的編寫 142
9.3.3 調試與運行程式 145
小結 145
思考與練習 145
第 10章 PWM定時器 146
10.1 S5PC100 PWM定時器 146
10.1.1 PWM定時器概述 146
10.1.2 PWM定時器特點 147
10.1.3 PWM定時器的暫存器 148
10.1.4 PWM定時器示例 152
10.2 S5PC100看門狗定時器 154
10.2.1 S5PC100看門狗定時器概述 154
10.2.2 看門狗定時器暫存器 155
10.2.3 看門狗定時器程式編寫 156
小結 157
思考與練習 157
第 11章 A/D轉換器 158
11.1 A/D轉換器原理 158
11.1.1 A/D轉換基礎 158
11.1.2 A/D轉換的技術指標 159
11.1.3 A/D轉換器類型 160
11.1.4 A/D轉換的一般步驟 164
11.2 S5PC100 A/D轉換器 164
11.2.1 S5PC100 A/D轉換器概述 164
11.2.2 S5PC100 A/D控制器暫存器 165
11.3 A/D轉換器示例 167
11.3.1 電路連線 167
11.3.2 程式的編寫 167
11.3.3 調試與運行結果 168
小結 168
思考與練習 168
第 12章 實時時鐘RTC 169
12.1 RTC介紹 169
12.2 RTC控制器 170
12.3 RTC控制器暫存器詳解 170
12.4 RTC套用示例 173
小結 174
思考與練習 174
第 13章 I2C匯流排 175
13.1 I2C匯流排 175
13.1.1 I2C匯流排介紹 175
13.1.2 I2C匯流排術語 176
13.1.3 I2C匯流排位傳輸 176
13.1.4 I2C匯流排數據傳輸 177
13.1.5 I2C匯流排定址方式 177
13.1.6 快速和高速模式 178
13.2 I2C匯流排控制器 179
13.2.1 S5PC100下的I2C控制器介紹 179
13.2.2 I2C匯流排控制暫存器詳解 179
13.3 I2C匯流排套用示例 180
13.3.1 電路原理分析 180
13.3.2 代碼實現 182
小結 183
思考與練習 183
第 14章 存儲器接口 184
14.1 Flash ROM介紹 184
14.2 NOR Flash操作 186
14.2.1 AM29LV160D晶片介紹 186
14.2.2 AM29LV160D字編程操作 187
14.2.3 AM29LV160D扇區/塊擦除操作 188
14.2.4 AM29LV160D晶片擦除操作 188
14.2.5 AM29LV160D與S5PC100的接口電路 189
14.2.6 AM29LV160D存儲器的程式設計 190
14.3 NAND Flash操作 192
14.3.1 晶片介紹 192
14.3.2 讀操作過程 193
14.3.3 擦除操作過程 194
14.3.4 寫操作過程 195
14.4 S5PC100中NAND Flash控制器的操作 195
14.4.1 S5PC100中NAND Flash控制器概述 195
14.4.2 S5PC100中NAND Flash控制器暫存器詳解 196
14.5 S5PC100 NAND Flash接口電路與程式設計 198
14.5.1 K9F2G080U和S5PC100的接口電路 198
14.5.2 S5PC100控制K9F2G080U的程式設計 198
小結 202
思考與練習 202
第 15章 SPI接口 203
15.1 SPI匯流排協定理論 203
15.1.1 協定簡介 203
15.1.2 協定內容 203
15.2 SPI控制器詳解 205
15.2.1 S5PC100的SPI控制器簡介 205
15.2.2 時鐘源控制 206
15.2.3 暫存器詳解 206
15.3 SPI接口套用示例 208
小結 214
思考與練習 214
第 16章 DMA控制器 215
16.1 PL330原理概述 215
16.1.1 DMAC簡述 215
16.1.2 S5PC100下的DMAC模型 216
16.1.3 PL330簡述 217
16.2 PL330詳解 219
16.2.1 PL330指令集 219
16.2.2 相關暫存器詳解 223
16.3 S5PC100 PL330示例 224
小結 228
思考與練習 228
第 17章 LCD接口技術 229
17.1 LCD控制器原理概述 229
17.1.1 LCD控制器介紹 229
17.1.2 S5PC100的 LCD控制器介紹 230
17.1.3 S5PC100的LCD控制器操作 231
17.1.4 LCD控制器暫存器 233
17.2 LCD控制器套用示例 237
小結 241
思考與練習 241
第 18章 CAMIF接口技術 242
18.1O V9650介紹 242
18.1.1 晶片功能描述 242
18.1.2 OV9650物理參數 243
18.1.3 OV9650暫存器詳解 244
18.2 SCCB匯流排 246
18.2.1 SCCB協定介紹 246
18.2.2 SCCB的匯流排編程 247
18.3 CAMIF接口詳解 248
18.3.1 基於S5PC100的CAMIF接口介紹 248
18.3.2 S5PC100 CAMIF暫存器詳解 250
18.3.3 CAMIF套用示例 253
小結 256
思考與練習 256
參考文獻 257