本書以案例的形式,詳細介紹嵌入式Linux開發(fā)技術,由淺入深地分析嵌入式系統(tǒng)、嵌入式Linux開發(fā)環(huán)境、嵌入式Linux應用開發(fā)技術和嵌入式Linux驅(qū)動開發(fā)技術,邊學習理論知識邊開發(fā),將理論學習和工程實踐結(jié)合起來,每個案例均附上完整的開發(fā)代碼和配套PPT,可以在源代碼的基礎可以進行快速二次開發(fā)。
廖建尚,教授,博士。長期從事模式識別、物聯(lián)網(wǎng)系統(tǒng)研究。主持廣東省自然基金等省級以上項目8項;發(fā)表論文20多篇,其中SCI和EI收錄10多篇,出版教材著作10多部,授權(quán)專利10多項,授權(quán)軟件著作10多項。
目 錄
第1章 嵌入式系統(tǒng)概述 (1)
1.1 嵌入式系統(tǒng)的定義、特點與組成 (1)
1.1.1 嵌入式系統(tǒng)的定義 (1)
1.1.2 嵌入式系統(tǒng)的特點 (1)
1.1.3 嵌入式系統(tǒng)的組成 (2)
1.2 嵌入式操作系統(tǒng) (3)
1.3 Linux操作系統(tǒng) (3)
1.3.1 Linux簡介 (3)
1.3.2 Linux的發(fā)行版本 (4)
1.4 嵌入式技術的應用 (4)
1.5 開發(fā)實踐:認知嵌入式系統(tǒng) (5)
1.5.1 嵌入式系統(tǒng)硬件認知 (5)
1.5.2 嵌入式系統(tǒng)運行測試 (8)
1.6 小結(jié) (9)
1.7 思考與拓展 (9)
第2章 嵌入式Linux開發(fā)環(huán)境 (11)
2.1 Linux的安裝與基本命令 (11)
2.1.1 Linux的安裝與配置 (11)
2.1.2 Linux的軟件包管理機制 (15)
2.1.3 Linux的Shell與基本命令 (17)
2.1.4 Linux的編輯器 (20)
2.1.5 Shell腳本 (22)
2.1.6 開發(fā)實踐:Linux的安裝與vim編輯器的使用 (28)
2.1.7 小結(jié) (30)
2.1.8 思考與拓展 (30)
2.2 常用的嵌入式開發(fā)工具 (30)
2.2.1 嵌入式Linux的開發(fā)模式 (30)
2.2.2 遠程控制工具 (31)
2.2.3 串口通信工具 (32)
2.2.4 文件傳輸工具 (33)
2.2.5 源代碼管理工具 (34)
2.2.6 開發(fā)實踐:嵌入式開發(fā)工具的使用 (36)
2.2.7 小結(jié) (38)
2.2.8 思考與拓展 (38)
2.3 Linux的編譯環(huán)境 (38)
2.3.1 Linux程序的開發(fā)環(huán)境 (38)
2.3.2 Linux編譯器的安裝與使用 (39)
2.3.3 Linux的動態(tài)庫與靜態(tài)庫 (41)
2.3.4 Linux調(diào)試器的安裝與使用 (42)
2.3.5 Makefile文件的編寫 (44)
2.3.6 開發(fā)實踐:Linux的編譯環(huán)境 (46)
2.3.7 小結(jié) (49)
2.3.8 思考與拓展 (49)
第3章 嵌入式Linux系統(tǒng)的移植 (51)
3.1 BootLoader的移植與應用 (51)
3.1.1 BootLoader簡介 (51)
3.1.2 U-Boot的移植 (53)
3.1.3 U-Boot的使用 (55)
3.1.4 開發(fā)實踐:U-Boot的編譯 (58)
3.1.5 小結(jié) (60)
3.1.6 思考與拓展 (60)
3.2 Linux的內(nèi)核與配置 (60)
3.2.1 Linux的體系結(jié)構(gòu)與內(nèi)核 (60)
3.2.2 Linux內(nèi)核分析 (62)
3.2.3 Linux內(nèi)核的配置 (71)
3.2.4 Linux內(nèi)核調(diào)試技術 (76)
3.2.5 開發(fā)實踐:編譯與測試 (78)
3.2.6 小結(jié) (83)
3.2.7 思考與拓展 (84)
3.3 Linux的文件系統(tǒng)與移植 (84)
3.3.1 Linux文件系統(tǒng) (84)
3.3.2 Linux的根文件系統(tǒng) (86)
3.3.3 使用BusyBox制作根文件系統(tǒng) (88)
3.3.4 Ubuntu嵌入式系統(tǒng)移植 (89)
3.3.5 開發(fā)實踐:Ubuntu根文件系統(tǒng)的制作 (92)
3.3.6 小結(jié) (93)
3.3.7 思考與拓展 (94)
第4章 Linux應用開發(fā)技術 (95)
4.1 Linux文件與多任務編程 (95)
4.1.1 Linux文件編程 (95)
4.1.2 Linux進程編程 (105)
4.1.3 進程間通信技術 (107)
4.1.4 Linux線程編程 (120)
4.1.5 開發(fā)實踐:Linux系統(tǒng)應用編程 (127)
4.1.6 小結(jié) (134)
4.1.7 思考與拓展 (135)
4.2 Linux網(wǎng)絡編程 (135)
4.2.1 網(wǎng)絡編程基礎 (135)
4.2.2 UDP網(wǎng)絡編程 (139)
4.2.3 TCP網(wǎng)絡編程 (143)
4.2.4 開發(fā)實踐:Linux網(wǎng)絡編程 (149)
4.2.5 小結(jié) (159)
4.2.6 思考與拓展 (159)
4.3 Linux數(shù)據(jù)庫開發(fā) (159)
4.3.1 嵌入式數(shù)據(jù)庫 (159)
4.3.2 SQLite3數(shù)據(jù)庫的操作 (160)
4.3.3 SQLite3數(shù)據(jù)庫的編程 (163)
4.3.4 開發(fā)實踐:Linux數(shù)據(jù)庫編程 (168)
4.3.5 小結(jié) (170)
4.3.6 思考與拓展 (170)
4.4 嵌入式Web服務器應用 (170)
4.4.1 嵌入式Web服務器 (170)
4.4.2 Boa服務器的移植與測試 (171)
4.4.3 CGI開發(fā)技術 (172)
4.4.4 開發(fā)實踐:嵌入式Web服務器應用 (174)
4.4.5 小結(jié) (178)
4.4.6 思考與拓展 (178)
第5章 Linux驅(qū)動程序開發(fā)技術 (179)
5.1 Linux驅(qū)動程序開發(fā)基礎 (179)
5.1.1 Linux驅(qū)動程序的概念 (179)
5.1.2 Linux驅(qū)動程序的開發(fā) (184)
5.1.3 GPIO驅(qū)動程序的開發(fā) (192)
5.1.4 總線設備驅(qū)動程序 (196)
5.1.5 基于設備樹的驅(qū)動程序設計 (199)
5.1.6 開發(fā)實踐:LED驅(qū)動程序的開發(fā) (203)
5.1.7 小結(jié) (209)
5.1.8 思考與拓展 (209)
5.2 字符設備驅(qū)動程序的開發(fā) (209)
5.2.1 按鍵驅(qū)動程序的開發(fā) (209)
5.2.2 ADC驅(qū)動程序的開發(fā) (217)
5.2.3 PWM驅(qū)動程序的開發(fā) (220)
5.2.4 開發(fā)實踐:按鍵、ADC、PWM驅(qū)動程序的開發(fā)與測試 (225)
5.2.5 小結(jié) (242)
5.2.6 思考與拓展 (242)
5.3 總線設備驅(qū)動程序的開發(fā) (242)
5.3.1 I2C總線概述 (242)
5.3.2 I2C總線驅(qū)動程序的開發(fā) (244)
5.3.3 I2C總線驅(qū)動程序接口函數(shù) (247)
5.3.4 開發(fā)實踐:I2C總線驅(qū)動程序的開發(fā) (250)
5.3.5 小結(jié) (259)
5.3.6 思考與拓展 (259)
5.4 塊設備驅(qū)動程序的開發(fā) (259)
5.4.1 Linux塊設備 (260)
5.4.2 Linux塊設備驅(qū)動程序的開發(fā) (261)
5.4.3 RamDisk塊設備驅(qū)動程序的分析 (275)
5.4.4 開發(fā)實踐:RamDisk塊設備驅(qū)動程序 (276)
5.4.5 小結(jié) (281)
5.4.6 思考與拓展 (281)
5.5 網(wǎng)絡設備驅(qū)動程序的開發(fā) (281)
5.5.1 Linux網(wǎng)絡設備概述 (281)
5.5.2 網(wǎng)絡設備驅(qū)動程序的開發(fā) (282)
5.5.3 虛擬網(wǎng)絡設備驅(qū)動程序的開發(fā) (292)
5.5.4 開發(fā)實踐:虛擬網(wǎng)絡設備驅(qū)動程序的開發(fā)與測試 (292)
5.5.5 小結(jié) (296)
5.5.6 思考與拓展 (296)
參考文獻 (297)