內容簡介
本書以S3C6410處理器為核心講述嵌入式系統的原理及套用,包含兩方面內容:一是介紹通用ARM微處理器的基本架構、基本驅動程式的編程思想和編程方法,重點介紹基於ARM11架構的硬體接口電路的開發流程;二是以北京中芯優電TOPSEN嵌入式開發實驗系統為硬體平台,結合多個綜合套用開發實例,詳細分析了幾個案例的系統設計,從而使讀者加快掌握S3C6410處理器開發的流程。相比第1版,本書對讀者反饋問題進行了修正,並增加了習題。
本書側重於實踐套用,以典型案例為基礎,注重基礎理論與實踐套用的結合,可作為套用類本科院校的教材,適用於培養套用型電子技術人才,同時也可以作為嵌入式開發人員的參考書。
圖書目錄
第1章 ARM 微處理器概述………………………………………………………… 1
1.1 ARM 及相關技術簡介……………………………………………………… 1
1.2 ARM 微處理器的套用領域及特點………………………………………… 2
1.3 ARM 微處理器系列………………………………………………………… 2
1.4 ARM 微處理器結構………………………………………………………… 13
1.5 ARM 微處理器的套用選型………………………………………………… 14
1.6 本章小結……………………………………………………………………… 16
1.7 練習題……………………………………………………………………… 16
第2章 ARM 微處理器的編程模型……………………………………………… 17
2.1 ARM 微處理器的工作狀態………………………………………………… 17
2.2 ARM 體系結構的存儲器格式……………………………………………… 18
2.3 指令長度和數據類型………………………………………………………… 19
2.4 處理器模式…………………………………………………………………… 19
2.5 暫存器組織…………………………………………………………………… 19
2.5.1 ARM 狀態下的暫存器組織…………………………………………… 19
2.5.2 Thumb狀態下的暫存器組織………………………………………… 22
2.5.3 程式狀態暫存器………………………………………………………… 23
2.6 異 常………………………………………………………………………… 25
2.7 本章小結……………………………………………………………………… 29
2.8 練習題………………………………………………………………………… 29
第3章 ARM 微處理器的指令系統……………………………………………… 31
3.1 ARM 微處理器的指令集概述……………………………………………… 31
3.2 ARM 指令的定址方式……………………………………………………… 33
3.3 ARM 指令集………………………………………………………………… 35
3.3.1 跳轉指令………………………………………………………………… 35
3.3.2 數據處理指令…………………………………………………………… 37
3.3.3 乘法指令與乘加指令…………………………………………………… 41
3.3.4 程式狀態暫存器訪問指令……………………………………………… 43
3.3.5 載入/存儲指令………………………………………………………… 44
3.3.6 批量數據載入/存儲指令……………………………………………… 46
3.3.7 數據交換指令…………………………………………………………… 46
3.3.8 移位指令(操作)………………………………………………………… 47
3.3.9 協處理器指令…………………………………………………………… 48
3.3.10 異常產生指令………………………………………………………… 50
3.4 Thumb指令及套用………………………………………………………… 50
3.5 本章小結……………………………………………………………………… 51
3.6 練習題………………………………………………………………………… 52
第4章 ARM 程式設計基礎……………………………………………………… 53
4.1 ARM 彙編器所支持的偽指令……………………………………………… 53
4.1.1 符號定義偽指令………………………………………………………… 53
4.1.2 數據定義偽指令………………………………………………………… 55
4.1.3 彙編控制偽指令………………………………………………………… 58
4.1.4 其他常用的偽指令……………………………………………………… 59
4.2 彙編語言的語句格式………………………………………………………… 64
4.2.1 在彙編語言程式中常用的符號………………………………………… 64
4.2.2 彙編語言程式中的表達式和運算符…………………………………… 65
4.3 彙編語言的程式結構………………………………………………………… 68
4.3.1 彙編語言的程式結構…………………………………………………… 68
4.3.2 彙編語言的子程式調用………………………………………………… 69
4.3.3 彙編語言程式示例……………………………………………………… 69
4.4 彙編語言模組的結構………………………………………………………… 72
4.4.1 彙編語言源檔案的編排………………………………………………… 72
4.4.2 ARM 彙編語言模組的示例…………………………………………… 73
4.4.3 調用子例程……………………………………………………………… 74
4.4.4 條件執行………………………………………………………………… 75
4.4.5 使用條件執行及其示例………………………………………………… 76
4.4.6 Q 標記………………………………………………………………… 79
4.4.7 彙編語言與C/C++的混合編程…………………………………… 79
4.5 本章小結……………………………………………………………………… 80
4.6 練習題………………………………………………………………………… 81
第5章 ARM C語言程式設計基礎………………………………………………… 82
5.1 嵌入式系統中的C語言編程基礎………………………………………… 82
5.2 偽指令在嵌入式程式設計中的套用………………………………………… 83
5.3 嵌入式C語言程式設計中的函式及函式館……………………………… 86
5.4 嵌入式程式設計中常用的C語言語句…………………………………… 86
5.5 彙編語言與C/C++的混合編程………………………………………… 89
5.6 ATPCS規則………………………………………………………………… 93
5.7 本章小結……………………………………………………………………… 95
5.8 練習題………………………………………………………………………… 95
第6章 S3C6410系統設計與調試………………………………………………… 97
6.1 系統設計概述………………………………………………………………… 97
6.2 S3C6410概述………………………………………………………………… 98
6.2.1 S3C6410及片內外圍簡介……………………………………………… 98
6.2.2 S3C6410的引腳分布及信號描述…………………………………… 100
6.2.3 外部存儲器接口……………………………………………………… 105
6.2.4 串列通信……………………………………………………………… 107
6.2.5 顯示器控制…………………………………………………………… 109
6.3 存儲器映射………………………………………………………………… 112
6.4 系統控制器………………………………………………………………… 113
6.4.1 時鐘源………………………………………………………………… 114
6.4.2 鎖相環………………………………………………………………… 115
6.4.3 ARM 和AXI/AHB/APB匯流排時鐘發生器………………………… 116
6.4.4 MFC時鐘發生器……………………………………………………… 118
6.4.5 顯示時鐘發生器(POST,LCD和Scaler)…………………………… 119
6.4.6 時鐘開/關控制………………………………………………………… 120
6.5 S3C6410復位信號………………………………………………………… 120
6.5.1 溫復位………………………………………………………………… 120
6.5.2 軟體復位……………………………………………………………… 123
6.5.3 看門狗復位…………………………………………………………… 124
6.6 暫存器描述………………………………………………………………… 126
6.6.1 部分SFR暫存器……………………………………………………… 126
6.6.2 PLL控制暫存器……………………………………………………… 128
6.6.3 時鐘源控制暫存器…………………………………………………… 130
6.7 系統的硬體選型與單元電路設計………………………………………… 132
6.7.1 電源電路……………………………………………………………… 132
6.7.2 晶振電路與復位電路………………………………………………… 132
6.7.3 Flash存儲器接口電路……………………………………………… 133
6.7.4 SDRAM 接口電路…………………………………………………… 135
6.7.5 串列接口電路………………………………………………………… 139
6.7.6 I2C接口電路………………………………………………………… 140
6.7.7 JTAG接口電路……………………………………………………… 141
6.7.8 S3C6410與LCD接口設計…………………………………………… 142
6.8 硬體系統的調試…………………………………………………………… 147
6.8.1 電源、晶振及復位電路………………………………………………… 148
6.8.2 S3C6410及JTAG接口電路………………………………………… 148
6.8.3 SDRAM 接口電路的調試…………………………………………… 149
6.8.4 Flash接口電路的調試……………………………………………… 150
6.9 印刷電路板的設計注意事項……………………………………………… 151
6.9.1 電源質量與分配……………………………………………………… 151
6.9.2 同類型信號線的分布………………………………………………… 151
6.10 本章小結…………………………………………………………………… 152
6.11 練習題……………………………………………………………………… 152
第7章 通用GPIO 編程…………………………………………………………… 153
7.1 GPIO功能介紹…………………………………………………………… 153
7.2 S3C6410晶片的GPIO控制器詳解……………………………………… 153
7.2.1 S3C6410GPIO常用暫存器分類…………………………………… 153
7.2.2 S3C6410I/O口常用暫存器詳解…………………………………… 155
7.3 S3C6410GPIO的套用…………………………………………………… 175
7.3.1 電路連線……………………………………………………………… 175
7.3.2 暫存器設定…………………………………………………………… 175
7.4 本章小結…………………………………………………………………… 176
7.5 練習題……………………………………………………………………… 176
第8章 部件工作原理與編程示例………………………………………………… 177
8.1 嵌入式系統的程式設計方法……………………………………………… 177
8.2 UART控制器……………………………………………………………… 178
8.2.1 UART的工作方式…………………………………………………… 179
8.2.2 相關暫存器…………………………………………………………… 182
8.3 UART 接口套用舉例……………………………………………………… 190
8.4 矢量中斷控制器…………………………………………………………… 195
8.5 中斷調用方法……………………………………………………………… 205
8.6 PWM 定時器……………………………………………………………… 207
8.6.1 PWM 的操作方式…………………………………………………… 209
8.6.2 S3C6410中的特殊功能暫存器……………………………………… 214
8.6.3 TINT_CSTAT ……………………………………………………… 218
8.7 RTC實時時鐘……………………………………………………………… 219
8.7.1 RTC暫存器描述……………………………………………………… 221
8.7.2 RTC暫存器編程舉例………………………………………………… 225
8.8 I2C匯流排接口……………………………………………………………… 226
8.8.1 I2C匯流排接口概述…………………………………………………… 226
8.8.2 I2C匯流排接口操作模式……………………………………………… 227
8.8.3 多主控器I2C匯流排控制暫存器(IICCON)…………………………… 231
8.8.4 I2C匯流排暫存器編程舉例…………………………………………… 232
8.9 DMA 控制器……………………………………………………………… 234
8.9.1 DMA 控制器的特性………………………………………………… 235
8.9.2 DMA 源……………………………………………………………… 236
8.9.3 DMA 接口…………………………………………………………… 237
8.9.4 程式設計師的模式………………………………………………………… 240
8.9.5 DMA 暫存器描述…………………………………………………… 241
8.10 SPI控制器………………………………………………………………… 249
8.10.1 概 述………………………………………………………………… 249
8.10.2 SPI的操作…………………………………………………………… 250
8.10.3 SPI傳輸格式………………………………………………………… 252
8.10.4 SPI接口編程示例…………………………………………………… 256
8.11 BootLoader簡介………………………………………………………… 262
8.11.1 BootLoader簡介…………………………………………………… 262
8.11.2 啟動方法……………………………………………………………… 264
8.11.3 檢測系統的記憶體映射………………………………………………… 267
8.12 本章小結…………………………………………………………………… 269
8.13 練習題……………………………………………………………………… 270
第9章 S3C6410綜合套用設計實例……………………………………………… 271
9.1 基於S3C6410光敏感測器系統設計實例………………………………… 271
9.1.1 基本原理……………………………………………………………… 271
9.1.2 協調器程式下載方法………………………………………………… 274
9.1.3 節點程式燒寫和節點測試…………………………………………… 276
9.1.4 硬體電路原理圖和部分程式代碼…………………………………… 277
9.2 基於S3C6410溫濕度感測器系統設計實例……………………………… 281
9.2.1 基本原理……………………………………………………………… 281
9.2.2 節點程式燒寫和節點測試…………………………………………… 284
9.2.3 硬體電路原理圖和部分程式代碼…………………………………… 286
9.3 基於S3C6410電機和燈光感測器系統設計實例………………………… 294
9.3.1 基本原理……………………………………………………………… 294
9.3.2 節點程式燒寫和節點測試…………………………………………… 294
9.2.3 硬體電路原理圖和部分程式代碼…………………………………… 296
9.4 基於S3C6410煙霧感測器系統設計實例………………………………… 298
9.4.1 基本原理……………………………………………………………… 298
9.4.2 節點程式燒寫和節點測試…………………………………………… 298
9.4.3 硬體電路原理圖和部分程式代碼…………………………………… 300
9.5 基於S3C6410乾簧管感測器系統實例…………………………………… 302
9.5.1 基本原理……………………………………………………………… 302
9.5.2 節點程式燒寫和節點測試…………………………………………… 303
9.5.3 硬體電路原理圖和部分程式代碼…………………………………… 304
9.6 本章小結…………………………………………………………………… 306
9.7 練習題……………………………………………………………………… 307
第10章 RealView MDK 集成開發環境的使用………………………………… 308
10.1 RealView MDK集成開發環境組成介紹……………………………… 308
10.2 RealView MDK使用方法……………………………………………… 311
10.2.1 創建一個工程………………………………………………………… 311
10.2.2 編譯、連結工程……………………………………………………… 313
10.3 程式調試…………………………………………………………………… 315
10.4 程式調試舉例……………………………………………………………… 317
10.5 本章小結…………………………………………………………………… 321
10.6 練習題……………………………………………………………………… 321
參考文獻……………………………………………………………………………… 322