叢書名 :嵌入式技術與套用叢書
著 者:王小強
出版時間:2012-01
版 次:01-01 頁 數:384
印刷時間: 開 本:16(185*260)
印 次:01-01 裝 幀:
I S B N :9787121153037
目 錄
第1篇 基 礎 篇
第1章 ARM處理器簡介 2
1.1 處理器工作模式 2
1.2 暫存器介紹 3
1.2.1 堆疊指針暫存器R13和連結暫存器R14 4
1.2.2 程式計數器R15 4
1.2.3 程式狀態暫存器 4
1.3 工作狀態 5
1.4 數據長度 5
1.5 存儲系統 5
1.5.1 ARM地址空間 6
1.5.2 ARM存儲器的格式 6
1.6 天嵌TQ2440開發板硬體資源概述 7
1.7 本章小結 9
1.8 擴展閱讀之CISC處理器和RISC處理器簡介 9
第2章 ADS集成開發環境及程式下載具體流程 11
2.1 ADS 1.2集成開發環境簡介 11
2.1.1 CodeWarrior for ARM 12
2.1.2 AXD調試器的啟動 13
2.2 工程的編輯與修改 13
2.2.1 建立一個新工程 14
2.2.2 建立一個源檔案 14
2.2.3 添加源檔案到工程 15
2.2.4 編譯與連結工程 16
2.2.5 打開已有的工程 16
2.3 工程的調試 16
2.3.1 裝載映像檔案 16
2.3.2 調試工具條的使用 17
2.4 H-JTAG的安裝與調試 18
2.4.1 H-JTAG的安裝 18
2.4.2 H-JTAG的設定 18
2.5 使用U-Boot下載裸機程式 21
2.6 本章小結 23
第3章 ARM指令集及彙編語言基礎 24
3.1 ARM指令集介紹 24
3.1.1 ARM指令集 24
3.1.2 ARM定址方式 30
3.1.3 ARM偽操作和偽指令介紹 33
3.2 ARM彙編基礎知識 40
3.3 ARM彙編程式的基本結構 41
3.3.1 編寫彙編程式基本的格式規範 42
3.3.2 程式入口和程式結束 43
3.3.3 段 43
3.3.4 標號(標誌符) 44
3.3.5 外部標號 48
3.3.6 檔案包含 48
3.4 用AXD調試ARM彙編程式實驗 48
3.4.1 建立工程並添加源檔案 48
3.4.2 工程的設定 50
3.4.3 編譯源檔案 51
3.4.4 啟動AXD調試器 51
3.4.5 手把手調試彙編程式 54
3.5 常用彙編語言程式子模組實例分析 57
3.5.1 特殊功能暫存器的訪問 57
3.5.2 記憶體數據複製 58
3.5.3 批量載入與存儲 58
3.5.4 堆疊操作 59
3.5.5 實現查表功能 61
3.6 本章小結 61
3.7 擴展閱讀之記憶體和I/O地址、前序定址和後序定址 61
第4章 ARM C語言基礎 63
4.1 數據類型基礎 63
4.1.1 用typedef和#define定義類型 63
4.1.2 用signed和unsigned修飾數據類型 64
4.1.3 volatile和強制類型轉換 64
4.2 深入理解位運算符和位運算 65
4.2.1 按位與運算符(&) 65
4.2.2 按位或運算符(|) 66
4.2.3 按位取反運算符(~) 66
4.2.4 左移和右移運算符(<>) 66
4.2.5 位運算套用實例分析 66
4.3 控制結構 67
4.3.1 選擇結構 67
4.3.2 循環結構 67
4.4 防止檔案重複包含技巧 68
4.5 ARM編譯器對C語言的擴展 68
4.5.1 __irq聲明中斷處理函式 68
4.5.2 __swi聲明軟中斷 69
4.5.3 __asm內嵌彙編 69
4.5.4 __inline定義內聯函式 69
4.6 本章小結 71
4.7 擴展閱讀之高速快取基礎知識 71
第5章 ARM彙編語言和C語言混合編程基礎 74
5.1 一個混合編程實例的實現 74
5.2 APCS規則概述 77
5.2.1 暫存器的使用 77
5.2.2 參數傳遞 77
5.2.3 函式的返回值 77
5.3 本章小結 77
第6章 GPIO編程實驗 79
6.1 GPIO概述 79
6.1.1 GPIO引腳介紹 79
6.1.2 GPIO特性分析 79
6.1.3 GPIO相關暫存器 80
6.1.4 GPIO套用實例 81
6.2 基礎實驗:第一個裸機程式——流水燈 82
6.2.1 硬體電路分析 82
6.2.2 建立工程並添加啟動代碼 83
6.2.3 添加源檔案 84
6.2.4 編輯源檔案 85
6.2.5 工程設定、編譯、連結 86
6.2.6 下載程式到開發板運行 89
6.2.7 由點亮LED引發的思考 93
6.2.8 再議點亮LED實驗 95
6.2.9 將點亮一個LED擴展到流水燈 97
6.3 GPIO擴展實驗 99
6.3.1 按鍵實驗 99
6.3.2 蜂鳴器實驗 104
6.4 本章小結 105
6.5 擴展閱讀之模組化編程、NAND FLASH和 NOR FLASH概述 106
第2篇 提 高 篇
第7章 啟動代碼分析 110
7.1 從開發板硬體講起 110
7.1.1 TQ2440核心板晶片功能介紹 110
7.1.2 從NAND FLASH和NOR FLASH啟動流程分析 112
7.2 啟動代碼詳解 113
7.3 啟動代碼主要功能模組分析 134
7.3.1 建立中斷向量表 134
7.3.2 初始化各個模式的堆疊 136
7.3.3 初始化系統硬體 137
7.3.4 初始化應用程式的執行環境並跳轉到主程式執行 137
7.3.5 跳轉到C語言主程式執行 139
7.4 本章小結 140
7.5 本章附錄——完整版啟動代碼 140
第8章 系統時鐘和定時器 147
8.1 S3C2440時鐘系統概述 147
8.1.1 系統時鐘初始化 148
8.1.2 FCLK、HCLK和PCLK與Fin的關係 149
8.2 定時器原理與套用 151
8.2.1 定時器原理 151
8.2.2 定時器相關的暫存器 153
8.2.3 定時器基礎實驗代碼詳解及測試 155
8.2.4 定時器擴展實驗之PWM實驗 157
8.3 本章小結 159
第9章 存儲器控制器 160
9.1 S3C2440地址空間 160
9.2 操作實例:SDRAM實例分析 162
9.2.1 SDRAM工作原理 162
9.2.2 SDRAM接口電路設計 163
9.2.3 SDRAM初始化過程詳解 164
9.2.4 回顧啟動代碼中的SDRAM初始化 166
9.3 本章小結 167
第10章 通用異步收發器(UART) 168
10.1 UART概述 168
10.2 S3C2440處理器UART工作原理 169
10.3 引腳描述及相關暫存器 170
10.4 UART基礎實驗 173
10.4.1 硬體電路分析 173
10.4.2 程式設計及代碼詳解 174
10.4.3 實例測試 175
10.4.4 UART基礎實驗分析 176
10.5 UART高級實驗——可變參數函式在UART中的套用 178
10.5.1 程式設計及代碼詳解 178
10.5.2 實例測試 181
10.6 本章小結 181
第11章 中斷控制系統 182
11.1 S3C2440中斷系統概述 182
11.1.1 深入理解CPU的工作模式 183
11.1.2 中斷控制器 184
11.2 外部中斷實驗 189
11.2.1 硬體電路分析 189
11.2.2 程式分析 189
11.2.3 中斷執行流程詳解 201
11.2.4 中斷處理流程引發的思考 206
11.2.5 實例測試 210
11.2.6 為什麼進入不了中斷 212
11.3 定時器中斷實驗 216
11.3.1 程式代碼分析 217
11.3.2 實例測試 220
11.4 串口中斷原理及實驗 220
11.4.1 如何正確使用中斷 221
11.4.2 程式代碼分析 224
11.4.3 實例測試 228
11.5 ARM中斷之高級套用:軟中斷原理及實驗 228
11.5.1 程式代碼分析 228
11.5.2 實例測試 233
11.5.3 軟中斷所用到的啟動代碼 234
11.6 本章小結 240
第12章 NAND FLASH原理與實驗 241
12.1 FLASH概述 241
12.1.1 NAND FLASH的基本結構 242
12.1.2 NAND FLASH接口電路 243
12.1.3 如何訪問NAND FLASH 245
12.1.4 S3C2440 NAND FLASH控制器 246
12.1.5 使用宏代替簡單的函式 249
12.2 NAND FLASH基礎實驗 251
12.2.1 NAND FLASH基本操作函式分析 251
12.2.2 NAND FLASH基礎實驗之頁讀寫 259
12.2.3 頁讀寫實例測試 265
12.2.4 NAND FLASH基礎實驗之讀ID 268
12.2.5 讀ID實例測試 271
12.3 NAND FLASH高級實驗 272
12.3.1 隨機讀、寫實驗代碼詳解 273
12.3.2 隨機讀、寫實例測試 276
12.4 回顧啟動代碼中的NAND FLASH讀取函式 277
12.5 本章小結 280
第13章 LCD控制器原理與實驗 281
13.1 LCD和LCD控制器工作原理 281
13.1.1 LCD概述 281
13.1.2 LCD接口信號 282
13.1.3 LCD顯示原理 283
13.1.4 LCD操作時序詳解 285
13.1.5 S3C2440 LCD控制器 287
13.1.6 LCD 控制暫存器初始化 288
13.2 LCD基礎實驗 295
13.2.1 硬體電路分析 295
13.2.2 程式代碼分析 296
13.2.3 實例測試 299
13.3 LCD基礎實驗之單像素顯示 299
13.3.1 程式代碼分析 300
13.3.2 實例測試 300
13.4 LCD基礎實驗之圖片顯示 301
13.4.1 如何將圖片轉換為C語言數組 301
13.4.2 程式代碼分析 304
13.4.3 實例測試 307
13.5 LCD高級實驗之漢字顯示 307
13.5.1 兩種常見的漢字編碼 307
13.5.2 LCD漢字顯示原理 308
13.5.3 程式代碼分析 309
13.5.4 實例測試 312
13.5.5 LCD顯示高級技巧——可變參函式Lcd_Printf的實現 313
13.5.6 可變參函式Lcd_Printf測試 316
13.5.7 漢字區位碼的思考 316
13.5.8 實例測試 318
13.6 本章小結 319
第14章 ADC原理與實驗 320
14.1 ADC原理 320
14.1.1 ADC相關暫存器 321
14.1.2 ADC初始化 322
14.2 ADC實驗 323
14.2.1 ADC實驗代碼詳解 323
14.2.2 ADC實驗測試 326
14.3 本章小結 327
第3篇 典型項目分析
第15章 綜合實戰 330
15.1 實戰1:數據採集系統實現 330
15.1.1 功能描述 330
15.1.2 模組劃分 330
15.1.3 代碼實現 331
15.1.4 實例測試 339
15.1.5 實驗總結 339
15.2 實戰2:串口控制實驗 339
15.2.1 功能描述 339
15.2.2 模組劃分 340
15.2.3 代碼實現 340
15.2.4 實例測試 347
15.2.5 實驗總結 347
15.3 實戰3:製作電子相冊 347
15.3.1 功能描述 347
15.3.2 模組劃分 347
15.3.3 代碼實現 347
15.3.4 實例測試 354
15.3.5 實驗總結 354
第4篇 理論知識擴展
第16章 嵌入式系統電源設計和Linux核心開發基礎 356
16.1 直流穩壓電源分類 356
16.1.1 普通線性穩壓器工作原理 356
16.1.2 低壓差線性穩壓器工作原理 357
16.1.3 電容式開關電源的工作原理 357
16.1.4 電感式開關電源的工作原理 358
16.1.5 嵌入式系統設計中的電源晶片選型 358
16.1.6 設計實例分析 360