第1章嵌入式係統概述 1
1.1嵌入式係統 2
1.2嵌入式操作係統 3
1.3嵌入式Linux曆史 5
1.4嵌入式Linux開發環境 6
1.5嵌入式Linux係統開發要點 8
第2章ARM處理 9
2.1 ARM處理器簡介 10
2.1.1 ARM公司簡介 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處理器簡介 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華清遠見 FS4412開發闆 30
2.4.1 華清遠見 FS4412開發闆介紹 30
2.4.2 眾多的開發闆供應商 34
2.5習題 34
第3章Linux編程環境 35
3.1 Linux常用工具 36
3.1.1 Shell簡介 36
3.1.2 常用的Shell命令 38
3.1.3 編寫Shell腳本 46
3.1.4 正則錶達式 50
3.1.5 程序編輯器 53
3.2 Makefile 57
3.2.1 GNU make 57
3.2.2 Makefile規則語法 59
3.2.3 Makefile文件中變量的使用 60
3.3二進製代碼工具的使用 62
3.3.1 GNU Binutils工具介紹 62
3.3.2 Binutils工具軟件使用 63
3.4 GCC編譯器的使用 64
3.4.1 GCC編譯器簡介 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綫程庫 78
3.7習題 81
第4章交叉開發環境 82
4.1交叉開發環境介紹 83
4.1.1 交叉開發概念模型 83
4.1.2 目標闆與主機之間的連接 84
4.1.3 文件傳輸 86
4.1.4 網絡文件係統 87
4.2安裝交叉編譯工具 87
4.2.1 獲取交叉開發工具鏈 87
4.2.2 主機安裝工具鏈 88
4.3主機開發環境配置 88
4.3.1 主機環境配置 88
4.3.2 串口控製颱工具 89
4.3.3 TFTP服務 93
4.3.4 NFS服務 93
4.4啓動目標闆 95
4.4.1 係統引導過程 95
4.4.2 內核解壓啓動 96
4.4.3 掛接根文件係統 98
4.5應用程序的遠程交叉調試 99
4.5.1 交叉調試的模型 99
4.5.2 交叉調試程序實例 100
4.6實例:FS4412嵌入式開發環境搭建 102
4.6.1 開發主機安裝 102
4.6.2 聯調測試 110
4.7習題 113
第5章Bootloader 114
5.1 Bootloader 簡介 115
5.1.1 Bootloader介紹 115
5.1.2 Bootloader的啓動 115
5.1.3 Bootloader的種類 118
5.2 U-Boot簡介 120
5.2.1 U-Boot介紹 120
5.2.2 U-Boot的常用命令 120
5.2.3 U-Boot的環境變量 124
5.2.4 U-Boot源碼結構 126
5.3 U-Boot源碼分析 127
5.3.1 配置編譯 127
5.3.2 U-Boot啓動過程 132
5.3.3 U-Boot與內核的關係 136
5.4 U-Boot移植實例 138
5.4.1 收集移植相關資源 138
5.4.2 選擇U-Boot 源碼版本 139
5.4.3 u-Boot 配置編譯 139
5.4.4 串口能輸齣信息 140
5.4.5 移植網卡實現Ping和TFTP的功能 145
5.5習題 151
第6章配置編譯內核 153
6.1 Linux內核特點 154
6.1.1 Linux內核版本介紹 154
6.1.2 Linux內核特點 155
6.2配置編譯內核源碼 156
6.2.1 內核源碼的下載方法和結構 157
6.2.2 內核配置係統 160
6.2.3 KbuildMakefiles 167
6.2.4 內核編譯 178
6.2.5 內核編譯結果 185
6.3內核配置選項 187
6.3.1 使用配置菜單 187
6.3.2 基本配置選項 189
6.3.3 驅動程序配置選項 191
6.4習題 192
第7章內核移植基礎 193
7.1移植內核源碼 194
7.1.1 移植的基本工作 194
7.1.2 移植後的工作 196
7.2 Linux設備樹 197
7.2.1 Linux設備樹的由來 197
7.2.2 Linux設備樹的目的 197
7.2.3 Linux設備樹的使用 199
7.3 Linux內核啓動過程分析 206
7.3.1 內核啓動流程介紹 206
7.3.2 內核啓動加載程序 209
7.3.3 內核主體程序入口 215
7.3.4 Linux係統初始化 218
7.3.5 初始化驅動模型 224
7.3.6 掛載根文件係統 225
7.4習題 227
第8章內核移植實例 229
8.1基本內核移植 230
8.2網卡驅動移植 234
8.2.1 網卡原理圖分析 234
8.2.2 網卡驅動移植 235
8.2.3 以NFS掛載根文件係統 237
8.3 SD/eMMC驅動移植 238
8.4 USB主機控製器驅動移植 240
8.5 LCD驅動移植 244
8.6習題 249
第9章內核調試技術 250
9.1內核調試方法 251
9.1.1 內核調試介紹 251
9.1.2 學會分析內核源程序 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 通過/proc接口 264
9.3.3 通過/sys接口 265
9.4處理齣錯信息 268
9.4.1 oops信息 268
9.4.2 panic 269
9.4.3 通過ioctl方法 271
9.5內核源代碼調試 272
9.6習題 275
第10章製作Linux根文件係統 276
10.1根文件係統目錄結構 277
10.2 init係統初始化過程 280
10.2.1 inittab文件 281
10.2.2 System V init啓動過程 284
10.2.3 Busyboxinit啓動過程分析 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集成開發環境 309
11.4添加ARM平颱的構建環境 313
11.5編寫並運行Qt測試程序 316
11.6習題 320
參考文獻 322
附錄習題答案 323
· · · · · · (
收起)