關(guān)注理論知識結構完整性,重視實(shí)踐前瞻性環(huán)節;
內容基于流行的ARM Cortex-A9處理器+Uboot系統+Linux系統;
豐富的系統移植和系統構建案例;
所有實(shí)驗均可通過(guò)FS4412硬件平臺驗證
本書(shū)結合大量實(shí)例,在基于A(yíng)RM Cortex-A9 四核處理器的硬件教學(xué)平臺上,全面詳細地講解了ARM處理器及在其上的嵌入式Linux 系統開(kāi)發(fā)。本書(shū)主要內容包括ARM 處理器及常用指令介紹,Linux 編程環(huán)境,交叉開(kāi)發(fā)環(huán)境,Boot Loader 介紹U-Boot 啟動(dòng)過(guò)程及移植,Linux 內核配置、編譯及Qt 移植等。其中移植相關(guān)的內容不僅給出了移植的方法和步驟,還講解了為什么要這么做。重視實(shí)踐,實(shí)用是本書(shū)的最大特點(diǎn),同時(shí),本書(shū)配合大量的習題,讀者能快速地掌握嵌入式Linux 系統開(kāi)發(fā)的要點(diǎn)。本書(shū)可作為大學(xué)院校電子、通信、計算機、自動(dòng)化等專(zhuān)業(yè)的“嵌入式Linux 系統開(kāi)發(fā)”課程的教材,也可作為嵌入式開(kāi)發(fā)人員的參考用書(shū)。
華清遠見(jiàn)嵌入式培訓中心,是國內成立較早、規模較大的專(zhuān)業(yè)嵌入式培訓機構。為滿(mǎn)足快速增長(cháng)的移動(dòng)開(kāi)發(fā)領(lǐng)域對Android等主流嵌入式操作系統研發(fā)人才的需求,華清遠見(jiàn)在多年高端嵌入式專(zhuān)業(yè)培訓和豐富的企業(yè)內訓實(shí)施經(jīng)驗的基礎上,于2004年正式成立華清遠見(jiàn)3G學(xué)院,學(xué)院充分整合行業(yè)經(jīng)驗及專(zhuān)業(yè)領(lǐng)域的企業(yè)合作資源優(yōu)勢,打造出專(zhuān)業(yè)、科學(xué)的實(shí)訓體系,幫助合作院校時(shí)刻緊跟行業(yè)用人需求的新趨勢,引導畢業(yè)生在知識結構上更好地實(shí)現與企業(yè)真實(shí)需求的對接,從而有效提高其就業(yè)競爭優(yōu)勢,順利進(jìn)入專(zhuān)業(yè)研發(fā)領(lǐng)域。
第1 章 嵌入式系統概述 1
1.1 嵌入式系統 2
1.2 嵌入式操作系統 3
1.3 嵌入式Linux 歷史 5
1.4 嵌入式Linux 開(kāi)發(fā)環(huán)境 6
1.5 嵌入式Linux 系統開(kāi)發(fā)要點(diǎn) 8
第2 章 ARM處理 9
2.1 ARM 處理器簡(jiǎn)介 10
2.1.1 ARM 公司簡(jiǎn)介 11
2.1.2 ARM 處理器體系結構 12
2.1.3 Linux 與ARM 處理器 17
2.2 ARM 指令集 18
2.2.1 ARM 微處理器的指令集概述 18
2.2.2 ARM 指令尋址方式 19
2.2.3 Thumb 指令 21
2.2.4 Thumb-2 指令 22
2.2.5 ThumbEE 指令 22
2.3 典型ARM 處理器簡(jiǎn)介 22
2.3.1 Atmel AT91RM9200 22
2.3.2 Samsung S3C2410 23
2.3.3 TI OMAP5 系列 25
2.3.4 Freescale i.Max6 26
2.3.5 Intel Xscale PXA 系列 27
2.3.6 Cortex-A 系列的Exynos4412 29
2.4 華清遠見(jiàn) FS4412 開(kāi)發(fā)板 30
2.4.1 華清遠見(jiàn) FS4412 開(kāi)發(fā)板介紹 30
2.4.2 眾多的開(kāi)發(fā)板供應商 34
2.5 習題 34
第3 章 Linux 編程環(huán)境 35
3.1 Linux 常用工具 36
3.1.1 Shell 簡(jiǎn)介 36
3.1.2 常用的Shell 命令 38
3.1.3 編寫(xiě)Shell 腳本 46
3.1.4 正則表達式 50
3.1.5 程序編輯器 53
3.2 Makefile 57
3.2.1 GNU make 57
3.2.2 Makefile 規則語(yǔ)法 59
3.2.3 Makefile 文件中變量的使用 60
3.3 二進(jìn)制代碼工具的使用 62
3.3.1 GNU Binutils 工具介紹 62
3.3.2 Binutils 工具軟件使用 63
3.4 GCC 編譯器的使用 64
3.4.1 GCC 編譯器簡(jiǎn)介 64
3.4.2 GCC 編譯選項解析 66
3.5 調試器GDB 的使用技巧 70
3.5.1 GDB 調試器介紹 70
3.5.2 GDB 調試命令 71
3.6 Linux 編程庫 75
3.6.1 Linux 編程庫介紹 75
3.6.2 Linux 系統調用 76
3.6.3 Linux 線(xiàn)程庫 78
3.7 習題 81
第4 章 交叉開(kāi)發(fā)環(huán)境 82
4.1 交叉開(kāi)發(fā)環(huán)境介紹 83
4.1.1 交叉開(kāi)發(fā)概念模型 83
4.1.2 目標板與主機之間的連接 84
4.1.3 文件傳輸 86
4.1.4 網(wǎng)絡(luò )文件系統 87
4.2 安裝交叉編譯工具 87
4.2.1 獲取交叉開(kāi)發(fā)工具鏈 87
4.2.2 主機安裝工具鏈 88
4.3 主機開(kāi)發(fā)環(huán)境配置 88
4.3.1 主機環(huán)境配置 88
4.3.2 串口控制臺工具 89
4.3.3 TFTP 服務(wù) 93
4.3.4 NFS 服務(wù) 93
4.4 啟動(dòng)目標板 95
4.4.1 系統引導過(guò)程 95
4.4.2 內核解壓?jiǎn)?dòng) 96
4.4.3 掛接根文件系統 98
4.5 應用程序的遠程交叉調試 99
4.5.1 交叉調試的模型 99
4.5.2 交叉調試程序實(shí)例 100
4.6 實(shí)例:FS4412 嵌入式開(kāi)發(fā)環(huán)境搭建 102
4.6.1 開(kāi)發(fā)主機安裝 102
4.6.2 聯(lián)調測試 110
4.7 習題 113
第5 章 Bootloader 114
5.1 Bootloader 簡(jiǎn)介 115
5.1.1 Bootloader 介紹 115
5.1.2 Bootloader 的啟動(dòng) 115
5.1.3 Bootloader 的種類(lèi) 118
5.2 U-Boot 簡(jiǎn)介 120
5.2.1 U-Boot 介紹 120
5.2.2 U-Boot 的常用命令 120
5.2.3 U-Boot 的環(huán)境變量 124
5.2.4 U-Boot 源碼結構 126
5.3 U-Boot 源碼分析 127
5.3.1 配置編譯 127
5.3.2 U-Boot 啟動(dòng)過(guò)程 132
5.3.3 U-Boot 與內核的關(guān)系 136
5.4 U-Boot 移植實(shí)例 138
5.4.1 收集移植相關(guān)資源 138
5.4.2 選擇U-Boot 源碼版本 139
5.4.3 u-Boot 配置編譯 139
5.4.4 串口能輸出信息 140
5.4.5 移植網(wǎng)卡實(shí)現Ping 和TFTP 的功能 145
5.5 習題 151
第6 章 配置編譯內核 153
6.1 Linux 內核特點(diǎn) 154
6.1.1 Linux 內核版本介紹 154
6.1.2 Linux 內核特點(diǎn) 155
6.2 配置編譯內核源碼 156
6.2.1 內核源碼的下載方法和結構 157
6.2.2 內核配置系統 160
6.2.3 Kbuild Makefiles 167
6.2.4 內核編譯 178
6.2.5 內核編譯結果 185
6.3 內核配置選項 187
6.3.1 使用配置菜單 187
6.3.2 基本配置選項 189
6.3.3 驅動(dòng)程序配置選項 191
6.4 習題 192
第7 章 內核移植基礎 193
7.1 移植內核源碼 194
7.1.1 移植的基本工作 194
7.1.2 移植后的工作 196
7.2 Linux 設備樹(shù) 197
7.2.1 Linux 設備樹(shù)的由來(lái) 197
7.2.2 Linux 設備樹(shù)的目的 197
7.2.3 Linux 設備樹(shù)的使用 199
7.3 Linux 內核啟動(dòng)過(guò)程分析 206
7.3.1 內核啟動(dòng)流程介紹 206
7.3.2 內核啟動(dòng)加載程序 209
7.3.3 內核主體程序入口 215
7.3.4 Linux 系統初始化 218
7.3.5 初始化驅動(dòng)模型 224
7.3.6 掛載根文件系統 225
7.4 習題 227
第8 章 內核移植實(shí)例 229
8.1 基本內核移植 230
8.2 網(wǎng)卡驅動(dòng)移植 234
8.2.1 網(wǎng)卡原理圖分析 234
8.2.2 網(wǎng)卡驅動(dòng)移植 235
8.2.3 以NFS 掛載根文件系統 237
8.3 SD/eMMC 驅動(dòng)移植 238
8.4 USB 主機控制器驅動(dòng)移植 240
8.5 LCD 驅動(dòng)移植 244
8.6 習題 249
第9 章 內核調試技術(shù) 250
9.1 內核調試方法 251
9.1.1 內核調試介紹 251
9.1.2 學(xué)會(huì )分析內核源程序 252
9.1.3 調試方法介紹 252
9.2 內核打印函數 255
9.2.1 內核映像解壓前的串口輸出函數 255
9.2.2 內核映像解壓后的串口輸出函數 257
9.2.3 printk 258
9.3 獲取內核信息 263
9.3.1 系統請求鍵 263
9.3.2 通過(guò)/proc 接口 264
9.3.3 通過(guò)/sys 接口 265
9.4 處理出錯信息 268
9.4.1 oops 信息 268
9.4.2 panic 269
9.4.3 通過(guò)ioctl 方法 271
9.5 內核源代碼調試 272
9.6 習題 275
第10 章 制作Linux 根文件系統 276
10.1 根文件系統目錄結構 277
10.2 init 系統初始化過(guò)程 280
10.2.1 inittab 文件 281
10.2.2 System V init 啟動(dòng)過(guò)程 284
10.2.3 Busybox init 啟動(dòng)過(guò)程分析 285
10.3 制作根文件系統 287
10.3.1 配置并編譯Busybox 287
10.3.2 添加共享庫文件和內核模塊 289
10.3.3 添加其他目錄和文件 290
10.4 固化根文件系統 293
10.4.1 制作image 格式的initrd 根文件系統鏡像 293
10.4.2 固化ext2 格式的根文件系統 295
10.5 習題 297
第11 章 Qt 移植 299
11.1 Qt 源碼配置、編譯及安裝 300
11.2 在根文件系統中添加Qt 309
11.3 安裝Qt 集成開(kāi)發(fā)環(huán)境 309
11.4 添加ARM 平臺的構建環(huán)境 313
11.5 編寫(xiě)并運行Qt 測試程序 316
11.6 習題 320
參考文獻 322
附錄 習題答案 323