本書以Cortex-A15處理器為載體,是面向嵌入式終端軟件開發(fā)和學習的教程。內容涵蓋Linux操作系統(tǒng)介紹、安裝和基本使用、嵌入式終端開發(fā)平臺、ARM裸機編程、驅動開發(fā),以及嵌入式Linux的應用編程、嵌入式Android應用編程。本書由淺入深、結構合理、圖文并茂,可操作性強,讀者可跟著一步步進行操作和學習,非常適合嵌入式Linux開發(fā)初級工程師及準備往嵌入式Linux方向發(fā)展的電子工程師和單片機工程師使用,也可作為高校非計算機專業(yè)高年級學生學習嵌入式Linux的參考教材。
溫武,畢業(yè)于華中科技大學通信與信息系統(tǒng)專業(yè),工學碩士,高級實驗師,現(xiàn)為廣州大學計算機科學與教育軟件學院實驗室副主任,黨支部書記。1998年始在廣州大學工作,主要從事網(wǎng)絡工程技術、電子信息技術和信息系統(tǒng)與數(shù)據(jù)庫技術方面的研究。他已主持教研、科研項目7項,發(fā)表論文二十多篇,擁有軟件著作權1項?娢哪,華南理工大學廣州學院電子信息工程學院自動化實驗師,研究方向為嵌入式技術,主持和參與多項省部級教學科研項目,個人擁有授權發(fā)明專利兩項,實用新型專利50多項。指導學生參加各類省部級科技競賽獲得100多項不同等級獎項。張汛淶,廣州大學計算機科學與教育軟件學院副教授,研究方向是計算機系統(tǒng)結構和嵌入式系統(tǒng),有多年的計算機組成與結構、嵌入式系統(tǒng)與接口等課程的理論和實踐教學經(jīng)驗,指導學生多次在創(chuàng)新比賽中獲獎。
目 錄
第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)與PC系統(tǒng)的區(qū)別 3
1.1.4 嵌入式系統(tǒng)的特點 3
1.1.5 嵌入式系統(tǒng)的發(fā)展趨勢 4
1.1.6 嵌入式系統(tǒng)的應用領域 5
1.2 嵌入式處理器 8
1.3 嵌入式操作系統(tǒng) 10
1.3.1 何謂嵌入式操作系統(tǒng) 10
1.3.2 嵌入式操作系統(tǒng)的特點 10
1.3.3 嵌入式操作系統(tǒng)的種類 11
1.4 嵌入式系統(tǒng)開發(fā)過程 13
第2章 嵌入式ARM處理器 15
2.1 ARM公司簡介 15
2.2 ARM體系結構發(fā)展 15
2.3 ARM Cortex系列微處理器 16
2.3.1 Cortex-A8系列處理器 17
2.3.2 Cortex-A9系列處理器 18
2.3.3 Cortex-A15系列處理器 19
2.3.4 Cortex-A53系列處理器 21
2.4 主流Cortex-A系列處理器對比 23
第3章 嵌入式開發(fā)平臺 24
3.1 嵌入式軟件開發(fā)平臺 24
3.1.1 安裝VMware Workstation軟件 24
3.1.2 配置虛擬主機硬件 26
3.1.3 安裝Ubuntu 33
3.1.4 安裝VMware Tools 37
3.1.5 安裝文本編輯器Vim 38
3.1.6 安裝g++ 39
3.1.7 安裝Android開發(fā)工具及依賴庫 39
3.1.8 安裝TFTP服務 41
3.1.9 安裝NFS服務 41
3.2 基于Exynos5260嵌入式硬件平臺 42
3.2.1 Exynos5260嵌入式硬件平臺簡介 42
3.2.2 Exynos5260嵌入式硬件平臺資源配置 43
3.2.3 實驗開發(fā)平臺調試 45
3.2.4 Exynos5260開發(fā)平臺設置 45
3.2.5 系統(tǒng)鏡像燒寫 48
第4章 Linux應用開發(fā)基礎 51
4.1 Linux基礎命令 51
4.2 Linux下C語言編程環(huán)境 60
4.2.1 Linux下C語言編程環(huán)境概述 60
4.2.2 Vi編輯器 61
4.2.3 GNU GCC的使用 62
4.2.4 GDB調試器的使用 65
4.3 GNU Make命令和Makefile文件 68
4.4 Linux 的Shell編程 72
4.4.1 Shell簡介 72
4.4.2 Shell變量與環(huán)境變量 72
4.4.3 Shell常用命令 78
4.4.4 Shell函數(shù) 82
第5章 嵌入式Linux應用編程 86
5.1 第一個Linux應用程序輸出“hello world!” 86
5.2 文件I/O操作 87
5.2.1 Linux文件結構 87
5.2.2 系統(tǒng)調用與庫函數(shù) 88
5.2.3 文件I/O基本操作 89
5.3 進程 95
5.3.1 Linux進程概述 95
5.3.2 Linux進程控制 98
5.3.3 進程間通信 104
5.4 多線程通信 118
5.4.1 線程簡介 118
5.4.2 Linux線程控制 119
5.5 Linux網(wǎng)絡編程 131
5.5.1 TCP/IP簡介 131
5.5.2 socket通信基本概念 132
5.5.3 網(wǎng)絡編程相關函數(shù)說明 133
5.5.4 網(wǎng)絡編程程序設計 136
第6章 嵌入式系統(tǒng)開發(fā) 147
6.1 交叉編譯簡介 147
6.2 交叉編譯器 147
6.3 交叉編譯器的安裝 148
6.4 U-Boot編譯 150
6.5 U-Boot移植 150
6.6 編譯內核 155
6.7 內核移植 156
6.8 Android 4.4.2移植 159
第7章 Linux設備驅動開發(fā) 162
7.1 Linux驅動程序的基本知識 162
7.2 Linux device driver的概念 163
7.3 Linux內核模塊helloworld 163
7.4 驅動程序中編寫ioctl函數(shù)供應用程序調用 164
7.5 嵌入式Linux下LED驅動程序設計 166
7.6 嵌入式Linux下的按鍵中斷實驗 174
7.7 嵌入式Linux的A/D轉換實驗 184
第8章 Qt編程基礎 190
8.1 Qt概述 190
8.1.1 GUI的作用 190
8.1.2 Qt的主要特點 191
8.2 Qt的安裝 191
8.3 使用Designer創(chuàng)建“helloworld”Qt窗口 194
8.4 交叉編譯Qt Embedded庫 197
8.4.1 配置編譯選項 197
8.4.2 編譯和安裝 198
8.4.3 Qt Embedded應用程序編譯 198
8.5 開發(fā)平臺設置Qt Embedded環(huán)境 199
第9章 Android應用開發(fā) 201
9.1 開發(fā)準備 201
9.1.1 下載JDK 201
9.1.2 下載Eclipse 201
9.1.3 下載ADT 202
9.1.4 下載Android SDK 202
9.1.5 下載Android NDK 202
9.2 安裝程序 202
9.2.1 安裝JDK 202
9.2.2 安裝Eclipse 205
9.2.3 安裝Android SDK 205
9.2.4 解壓Android NDK與配置環(huán)境變量 211
9.2.5 配置ADT 215
9.2.6 配置SDK 217
9.2.7 配置NDK 218
9.3 測試模擬器 218
9.4 Android應用開發(fā)準備 221
9.5 Android應用開發(fā) 223
9.5.1 實驗1:LED燈控制程序設計 223
9.5.2 實驗2:ADC模塊實驗 230
9.5.3 實驗3:LCD實驗 236
第10章 Android多媒體視頻播放器 241
10.1 相關知識 241
10.2 開發(fā)過程 242
第11章 Android遠程控制(智能家居項目) 247
11.1 智能家居概念 247
11.2 背景 247
11.3 發(fā)展趨勢 247
11.4 智能家居項目 248
11.5 智能家居項目服務端代碼編寫 250
11.6 智能家居項目客戶端代碼編寫 257
參考文獻 263