第1章 嵌入式系統(tǒng)基礎(chǔ) 1
1.1 嵌入式系統(tǒng)概述 1
1.1.1 嵌入式系統(tǒng)的定義 1
1.1.2 嵌入式系統(tǒng)的組成 2
1.1.3 嵌入式系統(tǒng)的特點(diǎn) 4
1.1.4 嵌入式系統(tǒng)的應(yīng)用 5
1.1.5 實(shí)時(shí)系統(tǒng) 6
1.2 嵌入式處理器 8
第1章 嵌入式系統(tǒng)基礎(chǔ) 1
1.1 嵌入式系統(tǒng)概述 1
1.1.1 嵌入式系統(tǒng)的定義 1
1.1.2 嵌入式系統(tǒng)的組成 2
1.1.3 嵌入式系統(tǒng)的特點(diǎn) 4
1.1.4 嵌入式系統(tǒng)的應(yīng)用 5
1.1.5 實(shí)時(shí)系統(tǒng) 6
1.2 嵌入式處理器 8
1.2.1 嵌入式處理器的分類 8
1.2.2 嵌入式微處理器 8
1.2.3 微控制器 9
1.2.4 DSP處理器 10
1.2.5 片上系統(tǒng) 11
1.2.6 典型的嵌入式處理器 11
1.3 嵌入式操作系統(tǒng) 13
1.3.1 操作系統(tǒng)的概念和分類 13
1.3.2 實(shí)時(shí)操作系統(tǒng) 17
1.3.3 常見的嵌入式操作系統(tǒng) 20
1.4 實(shí)時(shí)操作系統(tǒng)的內(nèi)核 24
1.4.1 任務(wù)管理 24
1.4.2 任務(wù)間的通信和同步 31
1.4.3 存儲(chǔ)器管理 33
1.4.4 定時(shí)器和中斷管理 34
習(xí) 題 34
第2章 嵌入式系統(tǒng)開發(fā)過程 35
2.1 嵌入式軟件開發(fā)的特點(diǎn) 35
2.2 嵌入式軟件的開發(fā)流程 37
2.3 嵌入式系統(tǒng)的調(diào)試 43
2.3.1 調(diào)試方式 43
2.3.2 調(diào)試方法 46
2.4 板級(jí)支持包 47
習(xí) 題 49
目 錄
目 錄
第3章 嵌入式Linux和Android操作系統(tǒng) 50
3.1 Linux和Android概述 50
3.1.1 Linux與UNIX和GNU 50
3.1.2 Linux的特點(diǎn) 55
3.1.3 Andriod與物聯(lián)網(wǎng) 56
3.2 Linux內(nèi)核 58
3.2.1 Linux內(nèi)核的特征 58
3.2.2 進(jìn)程管理 61
3.2.3 存儲(chǔ)管理 67
3.2.4 文件系統(tǒng)管理 68
3.2.5 設(shè)備管理 73
3.2.6 嵌入式Linux的引導(dǎo)過程 77
3.2.7 Linux 2.6內(nèi)核 81
3.3 主流嵌入式Linux系統(tǒng) 85
3.3.1 MontaVista Linux 85
3.3.2 μClinux 88
3.3.3 RTLinux 91
3.3.4 RTAI 93
3.4 Android操作系統(tǒng) 94
3.4.1 Android簡介 94
3.4.2 Android簡史 94
3.4.3 Android系統(tǒng)架構(gòu) 95
3.3.4 Android組件模型 98
習(xí) 題 100
第4章 ARM體系結(jié)構(gòu) 101
4.1 ARM體系結(jié)構(gòu)概述 101
4.1.1 ARM體系結(jié)構(gòu)的特點(diǎn) 101
4.1.2 ARM處理器結(jié)構(gòu) 104
4.1.3 ARM處理器內(nèi)核 114
4.1.4 ARM處理器核 125
4.2 ARM編程模型 127
4.2.1 數(shù)據(jù)類型 127
4.2.2 處理器模式 128
4.2.3 處理器工作狀態(tài) 128
4.2.4 寄存器組織 129
4.2.5 異 常 134
4.2.6 存儲(chǔ)器和存儲(chǔ)器映射I/O 136
4.3 ARM基本尋址方式 138
4.4 ARM指令集 143
4.4.1 條件執(zhí)行 143
4.4.2 指令分類說明 144
4.4.3 Thumb指令集與ARM指令集的區(qū)別 167
4.4.4 Thumb-2指令集的特點(diǎn) 169
4.5 ARM匯編語言程序設(shè)計(jì) 174
4.5.1 預(yù)定義的寄存器和協(xié)處理器名 174
4.5.2 ARM匯編程序規(guī)范 175
4.5.3 ARM匯編程序設(shè)計(jì) 178
習(xí) 題 182
第5章 嵌入式Linux應(yīng)用程序開發(fā) 184
5.1 開發(fā)平臺(tái)簡介 184
5.1.1 S3C2410簡介 184
5.1.2 平臺(tái)上的資源 186
5.2 開發(fā)環(huán)境的建立 187
5.2.1 宿主機(jī)環(huán)境搭建 187
5.2.2 目標(biāo)機(jī)和宿主機(jī)的連接 187
5.2.3 網(wǎng)絡(luò)文件系統(tǒng)搭建 188
5.3 Linux的使用基礎(chǔ) 191
5.3.1 Linux常用命令 191
5.3.2 vi編輯器的使用 199
5.4 make工具和gcc編譯器 201
5.4.1 應(yīng)用程序的開發(fā)流程 201
5.4.2 make管理項(xiàng)目簡介 202
5.4.3 gcc編譯器的使用 203
5.5 簡單嵌入式Linux程序開發(fā) 206
5.5.1 編寫和運(yùn)行應(yīng)用程序 206
5.5.2 嵌入式Linux例子演示 207
5.6 LCD程序設(shè)計(jì) 209
5.6.1 LCD顯示原理 209
5.6.2 幀緩沖原理 211
5.6.3 幀緩沖使用程序 215
5.6.4 LCD程序開發(fā) 217
5.6.5 BMP文件顯示 226
5.7 USB攝像頭程序 232
5.7.1 攝像頭驅(qū)動(dòng)的安裝 232
5.7.2 Video4Linux模塊應(yīng)用 233
5.7.3 USB攝像頭圖像顯示 237
5.8 音頻采集和回放程序 244
5.8.1 采樣原理和采集方式 244
5.8.2 音頻設(shè)備的編程實(shí)現(xiàn) 245
習(xí) 題 248
第6章 嵌入式Linux驅(qū)動(dòng)程序開發(fā) 249
6.1 嵌入式Linux的設(shè)備管理 249
6.1.1 Linux驅(qū)動(dòng)程序概念 249
6.1.2 驅(qū)動(dòng)程序的結(jié)構(gòu) 250
6.1.3 Linux對(duì)中斷的處理 252
6.1.4 設(shè)備驅(qū)動(dòng)的初始化 253
6.2 設(shè)備驅(qū)動(dòng)程序的開發(fā)過程 255
6.2.1 設(shè)備驅(qū)動(dòng)程序的開發(fā)流程 255
6.2.2 模塊化驅(qū)動(dòng)程序設(shè)計(jì) 256
6.2.3 設(shè)備驅(qū)動(dòng)加到Linux內(nèi)核中 265
6.3 LED驅(qū)動(dòng)程序 268
6.3.1 LED的硬件接口 268
6.3.2 LED驅(qū)動(dòng)程序設(shè)計(jì) 268
6.3.3 LED驅(qū)動(dòng)程序調(diào)用 271
6.4 鍵盤驅(qū)動(dòng)程序 271
6.4.1 鍵盤的硬件接口 271
6.4.2 鍵盤驅(qū)動(dòng)程序的實(shí)現(xiàn) 272
6.5 觸摸屏驅(qū)動(dòng)程序 276
6.5.1 觸摸屏的工作原理 276
6.5.2 觸摸屏的接口設(shè)計(jì) 276
6.5.3 ADC和觸摸屏接口專用寄存器 280
6.5.4 觸摸屏的驅(qū)動(dòng)程序 282
6.5.5 觸摸屏應(yīng)用舉例 289
習(xí) 題 292
第7章 嵌入式Linux的GUI 293
7.1 嵌入式GUI 293
7.2 嵌入式GUI的結(jié)構(gòu)特征 294
7.2.1 開源的圖形庫GTK+ 294
7.2.2 面向?qū)崟r(shí)的MiniGUI 295
7.2.3 應(yīng)用廣泛的Qt Embedded 296
7.2.4 輕量級(jí)的 lwGUI 298
7.3 lwGUI系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) 300
7.3.1 圖形抽象層和輸入抽象層的設(shè)計(jì)與實(shí)現(xiàn) 300
7.3.2 消息驅(qū)動(dòng)機(jī)制的設(shè)計(jì)與實(shí)現(xiàn) 316
7.3.3 窗口的設(shè)計(jì)與實(shí)現(xiàn) 319
7.3.4 控件的設(shè)計(jì)與實(shí)現(xiàn) 324
7.4 lwGUI系統(tǒng)的應(yīng)用 327
7.4.1 繪圖板界面設(shè)計(jì)和功能設(shè)計(jì) 327
7.4.2 繪圖板應(yīng)用的實(shí)現(xiàn) 328
習(xí) 題 331
第8章 Android應(yīng)用程序設(shè)計(jì) 332
8.1 Android開發(fā)平臺(tái)簡介 332
8.1.1 Cortex-A處理器AM3715簡介 332
8.1.2 Android開發(fā)平臺(tái)上的資源 336
8.2 液晶屏顯示字符串“Hello World!” 337
8.2.1 第1個(gè)Android工程的建立 337
8.2.2 在液晶屏特定位置顯示“Hello World!” 339
8.3 按鍵輸入在液晶屏上顯示 341
8.4 延時(shí)1s的LED燈閃爍 342
8.4.1 LED控制 342
8.4.2 LED1控制示例程序 343
8.5 串口輸出字符串PC機(jī)超級(jí)終端顯示 347
8.5.1 Android下串口 347
8.5.2 Android串口示例程序 347
8.6 讀取SD卡圖片顯示 354
8.7 USB攝像頭視頻采集 357
8.7.1 Video4Linux2(V4L2)模塊 358
8.7.2 USB攝像頭采集圖像顯示 358
8.8 網(wǎng)口UDP數(shù)據(jù)傳輸 362
8.8.1 Android UDP傳輸過程 362
8.8.2 簡單UDP傳輸示例 363
8.9 WiFi無線信息傳輸 364
8.10 錄音和音頻混音 370
8.10.1 聲音的存儲(chǔ)及采樣 370
8.10.2 WAV音頻文件 371
8.10.3 錄音和放音 372
8.10.4 混 音 373
8.10.5 音頻混音演示軟件 374
習(xí) 題 379
參考文獻(xiàn) 380