第1章 嵌入式系統(tǒng)基礎(chǔ) 1
1.1 嵌入式系統(tǒng)概述 1
1.1.1 嵌入式系統(tǒng)的基本概念 1
1.1.2 嵌入式系統(tǒng)的應(yīng)用領(lǐng)域 2
1.1.3 嵌入式系統(tǒng)的組成 4
1.1.4 嵌入式系統(tǒng)的特點(diǎn) 5
1.1.5 嵌入式系統(tǒng)的發(fā)展趨勢(shì) 6
1.2 嵌入式操作系統(tǒng) 10
1.2.1 操作系統(tǒng)的基本功能 10
1.2.2 嵌入式操作系統(tǒng) 11
1.2.3 嵌入式操作系統(tǒng)體系結(jié)構(gòu) 12
1.2.4 嵌入式操作系統(tǒng)的選擇 16
1.2.5 幾種代表性嵌入式操作系統(tǒng)比較 17
1.3 嵌入式Linux基礎(chǔ) 19
1.3.1 Linux簡(jiǎn)介 19
1.3.2 嵌入式Linux 23
1.3.3 Linux的安裝基礎(chǔ) 25
1.3.4 基于虛擬機(jī)的Linux的安裝 27
1.3.5 Linux虛擬機(jī)的設(shè)置 32
1.4 Linux目錄結(jié)構(gòu)及文件 35
1.4.1 Linux文件系統(tǒng) 35
1.4.2 Linux目錄結(jié)構(gòu) 38
1.4.3 文件類型及文件屬性 40
1.5 Linux常用操作命令 43
1.5.1 Shell命令基礎(chǔ) 43
1.5.2 文件與目錄相關(guān)命令 45
1.5.3 磁盤管理與維護(hù)命令 53
1.5.4 系統(tǒng)管理與設(shè)置命令 55
1.5.5 網(wǎng)絡(luò)相關(guān)命令 57
1.5.6 壓縮備份命令 60
1.6 Linux下Shell編程 62
1.6.1 Shell程序概述 62
1.6.2 Shell變量 63
1.6.3 Shell特殊字符 65
1.6.4 Shell流程控制 67
1.6.5 Shell函數(shù)定義 72
1.6.6 Shell程序示例 72
1.7 Linux啟動(dòng)過(guò)程分析 74
習(xí) 題 一 79
第2章 Linux編程基礎(chǔ) 80
2.1 Linux下的C語(yǔ)言編程 80
2.1.1 Linux下的C語(yǔ)言編程概述 80
2.1.2 Linux下的C語(yǔ)言開發(fā)流程 82
2.2 Vim編輯器 85
2.2.1 Vim的模式 85
2.2.2 Vim常用操作 87
2.3 GCC編譯器 91
2.3.1 GCC編譯器簡(jiǎn)介 91
2.3.2 GCC編譯流程 92
2.3.3 GCC常用編譯選項(xiàng) 95
2.3.4 庫(kù)依賴 98
2.4 GDB調(diào)試器 99
2.4.1 GDB概述 99
2.4.2 GDB使用流程 99
2.4.3 GDB基本命令 104
2.4.4 gdbServer遠(yuǎn)程調(diào)試 108
2.5 Make工程管理器 109
2.5.1 Make工程管理器概述 109
2.5.2 Makefile基本結(jié)構(gòu) 110
2.5.3 Makefile變量 115
2.5.4 Makefile規(guī)則 118
2.5.5 Makefile常用函數(shù) 119
2.5.6 使用自動(dòng)生成工具生成 Makefile 125
2.6 Linux集成開發(fā)環(huán)境 128
2.6.1 CodeBlocks集成開發(fā)環(huán)境簡(jiǎn)介 128
2.6.2 CodeBlocks開發(fā)流程 130
2.7 文件I/O編程 136
2.7.1 文件I/O編程基礎(chǔ) 136
2.7.2 基本I/O操作 137
2.7.3 標(biāo)準(zhǔn)I/O操作 141
2.7.4 嵌入式Linux串口通信編程 144
2.8 進(jìn)程控制編程 152
2.8.1 Linux下的進(jìn)程概述 152
2.8.2 Linux進(jìn)程編程 155
2.8.3 Zombie進(jìn)程 164
2.8.4 Linux守護(hù)進(jìn)程 165
2.9 進(jìn)程間的通信和同步 170
2.9.1 Linux下進(jìn)程間通信概述 170
2.9.2 管道通信 171
2.9.3 共享內(nèi)存通信 179
2.9.4 其他方式通信 182
2.10 多線程編程 182
2.10.1 線程的基本概念 182
2.10.2 線程的實(shí)現(xiàn) __________184
2.10.3 修改線程屬性 186
2.10.4 多線程訪問(wèn)控制 188
習(xí) 題 二 190
第3章 基于Linux的嵌入式軟件開發(fā) 191
3.1 嵌入式軟件結(jié)構(gòu) 191
3.1.1 嵌入式軟件體系結(jié)構(gòu) 191
3.1.2 基于Linux的嵌入式軟件 194
3.2 嵌入式軟件開發(fā)流程 195
3.2.1 嵌入式Linux設(shè)計(jì)概述 195
3.2.2 基于開發(fā)板的二次開發(fā) 196
3.2.3 基于Linux的嵌入式軟件開發(fā)流程 198
3.3 嵌入式Linux開發(fā)環(huán)境 199
3.3.1 ARM 處理器硬件開發(fā)平臺(tái) 199
3.3.2 建立嵌入式交叉編譯環(huán)境 200
3.3.3 配置開發(fā)環(huán)境 200
3.4 嵌入式系統(tǒng)引導(dǎo)代碼 211
3.4.1 BootLoader簡(jiǎn)介 211
3.4.2 常用的BootLoader 212
3.4.3 BootLoader基本原理 214
3.4.4 BootLoader移植實(shí)例一:U Boot 218
3.4.5 BootLoader移植實(shí)例二:Vivi 227
3.5 Linux內(nèi)核結(jié)構(gòu)及移植 229
3.5.1 Linux內(nèi)核結(jié)構(gòu) 229
3.5.2 Linux的移植 233
3.5.3 修改Linux內(nèi)核源碼 237
3.5.4 內(nèi)核的裁減 239
3.5.5 內(nèi)核的編譯和下載 241
3.6 嵌入式文件系統(tǒng)及移植 242
3.6.1 嵌入式文件系統(tǒng)的基礎(chǔ) 242
3.6.2 嵌入式文件系統(tǒng)的設(shè)計(jì) 246
3.6.3 嵌入式根文件系統(tǒng)的制作 247
3.7 Linux設(shè)備驅(qū)動(dòng)概述 249
3.7.1 Linux設(shè)備驅(qū)動(dòng)的作用 249
3.7.2 Linux設(shè)備驅(qū)動(dòng)程序的基本結(jié)構(gòu) 250
3.7.3 Linux設(shè)備驅(qū)動(dòng)的分類 251
3.7.4 Linux設(shè)備文件和設(shè)備文件系統(tǒng) 252
3.8 設(shè)備驅(qū)動(dòng)程序接口 253
3.8.1 Linux設(shè)備驅(qū)動(dòng)的加載方式 253
3.8.2 設(shè)備驅(qū)動(dòng)程序接口 255
3.8.3 Linux設(shè)備的控制方式 257
3.9 Linux設(shè)備驅(qū)動(dòng)開發(fā)流程 259
3.9.1 設(shè)備驅(qū)動(dòng)開發(fā)流程 259
3.9.2 字符設(shè)備驅(qū)動(dòng)框架 262
習(xí) 題 三 269
第4章 嵌入式應(yīng)用程序設(shè)計(jì) 270
4.1 嵌入式應(yīng)用程序設(shè)計(jì)概述 270
4.1.1 嵌入式軟件的分類 270
4.1.2 嵌入式GUI 271
4.1.3 常用嵌入式GUI 272
4.2 Qt編程基礎(chǔ) 274
4.2.1 Qt簡(jiǎn)介 274
4.2.2 Qt/Embedded 276
4.2.3 Qt開發(fā)環(huán)境的搭建 277
4.2.4 Qt程序設(shè)計(jì)基本流程 280
4.3 信號(hào)和槽機(jī)制 282
4.3.1 基本概念 282
4.3.2 信號(hào)和槽機(jī)制的原理 283
4.3.3 信號(hào)和槽實(shí)例 286
4.4 圖形界面設(shè)計(jì) 288
4.4.1 Qt的窗口類 Widget 288
4.4.2 使用Qt Creator編寫 Qt程序 289
4.4.3 Qt中常用的控件 293
4.5 使用CodeBlocks開發(fā) Qt程序 296
習(xí) 題 四 301
第5章 嵌入式數(shù)據(jù)庫(kù) 302
5.1 嵌入式數(shù)據(jù)庫(kù)概述 302
5.1.1 嵌入式數(shù)據(jù)庫(kù)簡(jiǎn)介 302
5.1.2 嵌入式數(shù)據(jù)庫(kù)的特點(diǎn)及分類 304
5.1.3 嵌入式數(shù)據(jù)庫(kù)的應(yīng)用 306
5.2 SQLite數(shù)據(jù)庫(kù) 307
5.2.1 SQLite數(shù)據(jù)庫(kù)概述 307
5.2.2 SQLite數(shù)據(jù)庫(kù)的安裝 309
5.2.3 SQLite數(shù)據(jù)庫(kù)的基本命令 310
5.2.4 SQLite數(shù)據(jù)庫(kù)的管理命令 311
5.2.5 SQLite數(shù)據(jù)庫(kù)的 API函數(shù) 314
5.2.6 SQLite數(shù)據(jù)庫(kù)的實(shí)例分析 315
習(xí) 題 五 317
第6章 嵌入式Linux網(wǎng)絡(luò)編程 318
6.1 網(wǎng)絡(luò)協(xié)議概述 318
6.1.1 網(wǎng)絡(luò)協(xié)議參考模型 318
6.1.2 TCP/IP協(xié)議族 319
6.1.3 TCP和 UDP 320
6.2 網(wǎng)絡(luò)編程基礎(chǔ) 324
6.2.1 Socket概述 324
6.2.2 基本數(shù)據(jù)結(jié)構(gòu)和函數(shù) 324
6.2.3 Socket基礎(chǔ)編程 326
6.3 TCP通信編程 328
6.3.1 TCP通信過(guò)程 328
6.3.2 TCP Server程序設(shè)計(jì) 334
6.3.3 TCP Client程序設(shè)計(jì) 336
6.3.4 TCP程序測(cè)試過(guò)程 337
6.4 UDP通信編程 338
6.4.1 UDP通信過(guò)程 338
6.4.2 UDP 服務(wù)器端程序設(shè)計(jì) 338