基本信息
作 者: 朱小遠,謝龍漢
出版社: 電子工業出版社
出版時間: 2012-01
I S B N : 9787121152177
頁 數:548
圖書特色
(1)本書從高校教學與工程實例相結合的角度編寫,內容系統性、實用性強。
(2)本書全部實例配有教學視頻,方便讀者學習。
(3)GPS導航系統設計套用案例。
內容簡介
本書以Linux嵌入式系統的基本開發技術為主線,以基於ARM架構的嵌入式處理器為嵌入式硬體平台,全面介紹嵌入式系統開發過程、ARM體系結構、Linux基礎、Linux進程、Linux開發環境的建立、Linux作業系統移植、Bootloader的使用、Linux根檔案系統的構建、設備驅動程式的開發、嵌入式GUI開發等嵌入式知識,最後介紹近年來較為熱門的GPS導航系統的設計。
目錄
第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的編寫 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