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