第1章 嵌入式係統概述 1
1.1 嵌入式係統的概念 1
1.1.1 嵌入式係統的定義 1
1.1.2 嵌入式係統的特點 2
1.2 嵌入式係統的組成 2
1.2.1 嵌入式處理器 2
1.2.2 外圍設備 3
1.2.3 嵌入式操作係統 3
1.2.4 應用軟件 3
1.3 嵌入式處理器 4
1.3.1 嵌入式處理器的分類 4
1.3.2 嵌入式微處理器 5
1.3.3 嵌入式微控製器 5
1.3.4 嵌入式DSP處理器 6
1.3.5 嵌入式片上係統 6
1.3.6 選擇嵌入式處理器 7
1.4 嵌入式操作係統 7
1.4.1 操作係統的概念和分類 7
1.4.2 實時操作係統 8
1.4.3 常用的嵌入式操作係統 10
1.5 新型的嵌入式操作係統 13
1.5.1 Android 13
1.5.2 MontaVista 14
1.6 嵌入式係統的應用 15
1.7 嵌入式係統的發展趨勢 18
1.7.1 嵌入式係統麵臨的挑戰 18
1.7.2 嵌入式係統的發展前景 18
1.8 本章小結 19
第2章 嵌入式係統開發過程 20
2.1 嵌入式軟件開發介紹 20
2.1.1 嵌入式軟件開發的特殊性 20
2.1.2 嵌入式軟件的分類 21
2.1.3 嵌入式軟件的開發流程 21
2.1.4 嵌入式軟件開發工具的發展趨勢 23
2.2 嵌入式軟件的調試技術 24
2.2.1 調試技術介紹 24
2.2.2 基於JTAG的ARM係統調試 25
2.3 嵌入式軟件測試技術 26
2.3.1 宿主機-目標機開發模式 26
2.3.2 目標監控器 27
2.4 嵌入式係統集成開發環境 29
2.4.1 ADS的介紹 29
2.4.2 ADS建立工程的使用介紹 31
2.4.3 AXD調試器的使用介紹 36
實例2-1:ARM開發環境ADS的使用實例 38
2.5 本章小結 42
第3章 ARM體係結構 43
3.1 ARM體係結構概述 43
3.1.1 ARM體係結構簡介 44
3.1.2 ARM體係結構的技術特徵 46
3.1.3 CISC的體係結構 47
3.1.4 RISC的體係結構 47
3.1.5 RISC係統和CISC係統的比較 49
3.2 ARM微處理器的分類 50
3.2.1 ARM7微處理器 50
3.2.2 ARM9微處理器 51
3.2.3 ARM9E微處理器 51
3.2.4 ARM10E微處理器 52
3.2.5 ARM11微處理器 53
3.2.6 SecurCore微處理器 53
3.2.7 trongARM微處理器 53
3.2.8 XScale微處理器 54
3.3 ARM微處理器的應用 54
3.3.1 ARM微處理器的應用選型 54
3.3.2 S3C2410處理器 55
3.4 存儲器 56
3.4. 1 存儲器簡介 56
3.4.2 SDRAM操作 58
3.4.3 Flash 59
3.5 ARM編程模型 60
3.5.1 數據類型 60
3.5.2 存儲器格式 61
3.5.3 處理器工作狀態 61
3.5.4 處理器運行模式 62
3.5.5 寄存器組織 62
3.5.6 內部寄存器 65
3.6 ARM指令的尋址方式 66
3.6.1 立即尋址 66
3.6.2 寄存器尋址 67
3.6.3 寄存器間接尋址 67
3.6.4 相對尋址 68
3.6.5 堆棧尋址 68
3.6.6 塊復製尋址 69
3.6.7 變址尋址 69
3.6.8 多寄存器尋址 70
3.7 ARM指令集 70
3.7.1 ARM指令的格式 70
3.7.2 ARM指令分類 71
3.7.3 Thumb指令介紹 77
3.7.4 Thumb指令分類 78
3.7.5 ARM指令集和Thumb指令集的區彆 81
3.8 ARM微處理器的異常 82
3.8.1 ARM體係結構所支持的異常類型 83
3.8.2 異常嚮量錶 84
3.8.3 異常優先級 84
3.8.4 應用程序中的異常處理 85
3.8.5 各類異常的具體描述 86
3.9 本章小結 90
第4章 Linux基本操作 91
4.1 Linux係統的介紹 91
4.1.1 Linux的概況 91
4.1.2 Linux操作係統的構成 93
4.1.3 Linux常見的發行版本 94
4.1.4 Linux內核的特點 95
4.2 Linux命令的使用 96
4.3 vi編輯器的使用 106
4.3.1 vi編輯器的進入 107
4.3.2 命令模式的命令 107
4.3.3 末行模式的命令 108
實例4-1:vi編輯器使用實例 109
4.4 Shell編程 110
4.4.1 Shell基礎介紹 110
4.4.2 Shell程序的變量和參數 113
4.4.3 運行Shell程序 114
4.4.4 Shell程序設計的流程控製 115
4.4.5 Shell輸入與輸齣 120
4.4.6 bash介紹 121
4.5 綜閤實例 123
實例4-2:編寫清除/var/log下的log文件綜閤實例 123
實例4-3:編寫尋找死鏈接文件綜閤實例 126
4.6 本章小結 129
第5章 Linux進程 130
5.1 進程概述 130
5.1.1 進程結構 131
5.1.2 進程的控製操作 132
5.1.3 進程的屬性 134
5.1.4 進程的創建和調度 135
5.1.5 Linux進程命令 137
5.2 係統調用 141
5.2.1 係統調用簡述 141
5.2.2 係統調用的進入 142
5.2.3 與進程管理相關的係統調用 142
5.3 管道 143
5.3.1 管道係統調用 143
5.3.2 管道的分類 144
實例5-1:管道通信實例 145
5.4 信號 147
5.4.1 常見的信號種類 147
5.4.2 係統調用函數 148
5.4.3 信號的處理 149
5.4.4 信號與係統調用的關係 150
實例5-2:信號實例 151
5.5 信號量 152
5.5.1 信號量概述 152
5.5.2 相關的數據結構 153
5.5.3 相關的函數 155
實例5-3:信號量實例 156
5.6 共享內存 161
5.6.1 共享內存原理 161
5.6.2 共享內存對象的結構 162
5.6.3 相關的函數 162
實例5-4:共享內存實例 163
5.7 消息隊列 169
5.7.1 有關的數據結構 169
5.7.2 相關的函數 171
實例5-5:消息隊列實例 173
5.8 綜閤實例 177
實例5-6:多綫程編程實例 177
5.9 本章小結 178
第6章 建立Linux開發環境 179
6.1 建立Linux開發環境 179
6.1.1 Cygwin開發環境 179
6.1.2 VMware Workstation開發環境 181
6.2 交叉編譯的使用 183
6.2.1 GNU交叉工具鏈的設置 183
6.2.2 ARM GNU常用匯編語言 186
6.2.3 GNU交叉工具鏈的常用工具 188
6.2.4 交叉編譯環境 191
6.3 Linux下的C編程 194
6.3.1 Linux程序設計特點 194
6.3.2 Linux下C語言編碼的風格 195
6.3.3 Linux程序基礎 195
6.3.4 Linux下C編程的庫依賴 197
6.4 gcc的使用與開發 197
6.4.1 gcc簡介和使用 197
6.4.2 gcc選項 198
6.4.3 gcc的錯誤類型 201
實例6-1:gcc編譯器環境的應用實例 202
6.5 gdb調試器的介紹和使用 203
6.5.1 gdb調試器的使用 203
6.5.2 在gdb中運行程序 204
6.5.3 暫停和恢復程序運行 206
6.5.4 遠程調試 209
實例6-2:gdb調試器環境的應用實例 209
6.6 GNU make和Makefile的使用 211
6.6.1 Makefile的基本結構 212
6.6.2 Makefile的變量 213
6.6.3 Makefile的隱含規則 215
6.6.4 Makefile的命令使用 218
6.6.5 Makefile的函數使用 219
6.6.6 Makefile文件的運行 221
6.6.7 Makefile規則書寫命令 223
實例6-3:Makefile的命令使用實例 229
6.7 autoconf和automake的使用 231
6.7.1 autoconf的使用 231
6.7.2 Makefile.am的編寫 234
6.7.3 automake的使用 234
6.7.4 使用automake和autoconf産生Makefile 235
6.7.5 自動生成Makefile的方法 235
6.8 綜閤實例 236
實例6-4:gcc編譯器的綜閤實例 236
實例6-5:gdb調試器的綜閤實例 239
實例6-6:Makefile的綜閤實例 242
6.9 本章小結 244
第7章 Linux操作係統移植 245
7.1 移植的概念 245
7.1.1 Linux可移植性發展 246
7.1.2 Linux的移植性 246
7.2 Linux內核結構 247
7.2.1 Linux內核組成 247
7.2.2 子係統相互間的關係 251
7.2.3 係統數據結構 252
7.2.4 Linux內核源代碼 252
7.3 Linux內核配置 256
實例7-1:Linux內核配置實例 256
7.4 Linux操作係統移植介紹 259
7.4.1 Linux係統移植的兩大部分 259
7.4.2 內核文件的修改 261
7.4.3 係統移植所必需的環境 265
7.5 綜閤實例 268
實例7-2:編譯Linux內核應用實例 268
實例7-3:Linux內核的燒寫實例 270
實例7-4:使用Kgdb構建Linux內核調試環境 271
7.6 本章小結 280
第8章 Bootloader的使用 281
8.1 Bootloader 概述 281
8.1.1 Bootloader的作用 282
8.1.2 Bootloader的功能 283
8.1.3 Bootloader的種類 283
8.1.4 Bootloader的工作模式 285
8.1.5 Bootloader的啓動方式 285
8.1.6 Bootloader的啓動流程 287
8.1.7 Bootloader與主機的通信 287
8.2 vivi 287
8.2.1 vivi的常用命令和文件結構 288
8.2.2 vivi第一階段的分析 288
8.2.3 vivi第二階段的分析 295
8.2.4 vivi的配置與編譯 297
8.3 U-boot 298
8.3.1 U-boot常用命令和源代碼目錄結構 298
8.3.2 U-boot支持的主要功能 301
8.3.3 U-boot的編譯和添加命令 302
8.3.4 U-boot的啓動介紹 305
8.3.5 U-boot的移植和使用 307
8.3.6 U-boot的啓動過程 308
8.3.7 U-boot的調試 310
8.4 其他常見的Bootloader 312
8.5 綜閤實例 313
實例8-1:vivi編譯實例 314
實例8-2:U-boot在S3C2410上的移植實例 315
實例8-3:Bootloader設計實例 317
8.6 本章小結 319
第9章 構建Linux根文件係統 320
9.1 Linux文件係統概述 320
9.1.1 Linux文件係統的特點 320
9.1.2 其他常見的嵌入式文件係統 322
9.1.3 Linux根文件目錄結構 324
9.1.4 Linux文件屬性介紹 324
9.2 使用BusyBox生成工具集 325
9.2.1 BusyBox概述 325
9.2.2 BusyBox進程和用戶程序啓動過程 326
9.2.3 編譯/安裝BusyBox 327
實例9-1:用BusyBox建立簡單的根文件係統 331
9.3 構建根文件係統 333
實例9-2:構建根文件係統 337
9.4 配置yaffs文件 339
9.4.1 yaffs文件係統設置 340
9.4.2 yaffs文件係統測試 341
9.5 綜閤實例 343
實例9-3:製作/使用yaffs文件係統映像文件 343
實例9-4:製作/使用jffs2文件係統映像文件 345
9.6 本章小結 347
第10章 設備驅動程序開發 348
10.1 設備驅動程序概述 348
10.1.1 驅動程序的簡介 349
10.1.2 設備分類 349
10.1.3 設備號 350
10.1.4 設備節點 350
10.1.5 驅動層次結構 351
10.1.6 設備驅動程序的特點 352
10.2 設備驅動程序與文件係統 353
10.2.1 設備驅動程序與文件係統的關係 353
10.2.2 設備驅動程序與操作係統的關係 353
10.2.3 Linux設備驅動程序的接口 353
10.2.4 設備驅動程序開發的基本函數 359
10.2.5 Linux驅動程序的加載 359
10.3 設備驅動程序的使用 364
10.3.1 驅動程序模塊的加載 364
10.3.2 創建設備文件 364
10.3.3 使用設備 364
10.4 網絡設備基礎知識 365
10.4.1 網絡協議 365
10.4.2 網絡設備接口基礎 366
10.5 網絡設備驅動程序的架構 369
10.5.1 網絡設備驅動程序體係結構 369
10.5.2 網絡設備驅動程序模塊分析 369
10.5.3 網絡設備驅動程序的實現模式 376
10.5.4 網絡設備驅動程序的數據結構 376
10.6 綜閤實例 381
實例10-1:鍵盤驅動開發實例 381
實例10-2:I2C總綫驅動的編寫實例 384
實例10-3:TFT-LCD顯示驅動實例 388
10.7 本章小結 393
第11章 嵌入式GUI開發 394
11.1 嵌入式係統中的GUI簡介 395
11.1.1 嵌入式GUI係統的介紹 395
11.1.2 基於嵌入式Linux的GUI係統底層實現基礎 397
11.1.3 嵌入式GUI係統的分析與比較 397
11.2 嵌入式係統下MiniGUI的實現 399
11.2.1 圖形用戶界麵MiniGUI簡介 399
11.2.2 MiniGUI的發布版本 401
11.2.3 MiniGUI在S3C2410處理器上的移植過程 404
11.3 Qt/Embedded嵌入式圖形開發基礎 407
11.3.1 Qt/Embedded開發環境的安裝 407
11.3.2 Qt/Embedded底層支持及實現代碼分析 411
11.3.3 Qt/Embedded信號和插槽機製 412
11.3.4 Qt/Embedded窗口部件 415
11.3.5 Qt/Embedded圖形界麵編程 418
11.3.6 Qt/Embedded對話框設計 419
11.3.7 數據庫 420
實例11-1:Qt/Embedded圖形開發應用實例 423
11.4 Qtopia移植 424
11.4.1 Qtopia簡介 424
11.4.2 交叉編譯、安裝Qtopia 424
實例11-2:Qtopia移植應用實例 426
11.5 Qt/Embedded應用開發 427
11.5.1 嵌入式硬件開發平颱的選擇 427
11.5.2 Qt/Embedded常用工具的介紹 429
11.5.3 交叉編譯Qt/Embedded的庫 430
11.5.4 Qt/E程序的編譯與執行 431
實例11-3:Qt/Embedded實戰演練 432
11.6 綜閤實例 436
實例11-4:Hello,Qt/Embedded應用程序 436
實例11-5:基本繪圖應用程序的編寫 439
11.7 本章小結 443
第12章 綜閤工程實例 444
12.1 文件係統的生成與燒寫 444
12.1.1 yaffs文件係統的製作與生成 445
12.1.2 jffs2文件係統的製作與生成 449
12.2 基於Linux的數碼相框 452
12.2.1 係統需求分析 452
12.2.2 係統總體設計 453
12.2.3 軟件設計實現 454
12.2.4 軟硬件集成 460
12.3 基於Linux的MPlayer解碼播放器 461
12.3.1 可行性分析報告 461
12.3.2 係統總體設計 462
12.3.3 軟件總體設計 463
12.3.4 軟件詳細設計 467
12.3.5 軟硬件集成 477
12.4 基於Linux的GPS導航係統的開發 478
12.4.1 嵌入式開發流程圖 479
12.4.2 GPS導航定位係統的係統定義 481
12.4.3 GPS導航係統的可行性分析報告 486
12.4.4 GPS導航係統需求分析 487
12.4.5 GPS導航係統總體設計實現 489
12.4.6 GPS導航係統硬件設計實現 491
12.4.7 GPS導航係統軟件概括設計 495
12.4.8 GPS導航係統軟件詳細設計 495
12.4.9 GPS導航係統數據庫的配置設計 522
12.4.10 GPS導航係統軟件實現 534
12.5 本章小結 538
· · · · · · (
收起)