本書(shū)為提高綜合動(dòng)手能力和設(shè)計(jì)創(chuàng)新能力而編寫(xiě),共13章,每章介紹知識(shí)要點(diǎn)、設(shè)計(jì)目標(biāo)、實(shí)踐內(nèi)容、步驟和練習(xí)題等。主要內(nèi)容包括:嵌入式Linux環(huán)境搭建、Linux環(huán)境入門(mén)、嵌入式C程序設(shè)計(jì)基礎(chǔ)、Bootloader配置與修改、Linux文件系統(tǒng)及程序設(shè)計(jì)、驅(qū)動(dòng)設(shè)計(jì)及應(yīng)用、Linux串口通信及線程應(yīng)用、進(jìn)程管理及進(jìn)程間通信、Linux網(wǎng)絡(luò)通信、簡(jiǎn)單GUI應(yīng)用程序設(shè)計(jì)、QT圖形程序設(shè)計(jì)、嵌入式數(shù)據(jù)庫(kù)SQLite應(yīng)用、Web Server網(wǎng)頁(yè)服務(wù)器設(shè)計(jì)等。本書(shū)提供電子課件、習(xí)題參考答案、程序代碼、配套實(shí)驗(yàn)視頻(二維碼)等。
☆ 提供配套電子課件、程序代碼等。◎ 入門(mén)簡(jiǎn)單,內(nèi)容深淺適宜,實(shí)踐操作講解詳細(xì),具備基本程序設(shè)計(jì)基礎(chǔ)即可上手! 內(nèi)容圍繞嵌入式Linux開(kāi)發(fā)的應(yīng)用編程展開(kāi):Linux操作系統(tǒng)介紹、安裝和基本使用,嵌入式Linux開(kāi)發(fā)平臺(tái),Bootloader移植,驅(qū)動(dòng)應(yīng)用及嵌入式Linux的應(yīng)用開(kāi)發(fā)等! 通過(guò)簡(jiǎn)單經(jīng)典的實(shí)踐操作引導(dǎo)讀者走進(jìn)嵌入式的大門(mén)! 將*新發(fā)展適當(dāng)?shù)匾氲浇虒W(xué)中,保證教學(xué)內(nèi)容的先進(jìn)性! 源于高校嵌入式課程的實(shí)踐教學(xué),凝聚和體現(xiàn)一線的任課教師多年的教學(xué)經(jīng)驗(yàn)與教學(xué)成果。
前 言
嵌入式系統(tǒng)是為特定應(yīng)用而設(shè)計(jì)的專(zhuān)用計(jì)算機(jī)系統(tǒng),已經(jīng)廣泛應(yīng)用于智能手機(jī)、數(shù)碼產(chǎn)品、工業(yè)控制、通信和信息系統(tǒng)、軍事、航空航天、醫(yī)療電子等領(lǐng)域,整個(gè)社會(huì)對(duì)嵌入式系統(tǒng)的開(kāi)發(fā)和應(yīng)用人才的需求也不斷加大。嵌入式Linux是以Linux為基礎(chǔ)的嵌入式操作系統(tǒng),因?yàn)槠渚哂写a開(kāi)源、性能優(yōu)異、資源眾多等優(yōu)點(diǎn),在嵌入式領(lǐng)域廣為使用。
為了進(jìn)一步加強(qiáng)嵌入式Linux的實(shí)踐教學(xué)工作,適應(yīng)高等學(xué)校正在開(kāi)展的課程體系與教學(xué)內(nèi)容的改革,及時(shí)反映嵌入式系統(tǒng)教學(xué)的研究成果,積極探索適應(yīng)21世紀(jì)人才培養(yǎng)的教學(xué)模式,編者編寫(xiě)了本書(shū)。
本書(shū)具有如下特色。
(1)入門(mén)簡(jiǎn)單,本書(shū)內(nèi)容安排深淺適宜,實(shí)踐操作講解詳細(xì),大部分內(nèi)容只要求有基本的計(jì)算機(jī)基礎(chǔ)知識(shí)和程序設(shè)計(jì)基礎(chǔ)即可開(kāi)始上手。
(2)內(nèi)容涵蓋范圍廣,本書(shū)實(shí)踐內(nèi)容圍繞嵌入式Linux開(kāi)發(fā)的應(yīng)用編程展開(kāi),內(nèi)容涵蓋Linux操作系統(tǒng)介紹、安裝和基本使用,嵌入式Linux開(kāi)發(fā)平臺(tái),Bootloader移植,驅(qū)動(dòng)應(yīng)用以及嵌入式Linux的應(yīng)用開(kāi)發(fā),通過(guò)簡(jiǎn)單經(jīng)典的實(shí)踐操作引導(dǎo)讀者走進(jìn)嵌入式的大門(mén)。
(3)本書(shū)注重將嵌入式Linux技術(shù)的最新發(fā)展適當(dāng)?shù)匾氲浇虒W(xué)中來(lái),保證了教學(xué)內(nèi)容的先進(jìn)性。此外,本書(shū)源于高校嵌入式課程的實(shí)踐教學(xué),凝聚了工作在第一線的任課教師多年的教學(xué)經(jīng)驗(yàn)與教學(xué)成果。
全書(shū)共分13章。本書(shū)從先進(jìn)性和實(shí)用性出發(fā),較全面地介紹了嵌入式Linux技術(shù)相關(guān)的系統(tǒng)使用與環(huán)境搭建、Bootloader、驅(qū)動(dòng)和應(yīng)用開(kāi)發(fā)等實(shí)踐操作,主要內(nèi)容如下:第1章講述嵌入式Linux環(huán)境的搭建,通過(guò)虛擬機(jī)軟件的操作和交叉編譯環(huán)境的建立,使得學(xué)生加深對(duì)理論知識(shí)的理解并掌握基本應(yīng)用;第2章講述Linux環(huán)境入門(mén),通過(guò)Linux常用命令及編輯器、編譯器和調(diào)試器的練習(xí)使用,增加學(xué)生對(duì)Linux系統(tǒng)使用的熟練度;第3章講述嵌入式C程序設(shè)計(jì)基礎(chǔ);第4章講述Bootloader配置與修改,通過(guò)移植Bootloader的實(shí)踐操作,使得學(xué)生加深對(duì)嵌入式系統(tǒng)啟動(dòng)過(guò)程的理解;第5章講述Linux文件系統(tǒng)及程序設(shè)計(jì);第6章講述驅(qū)動(dòng)設(shè)計(jì)及應(yīng)用,通過(guò)簡(jiǎn)單的驅(qū)動(dòng)設(shè)計(jì)實(shí)踐加深對(duì)系統(tǒng)內(nèi)核及驅(qū)動(dòng)程序結(jié)構(gòu)的理解,通過(guò)幾個(gè)外設(shè)應(yīng)用理解設(shè)備文件的操作過(guò)程;第7~13章講述了串口通信,線程、進(jìn)程管理及進(jìn)程間通信,網(wǎng)絡(luò)通信,Qt,SQLite數(shù)據(jù)庫(kù)和Web服務(wù)器等內(nèi)容,通過(guò)相應(yīng)的實(shí)踐操作內(nèi)容使得學(xué)生逐步掌握嵌入式Linux應(yīng)用開(kāi)發(fā)的相關(guān)技術(shù)。
本書(shū)可作為高等學(xué)校電子、計(jì)算機(jī)等相關(guān)專(zhuān)業(yè)嵌入式相關(guān)課程的基礎(chǔ)實(shí)踐教材,也可供相關(guān)工程技術(shù)人員學(xué)習(xí)、參考。教學(xué)中,教師可以根據(jù)教學(xué)對(duì)象和學(xué)時(shí)等具體情況對(duì)書(shū)中的內(nèi)容進(jìn)行刪減和組合,也可以進(jìn)行適當(dāng)擴(kuò)展,參考學(xué)時(shí)為16~32學(xué)時(shí)。為適應(yīng)教學(xué)模式、教學(xué)方法和手段的改革,本書(shū)配有多媒體電子課件、程序代碼等相應(yīng)的網(wǎng)絡(luò)教學(xué)資源,請(qǐng)登錄華信教育資源網(wǎng)(http://hxedu.com.cn)注冊(cè)下載。
本書(shū)第1~3章、第7~11章由曾毓編寫(xiě),第4~6、12、13章由吳占雄編寫(xiě)。全書(shū)由曾毓統(tǒng)稿。杭州電子科技大學(xué)的高明煜教授在百忙之中對(duì)全書(shū)進(jìn)行了審閱。在的編寫(xiě)本書(shū)過(guò)程中,電子工業(yè)出版社的王羽佳編輯為本書(shū)的出版做了大量工作,在此一并表示感謝!
編寫(xiě)本書(shū)參考了大量近年來(lái)出版的相關(guān)技術(shù)資料,吸取了許多專(zhuān)家和同仁的寶貴經(jīng)驗(yàn),在此向他們表示謝意。
由于嵌入式技術(shù)發(fā)展迅速,編者學(xué)識(shí)有限,加之時(shí)間倉(cāng)促,書(shū)中錯(cuò)漏之處在所難免,望廣大讀者批評(píng)指正。
編 者
2017年8月
收起全部↑
曾毓,男,杭州電子科技大學(xué)副教授,從事高校工科電子系統(tǒng)設(shè)計(jì)相關(guān)課程教學(xué)十多年,參編暢銷(xiāo)教材多部,主持、參與嵌入式方面項(xiàng)目數(shù)十項(xiàng),教學(xué)、科研、寫(xiě)作經(jīng)驗(yàn)豐富。
第1章 嵌入式Linux環(huán)境搭建 1
1.1 背景知識(shí) 1
1.1.1 嵌入式Linux系統(tǒng) 1
1.1.2 嵌入式Linux開(kāi)發(fā)環(huán)境 1
1.2 預(yù)習(xí)準(zhǔn)備 2
1.2.1 預(yù)習(xí)要求 2
1.2.2 實(shí)踐目標(biāo) 2
1.2.3 準(zhǔn)備材料 2
1.3 實(shí)踐內(nèi)容和步驟 3
1.3.1 安裝虛擬機(jī)軟件及
創(chuàng)建虛擬機(jī) 3
1.3.2 安裝虛擬機(jī)工具 10
1.3.3 設(shè)置共享文件夾 13
1.3.4 建立交叉編譯環(huán)境 15
1.3.5 常用軟件安裝 17
1.4 實(shí)踐練習(xí) 20
第2章 Linux環(huán)境入門(mén) 21
2.1 背景知識(shí) 21
2.1.1 Linux Shell 21
2.1.2 Linux命令 21
2.1.3 VI編輯器 22
2.1.4 GCC編譯器和
GDB調(diào)試器 23
2.2 預(yù)習(xí)準(zhǔn)備 24
2.2.1 預(yù)習(xí)要求 24
2.2.2 實(shí)踐目標(biāo) 25
2.2.3 準(zhǔn)備材料 25
2.3 實(shí)踐內(nèi)容和步驟 25
2.3.1 Linux常用命令練習(xí) 25
2.3.2 VI編輯器練習(xí) 31
2.3.3 GCC編譯和GDB調(diào)試 32
2.4 實(shí)踐練習(xí) 33
第3章 嵌入式C程序設(shè)計(jì)基礎(chǔ) 34
3.1 背景知識(shí) 34
3.1.1 基本數(shù)據(jù)類(lèi)型 34
3.1.2 變量與常量 35
3.1.3 運(yùn)算符與表達(dá)式 36
3.1.4 程序結(jié)構(gòu) 38
3.1.5 數(shù)組、結(jié)構(gòu)體和指針 41
3.1.6 函數(shù) 42
3.1.7 系統(tǒng)調(diào)用及API 43
3.2 預(yù)習(xí)準(zhǔn)備 43
3.2.1 預(yù)習(xí)要求 43
3.2.2 實(shí)踐目標(biāo) 44
3.2.3 準(zhǔn)備材料 44
3.3 實(shí)踐內(nèi)容和步驟 44
3.3.1 Code::Blocks使用 44
3.3.2 目標(biāo)板程序下載調(diào)試 50
3.4 實(shí)踐練習(xí) 56
第4章 Bootloader配置與修改 57
4.1 背景知識(shí) 57
4.1.1 U-Boot 58
4.1.2 U-Boot源代碼結(jié)構(gòu) 59
4.1.3 U-Boot啟動(dòng)流程 59
4.1.4 U-Boot常用命令 61
4.2 實(shí)踐準(zhǔn)備 61
4.2.1 預(yù)習(xí)要求 61
4.2.2 實(shí)踐目標(biāo) 61
4.2.3 準(zhǔn)備材料 62
4.3 實(shí)踐內(nèi)容和步驟 62
4.3.1 U-Boot移植步驟 62
4.3.2 測(cè)試并運(yùn)行U-Boot 65
4.4 實(shí)踐練習(xí) 67
第5章 Linux文件系統(tǒng)及程序設(shè)計(jì) 68
5.1 背景知識(shí) 68
5.1.1 基本概念 69
5.1.2 文件系統(tǒng)調(diào)用API接口 72
5.1.3 標(biāo)準(zhǔn)I/O 75
5.2 實(shí)踐準(zhǔn)備 77
5.2.1 預(yù)習(xí)要求 77
5.2.2 實(shí)踐目標(biāo) 77
5.3 實(shí)踐內(nèi)容和步驟 77
5.3.1 Linux文件屬性示例 77
5.3.2 Linux目錄操作示例 80
5.4 實(shí)踐練習(xí) 83
第6章 驅(qū)動(dòng)設(shè)計(jì)及應(yīng)用 84
6.1 背景知識(shí) 84
6.1.1 設(shè)備驅(qū)動(dòng)程序 84
6.1.2 處理器與設(shè)備間
數(shù)據(jù)交換方式 85
6.1.3 驅(qū)動(dòng)程序結(jié)構(gòu) 86
6.1.4 file_operations與file
結(jié)構(gòu)體 87
6.1.5 設(shè)備注冊(cè)和初始化 88
6.1.6 中斷管理 89
6.1.7 設(shè)備驅(qū)動(dòng)開(kāi)發(fā)所用到的
幾類(lèi)重要函數(shù) 89
6.1.8 設(shè)備驅(qū)動(dòng)程序的開(kāi)發(fā)過(guò)程 91
6.1.9 驅(qū)動(dòng)程序(內(nèi)核模塊)
編譯進(jìn)內(nèi)核 91
6.2 實(shí)踐準(zhǔn)備 92
6.2.1 預(yù)習(xí)要求 92
6.2.2 實(shí)踐目的 92
6.3 實(shí)踐內(nèi)容和步驟 92
6.3.1 實(shí)現(xiàn)虛擬字符設(shè)備
驅(qū)動(dòng)程序 92
6.3.2 LED與按鍵應(yīng)用
程序設(shè)計(jì) 98
6.3.3 LCD應(yīng)用程序設(shè)計(jì) 99
6.4 實(shí)踐練習(xí) 100
第7章 Linux串口通信及線程應(yīng)用 101
7.1 背景知識(shí) 101
7.1.1 串行通信接口 101
7.1.2 串行通信基本參數(shù) 102
7.1.3 Linux串口相關(guān)概念 102
7.1.4 Linux線程 105
7.2 預(yù)習(xí)準(zhǔn)備 107
7.2.1 預(yù)習(xí)要求 107
7.2.2 實(shí)踐目標(biāo) 107
7.2.3 準(zhǔn)備材料 107
7.3 實(shí)踐內(nèi)容和步驟 108
7.3.1 串口通信實(shí)踐 108
7.3.2 Linux線程應(yīng)用實(shí)踐 115
7.4 實(shí)踐練習(xí) 118
第8章 進(jìn)程管理及進(jìn)程間通信 119
8.1 背景知識(shí) 119
8.1.1 Linux進(jìn)程基本概念 119
8.1.2 Linux進(jìn)程管理 120
8.1.3 子進(jìn)程的創(chuàng)建 122
8.1.4 進(jìn)程間通信 124
8.2 預(yù)習(xí)準(zhǔn)備 129
8.2.1 預(yù)習(xí)要求 129
8.2.2 實(shí)踐目標(biāo) 129
8.3 實(shí)踐內(nèi)容和步驟 129
8.3.1 fork與進(jìn)程管理實(shí)踐 129
8.3.2 進(jìn)程間通信實(shí)踐 131
8.4 實(shí)踐練習(xí) 132
第9章 Linux網(wǎng)絡(luò)通信 133
9.1 背景知識(shí) 133
9.1.1 網(wǎng)絡(luò)通信 133
9.1.2 TCP、UDP協(xié)議 135
9.1.3 Linux網(wǎng)絡(luò)編程基礎(chǔ) 138
9.2 預(yù)習(xí)準(zhǔn)備 144
9.2.1 預(yù)習(xí)要求 144
9.2.2 實(shí)踐目標(biāo) 144
9.2.3 準(zhǔn)備材料 144
9.3 實(shí)踐內(nèi)容和步驟 144
9.3.1 TCP客戶端程序設(shè)計(jì) 144
9.3.2 TCP服務(wù)器端程序設(shè)計(jì) 148
9.4 實(shí)踐練習(xí) 151
第10章 簡(jiǎn)單GUI程序設(shè)計(jì) 152
10.1 背景知識(shí) 152
10.1.1 Qt 152
10.1.2 安裝Qt 153
10.1.3 移植Qt 154
10.1.4 GUI 156
10.2 預(yù)習(xí)準(zhǔn)備 157
10.2.1 預(yù)習(xí)要求 157
10.2.2 實(shí)踐目標(biāo) 157
10.3 實(shí)踐內(nèi)容和步驟 157
10.3.1 Qt Creator配置 157
10.3.2 簡(jiǎn)單四則運(yùn)算程序設(shè)計(jì) 162
10.4 實(shí)踐練習(xí) 168
第11章 Qt圖形程序設(shè)計(jì) 169
11.1 背景知識(shí) 169
11.1.1 Qt繪圖系統(tǒng) 169
11.1.2 Qt窗口中的繪圖方法 170
11.1.3 QPainter類(lèi) 171
11.1.4 畫(huà)刷和畫(huà)筆 172
11.1.5 圖像處理 173
11.1.6 Qt定時(shí)器與線程 174
11.2 預(yù)習(xí)準(zhǔn)備 178
11.2.1 預(yù)習(xí)要求 178
11.2.2 實(shí)踐目標(biāo) 178
11.3 實(shí)踐內(nèi)容和步驟 178
11.3.1 Qt繪圖簡(jiǎn)單示例 178
11.3.2 Qt簡(jiǎn)單動(dòng)畫(huà) 181
11.4 實(shí)踐練習(xí) 183
第12章 嵌入式數(shù)據(jù)庫(kù)SQLite應(yīng)用 184
12.1 背景知識(shí) 184
12.1.1 SQLite 184
12.1.2 SQL 185
12.1.3 SQLite數(shù)據(jù)類(lèi)型 188
12.1.4 SQLite接口函數(shù) 188
12.1.5 SQLite數(shù)據(jù)庫(kù)
C語(yǔ)言編程 190
12.2 實(shí)踐準(zhǔn)備 192
12.2.1 預(yù)習(xí)要求 192
12.2.2 實(shí)踐目標(biāo) 192
12.3 實(shí)踐內(nèi)容和步驟 192
12.3.1 SQLite配置、編譯
與安裝 192
12.3.2 SQLite簡(jiǎn)單應(yīng)用示例1 195
12.3.3 SQLite簡(jiǎn)單應(yīng)用示例2 197
12.4 實(shí)踐練習(xí) 200
第13章 嵌入式Web服務(wù)器應(yīng)用 201
13.1 背景知識(shí) 201
13.2 實(shí)踐準(zhǔn)備 203
13.2.1 預(yù)習(xí)要求 203
13.2.2 實(shí)踐目標(biāo) 203
13.2.3 準(zhǔn)備材料 203
13.3 實(shí)踐內(nèi)容和步驟 203
13.3.1 Boa Web Server的移植 203
13.3.2 測(cè)試Boa服務(wù)器 209
13.3.3 遠(yuǎn)程控制LED 210
13.4 實(shí)踐練習(xí) 213
附錄 Mini2451開(kāi)發(fā)板簡(jiǎn)介 214
參考文獻(xiàn) 219