圖書簡介
本書系統論述了在Linux環境下開發嵌入式系統的設計思想、設計方法及開發流程,通過實例與設計項目,幫助讀者儘快掌握嵌入式系統的基本概念,提高嵌入式設計技能。本書共12章,內容包括嵌入式基礎知識、Linux概述、ARM體系架構、嵌入式編程、交叉工具鏈、Bootloader、定製核心、檔案系統、驅動程式開發基礎、嵌入式圖形設計等。本書的最後給出了一個綜合實例,幫助讀者理解嵌入式Linux的開發方法和技巧。
本書可作為高校計算機、通信、電子專業相關課程的教材,也可供廣大嵌入式開發人員參考。
圖書目錄
第1章嵌入式系統基礎 1
1.1嵌入式系統 1
1.1.1嵌入式系統的概念 1
1.1.2嵌入式系統的組成 3
1.1.3嵌入式系統的發展 5
1.1.4嵌入式系統的套用前景 8
1.2嵌入式處理器 11
1.2.1嵌入式微控制器(EMCU) 11
1.2.2嵌入式微處理器(EMPU) 12
1.2.3嵌入式數位訊號處理器(EDSP) 13
1.2.4嵌入式片上系統(ESOC) 13
1.3嵌入式作業系統 13
1.3.1Linux 15
1.3.2VxWorks 15
1.3.3WinCE 16
1.3.4μC/OS-II 16
1.3.5eCOS 17
1.3.6Android 17
1.3.7iOS 18
1.3.8WP和WindowsRT 18
1.4嵌入式系統設計 18
1.4.1嵌入式系統開發流程 18
1.4.2嵌入式系統開發方法 19
思考與練習 20
第2章Linux基礎 22
2.1Linux簡介 22
2.1.1Linux的歷史 23
2.1.2Linux特點 23
2.1.3Linux與Windows 25
2.1.4Linux的主要組成部分 27
2.1.5Linux的種類和特性 30
2.2圖形操作界面 33
2.2.1Linux與圖形界面 34
2.2.2KDE 35
2.2.3GNOME 37
2.2.4GNOME與KDE發展趨勢 38
2.3Linux的基本命令行操作 39
2.3.1目錄操作 40
2.3.2檔案操作 46
2.3.3壓縮、解壓與打包 50
2.3.4磁碟管理 51
2.3.5用戶系統 53
2.3.6網路管理 55
2.4Linux核心 58
思考與練習 59
第3章ARM體系架構 60
3.1ARM微處理器簡介 60
3.1.1ARM微處理器的發展 60
3.1.2ARM微處理器的特點和套用 61
3.2ARM微處理器系列 62
3.2.1Classic(傳統)系列 62
3.2.2Cortex-M系列 63
3.2.3Cortex-R系列 63
3.2.4Cortex-A系列 64
3.2.5Cortex-A50系列 65
3.3ARM編程模型 65
3.3.1ARM硬體架構 65
3.3.2ARM微處理器模式 66
3.3.3ARM暫存器 67
3.3.4異常處理 68
3.3.5ARM的存儲器組織 72
3.4ARM指令系統 74
3.4.1ARM指令格式 74
3.4.2ARM指令的定址方式 75
3.4.3ARM最常用指令和條件後綴 77
3.5ARM微處理器的套用選型 79
思考與練習 80
第4章嵌入式編程 82
4.1ARM彙編語言程式設計 82
4.1.1ARM彙編語言中的程式結構 82
4.1.2ARM彙編語言的語句格式 83
4.1.3基於Linux下GCC的彙編語言程式結構 84
4.1.4基於Windows下ADS的彙編語言程式結構 85
4.1.5ARM彙編器所支持的偽指令 86
4.2ARM彙編與C語言編程 90
4.2.1基本的ATPCS規則 91
4.2.2C語言中內嵌彙編代碼 93
4.2.3從彙編程式中訪問C程式變數 94
4.2.4在彙編代碼中調用C函式 95
4.2.5在C語言代碼中調用彙編函式 98
4.3基於Linux的C語言編程 99
4.3.1C語言編程概述 99
4.3.2Linux下的C開發工具 99
4.3.3vim編輯器 100
4.3.4gedit編輯器 106
4.3.5編譯器gcc 107
4.3.6調試器gdb 111
4.3.7項目管理器make 114
思考與練習 117
第5章軟硬體開發環境 119
5.1硬體環境 119
5.1.1主機硬體環境 119
5.1.2目標板硬體環境 120
5.2Windows軟體環境 122
5.2.1超級終端的設定 122
5.2.2DNW的設定 123
5.2.3設定GIVEIO驅動 126
5.3Linux軟體環境 128
5.3.1Linux系統的VMware安裝 129
5.3.2Windows與Ubuntu雙系統安裝 135
5.3.3Linux網路服務配置 137
5.3.4配置NFS服務 138
5.3.5配置FTP服務 140
5.4刻錄鏡像檔案 141
5.4.1刻錄工具 142
5.4.2使用方法 142
思考與練習 143
第6章交叉編譯工具 145
6.1工具鏈軟體 145
6.1.1工具鏈組成 145
6.1.2構建工具鏈 146
6.2分步構建交叉編譯鏈 147
6.2.1準備工具 147
6.2.2基本過程 147
6.2.3詳細步驟 148
6.3用Crosstool工具構建交叉工具鏈 155
6.3.1準備工具 155
6.3.2基本過程 155
6.3.3詳細步驟 156
6.4使用現成的交叉工具 159
思考與練習 160
第7章Bootloader詳解及移植 162
7.1嵌入式Bootloader簡介 162
7.1.1Bootloader功能 162
7.1.2基於Bootloader軟體架構 163
7.1.3Bootloader的操作模式 164
7.1.4Bootloader的依賴性 164
7.1.5Bootloader的啟動方式 164
7.1.6Bootloader啟動流程 167
7.1.7各種Bootloader 168
7.2Vivi 169
7.2.1Vivi簡介 169
7.2.2Vivi體系架構 169
7.2.3Vivi的運行過程分析 170
7.2.4Vivi的配置與編譯 183
7.2.5Vivi命令 185
7.3Bootloader程式的調試和刻錄 187
思考與練習 188
第8章定製核心移植 189
8.1Linux核心源碼組織 189
8.2核心基本配置 191
8.2.1核心配置系統 191
8.2.2Makefile 192
8.2.3具體的配置操作 197
8.2.4添加自己的代碼 201
8.3核心定製 204
8.3.1獲取源碼 204
8.3.2移植過程 205
8.4核心裁剪 212
8.4.1取消虛擬記憶體的支持 212
8.4.2取消多餘的調度器 212
8.4.3取消對舊版本二進制執行檔案的支持 213
8.4.4取消不必要的設備的支持 213
8.4.5取消不需要的檔案系統的支持 214
思考與練習 214
第9章嵌入式Linux檔案系統 216
9.1嵌入式Linux的檔案系統 216
9.1.1檔案系統結構 216
9.1.2檔案系統特性 217
9.1.3系統存儲設備及其管理機制 218
9.1.4基於Flash快閃記憶體的檔案系統 219
9.1.5基於RAM的檔案系統 221
9.1.6網路檔案系統 222
9.2根檔案系統及其定製 223
9.2.1根檔案系統架構 223
9.2.2定製工具Busybox 225
9.2.3庫檔案構建 233
9.2.4設備檔案的構建 235
9.2.5根檔案系統初始化 236
9.3檔案系統的製作 239
9.3.1根檔案系統的製作 239
9.3.2NFS檔案系統的製作 245
9.3.3Cramfs檔案系統的製作 247
9.3.4Yaffs檔案系統的製作 249
9.3.5Ramdisk檔案系統的製作 250
思考與練習 253
第10章嵌入式Linux驅動程式開發基礎 255
10.1嵌入式Linux驅動程式概述 255
10.1.1Linux驅動程式工作原理 255
10.1.2Linux驅動程式功能 257
10.2設備驅動程式的基礎知識 257
10.2.1Linux的設備管理機制 257
10.2.2驅動層次結構 261
10.2.3設備驅動程式與外界的接口 262
10.2.4設備驅動程式的特點 262
10.2.5驅動程式開發流程 263
10.3模組編程 263
10.3.1模組與核心 263
10.3.2建立模組檔案 264
10.3.3編寫makefile 265
10.3.4模組載入 266
10.3.5模組的其他信息 267
10.3.6模組參數 267
10.4字元設備驅動程式 268
10.4.1相關的數據結構 268
10.4.2字元設備驅動程式開發流程 274
10.4.3字元設備驅動程式擴展操作 283
10.5網路設備驅動程式 285
10.5.1基本概念 285
10.5.2網路數據包處理流程 290
思考與練習 292
第11章嵌入式Linux圖形設計 294
11.1嵌入式GUI 294
11.1.1嵌入式GUI簡介 294
11.1.2嵌入式GUI需求 295
11.1.3嵌入式GUI組成 296
11.1.4Qt/Embedded 297
11.1.5MiniGUI 298
11.1.6MicroWindows 300
11.1.7OpenGUI 302
11.1.8Tiny-X 302
11.1.9各種GUI比較 303
11.2Qt/Embedded開發入門 303
11.2.1Qt/Embedded簡介 303
11.2.2Qt/Embedded架構 304
11.2.3Qt的開發環境 306
11.2.4Qt的支撐工具及組件 307
11.2.5Qt/Embedded對象模型 307
11.2.6信號與插槽機制 309
11.2.7Qt/Embedded常用的類 312
11.3安裝Qt/Embedded 314
11.3.1配置 314
11.3.2編譯 315
11.3.3測試 315
11.4Qt設計實例——密碼驗證程式 315
11.4.1快速安裝QDevelop和QtDesigner 316
11.4.2界面設計 317
11.4.3信號與槽 319
11.4.4添加代碼 320
11.4.5編譯 323
11.4.6程式測試 324
11.4.7移植 324
思考與練習 325
第12章嵌入式視頻監視系統開發實例 327
12.1系統設計背景 327
12.2系統總體設計 328
12.2.1系統總體設計思路 328
12.2.2系統的設計要求及特點 328
12.2.3系統總體架構設計 328
12.3系統詳細設計 330
12.3.1系統的硬體設計與調試 330
12.3.2系統的軟體設計與調試 333
12.3.3USB數據輸入驅動程式移植 341
12.3.4USB攝像頭數據輸入驅動程式測試 342
12.3.5嵌入式網路視頻伺服器的設計 343
12.3.6Video4Linux程式設計 344
12.4系統測試 345
12.4.1準備工作 345
12.4.2測試方法 346
12.4.3測試結果 346