《嵌入式系統(tǒng)應(yīng)用教程》是進行嵌入式系統(tǒng)開發(fā)的入門教材。按照嵌入式系統(tǒng)學習的規(guī)律,《嵌入式系統(tǒng)應(yīng)用教程》將內(nèi)容分為嵌入式操作系統(tǒng)基礎(chǔ)、ARM體系結(jié)構(gòu)和指令系統(tǒng)、嵌入式實驗三大部分。全書理論結(jié)合實踐,用淺顯易懂的語言來解釋理論,用簡單易行的實驗來驗證理論,使讀者在掌握實際操作技能的同時加深對理論的理解。
《嵌入式系統(tǒng)應(yīng)用教程》可作為普通高等院校及高層次高等職業(yè)院校計算機類、電子類、通信類專業(yè)“嵌入式系統(tǒng)”相關(guān)課程的教材,也可作為廣大嵌入式系統(tǒng)愛好者和工程技術(shù)人員的參考用書。
《嵌入式系統(tǒng)應(yīng)用教程》為中國通信學會普通高等教育“十二五”規(guī)劃教材立項項目。
嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),軟硬件可定制,適用于不同應(yīng)用場合,對功能、可靠性、成本、體積、功耗有嚴格要求的專用計算機系統(tǒng)。它一般由嵌入式微處理器、外圍硬件設(shè)備、嵌入式操作系統(tǒng)、用戶應(yīng)用程序4個部分組成,用于實現(xiàn)對其他設(shè)備的控制、監(jiān)視或管理等功能。嵌入式系統(tǒng)已經(jīng)廣泛應(yīng)用于科學研究、工業(yè)控制、軍事技術(shù)、交通通信、醫(yī)療衛(wèi)生、消費娛樂等領(lǐng)域,人們?nèi)粘J褂玫氖謾C、PDA、汽車、智能家電、GPS等均是嵌入式系統(tǒng)的典型代表。
本書分3部分,共12章,逐步引導具有不同專業(yè)背景和基礎(chǔ)的讀者進入嵌入式系統(tǒng)開發(fā)領(lǐng)域。
第1章到第5章為第一部分。其中,第1章介紹了嵌入式系統(tǒng)的基本知識;第2章介紹了Linux系統(tǒng)在上位機中的安裝及其基本操作;第3章介紹了IAnux系統(tǒng)的常用命令和文本編輯工具:第4章介紹了嵌入式系統(tǒng)開發(fā)中經(jīng)常用于連接上位機和下位機的I,inux網(wǎng)絡(luò)服務(wù);第5章介紹了嵌入式系統(tǒng)開發(fā)中經(jīng)常用到的Linux系統(tǒng)下的C語言編譯、調(diào)試和工程管理工具。
第一部分 嵌入式操作系統(tǒng)基礎(chǔ) 1
第1章 嵌入式系統(tǒng)概論 1
1.1 嵌入式系統(tǒng)的定義 1
1.2 嵌入式系統(tǒng)的發(fā)展過程 2
1.3 嵌入式系統(tǒng)的開發(fā)流程 3
1.4 嵌入式操作系統(tǒng)介紹 5
習題 6
第2章 Linux系統(tǒng)介紹 7
2.1 Linux的特點 7
2.2 Linux的安裝 9
2.2.1 安裝方式 9
2.2.2 以虛擬機方式安裝Linux 10
2.2.3 以多操作系統(tǒng)方式安裝Linux 17
2.3 X-Window圖形界面操作 18
2.3.1 桌面組件 19
2.3.2 面板 22
2.3.3 顯示配置 22
2.3.4 常用應(yīng)用程序 23
2.4 網(wǎng)絡(luò)配置 27
2.4.1 圖形界面方式 28
2.4.2 命令行方式 29
習題 34
第3章 Linux常用命令 35
3.1 Linux文件與目錄 35
3.1.1 Linux中的文件類型 35
3.1.2 常用目錄 36
3.1.3 路徑 37
3.1.4 對文件操作的用戶分類 37
3.1.5 文件操作權(quán)限 37
3.1.6 文件名通配符 38
3.2 常用命令 38
3.2.1 文件類 38
3.2.2 權(quán)限類 52
3.2.3 磁盤類 55
3.2.4 模塊類 57
3.3 輸入輸出轉(zhuǎn)向和管道 59
3.3.1 輸入轉(zhuǎn)向 59
3.3.2 輸出轉(zhuǎn)向 59
3.3.3 管道 59
3.4 vi編輯器的使用 59
3.4.1 啟動vi編輯器 60
3.4.2 命令行狀態(tài) 60
3.4.3 編輯狀態(tài) 62
習題 62
第4章 與嵌入式系統(tǒng)開發(fā)相關(guān)的Linux服務(wù) 63
4.1 TFTP服務(wù) 63
4.1.1 檢測與安裝軟件包 63
4.1.2 服務(wù)器端設(shè)置 65
4.1.3 啟動TFTP服務(wù) 66
4.1.4 設(shè)置防火墻 67
4.1.5 TFTP服務(wù)客戶端 67
4.2 Telnet 70
4.2.1 Telnet簡介 70
4.2.2 啟動Telnet服務(wù) 70
4.2.3 測試服務(wù) 70
4.2.4 定制服務(wù) 71
4.3 NFS 72
4.3.1 NFS介紹 72
4.3.2 服務(wù)器端的配置 72
4.3.3 啟動服務(wù) 73
4.3.4 定制防火墻 73
4.3.5 使用服務(wù) 74
習題 74
第5章 Linux中的C語言編程 75
5.1 GCC 75
5.1.1 GCC介紹 75
5.1.2 GCC的使用 76
5.1.3 使用舉例 77
5.2 GDB 77
5.2.1 GDB介紹 77
5.2.2 GDB的使用 77
5.2.3 GDB的使用舉例 78
5.3 make工具 79
5.3.1 make工具介紹 79
5.3.2 makefile文件 79
5.3.3 make使用舉例 80
習題 81
第二部分 ARM體系結(jié)構(gòu)和指令系統(tǒng) 82
第6章 ARM處理器 82
6.1 ARM公司簡介 82
6.2 ARM處理器的特點及其應(yīng)用領(lǐng)域 83
6.3 ARM ISA概述 84
6.4 ARM處理器系列 88
6.4.1 ARM7系列 89
6.4.2 ARM9系列 90
6.4.3 ARM9E系列 90
6.4.4 ARM10E系列 91
6.4.5 ARM11系列 91
6.4.6 Cortex系列 92
6.4.7 SecurCore系列 93
6.5 ARM處理器編程模型 94
6.5.1 數(shù)據(jù)類型 94
6.5.2 處理器模式 94
6.5.3 寄存器組織 95
6.5.4 異常處理機制 98
6.5.5 存儲器組織結(jié)構(gòu) 99
習題 100
第7章 ARM指令集 101
7.1 條件執(zhí)行 101
7.2 操作數(shù)預處理 103
7.3 運算類指令 107
7.4 控制類指令 119
7.5 傳送類指令 126
7.6 Thumb指令集概述 133
習題 133
第8章 ARM匯編語言程序設(shè)計 134
8.1 用ADS調(diào)試ARM匯編語言程序 134
8.1.1 編輯ARM匯編語言源程序 135
8.1.2 在命令行方式下調(diào)試 136
8.1.3 在IDE環(huán)境下調(diào)試 136
8.2 ARM匯編語言程序基本結(jié)構(gòu) 140
8.2.1 ARM匯編語言語句格式 140
8.2.2 ARM匯編語言程序格式 141
8.3 ARM匯編語言程序中的符號和表達式 143
8.3.1 ARM匯編語言中的符號 143
8.3.2 ARM匯編語言中的表達式 144
8.4 ARM匯編語言偽操作 148
8.4.1 符號定義偽操作 148
8.4.2 數(shù)據(jù)定義偽操作 150
8.4.3 雜項偽操作 154
8.4.4 匯編控制偽操作 160
8.4.5 信息報告?zhèn)尾僮?nbsp; 161
8.4.6 框架描述偽操作 162
8.5 ARM匯編語言程序偽指令 163
8.5.1 ADR 163
8.5.2 ADRL 164
8.5.3 LDR 165
8.6 ARM匯編語言程序宏指令 167
8.7 ARM匯編語言程序子程序 169
8.8 GNU ARM匯編簡介 170
8.8.1 GNU ARM匯編語言程序的基本結(jié)構(gòu)和程序運行環(huán)境 170
8.8.2 GNU ARM匯編語言偽操作 171
8.8.3 GNU ARM匯編語言其他主要操作符 172
習題 172
第9章 C語言與ARM匯編語言的混合編程 173
9.1 ATPCS概述 173
9.1.1 寄存器的使用規(guī)則 174
9.1.2 數(shù)據(jù)棧使用規(guī)則 174
9.1.3 參數(shù)傳遞規(guī)則 175
9.2 使用內(nèi)嵌匯編器 175
9.2.1 內(nèi)嵌匯編的語法格式 176
9.2.2 內(nèi)嵌匯編指令的用法 176
9.2.3 內(nèi)嵌匯編指令應(yīng)用舉例 177
9.3 從匯編代碼中訪問C程序全局變量 180
9.4 ARM匯編程序與C程序的相互調(diào)用 181
9.4.1 ARM匯編程序調(diào)用C程序 181
9.4.2 C程序調(diào)用ARM匯編程序 183
9.5 C語言與ARM匯編混合編程的實例 184
9.5.1 安裝UArmJtag 184
9.5.2 建立工程 185
9.5.3 編譯鏈接工程 189
9.5.4 調(diào)試程序 190
習題 191
第三部分 嵌入式實驗 192
第10章 建立嵌入式系統(tǒng)開發(fā)環(huán)境 192
10.1 認識博創(chuàng)經(jīng)典UP-TECH-S2410/P270-DVP實驗箱 192
10.2 建立開發(fā)環(huán)境 193
10.2.1 實驗目的 193
10.2.2 實驗設(shè)備 193
10.2.3 實驗內(nèi)容 193
10.2.4 實驗步驟 194
10.2.5 習題 195
10.3 給下位機燒寫軟件系統(tǒng) 196
10.3.1 實驗目的 196
10.3.2 實驗設(shè)備 196
10.3.3 實驗內(nèi)容 196
10.3.4 實驗步驟 196
10.3.5 習題 199
第11章 基礎(chǔ)實驗 200
11.1 熟悉Linux開發(fā)環(huán)境 200
11.1.1 實驗目的 200
11.1.2 實驗設(shè)備 200
11.1.3 實驗內(nèi)容 200
11.1.4 實驗步驟 200
11.1.5 習題 202
11.2 多線程應(yīng)用程序設(shè)計 202
11.2.1 實驗目的 202
11.2.2 實驗設(shè)備 203
11.2.3 實驗內(nèi)容 203
11.2.4 多線程程序設(shè)計 203
11.2.5 實驗步驟 208
11.2.6 習題 209
11.3 串行端口程序設(shè)計 209
11.3.1 實驗目的 209
11.3.2 實驗設(shè)備 209
11.3.3 實驗內(nèi)容 209
11.3.4 實驗原理 209
11.3.5 實驗步驟 216
11.3.6 習題 217
11.4 A/D接口實驗 217
11.4.1 實驗目的 217
11.4.2 實驗設(shè)備 217
11.4.3 實驗內(nèi)容 217
11.4.4 實驗原理 218
11.4.5 實驗步驟 225
11.4.6 習題 225
11.5 D/A接口實驗 226
11.5.1 實驗目的 226
11.5.2 實驗設(shè)備 226
11.5.3 實驗內(nèi)容 226
11.5.4 實驗原理 226
11.5.5 實驗步驟 229
11.5.6 習題 229
11.6 CAN總線通信實驗 230
11.6.1 實驗目的 230
11.6.2 實驗設(shè)備 230
11.6.3 實驗內(nèi)容 230
11.6.4 實驗原理 230
11.6.5 實驗步驟 235
11.6.6 習題 236
11.7 RS-485通信實驗 237
11.7.1 實驗目的 237
11.7.2 實驗設(shè)備 237
11.7.3 實驗內(nèi)容 237
11.7.4 實驗原理 237
11.7.5 實驗步驟 241
11.7.6 習題 241
11.8 直流電動機實驗 242
11.8.1 實驗目的 242
11.8.2 實驗設(shè)備 242
11.8.3 實驗內(nèi)容 242
11.8.4 實驗原理 242
11.8.5 實驗步驟 247
11.8.6 習題 248
11.9 7段LED和點陣式LED實驗 248
11.9.1 實驗目的 248
11.9.2 實驗設(shè)備 248
11.9.3 實驗內(nèi)容 248
11.9.4 實驗原理 249
11.9.5 實驗步驟 252
11.9.6 習題 252
第12章 擴展實驗 253
12.1 小鍵盤實驗 253
12.1.1 實驗目的 253
12.1.2 實驗設(shè)備 253
12.1.3 實驗內(nèi)容 253
12.1.4 實驗原理 253
12.1.5 實驗步驟 257
12.1.6 習題 257
12.2 嵌入式Web服務(wù)器 258
12.2.1 實驗目的 258
12.2.2 實驗設(shè)備 258
12.2.3 實驗內(nèi)容 258
12.2.4 實驗原理 258
12.2.5 實驗步驟 264
12.2.6 習題 264
12.3 利用GDBServer在下位機中調(diào)試執(zhí)行程序 265
12.3.1 實驗目的 265
12.3.2 實驗設(shè)備 265
12.3.3 實驗內(nèi)容 265
12.3.4 實驗步驟 265
12.3.5 習題 266
12.4 設(shè)備驅(qū)動程序設(shè)計實驗 267
12.4.1 實驗目的 267
12.4.2 實驗設(shè)備 267
12.4.3 實驗內(nèi)容 267
12.4.4 實驗原理 267
12.4.5 實驗步驟 279
12.4.6 習題 279
12.5 字符設(shè)備驅(qū)動實例——觸摸屏驅(qū)動實驗 280
12.5.1 實驗目的 280
12.5.2 實驗設(shè)備 280
12.5.3 實驗內(nèi)容 280
12.5.4 實驗原理 280
12.5.5 實驗步驟 290
12.5.6 習題 290
12.6 LCD驅(qū)動控制實驗 291
12.6.1 實驗目的 291
12.6.2 實驗設(shè)備 291
12.6.3 實驗內(nèi)容 291
12.6.4 實驗原理 291
12.6.5 實驗步驟 302
12.6.6 習題 303
12.7 音頻驅(qū)動及應(yīng)用實驗 303
12.7.1 實驗目的 303
12.7.2 實驗設(shè)備 303
12.7.3 實驗內(nèi)容 303
12.7.4 實驗原理 303
12.7.5 實驗步驟 313
12.7.6 習題 313
12.8 SD卡使用實驗 313
12.8.1 實驗目的 313
12.8.2 實驗設(shè)備 313
12.8.3 實驗內(nèi)容 313
12.8.4 實驗原理 314
12.8.5 實驗步驟 327
12.8.6 習題 328
參考文獻 329
命令是Linux系統(tǒng)的重要內(nèi)容,Linux系統(tǒng)的所有功能都通過命令執(zhí)行。在實際使用中,為了減少系統(tǒng)的開銷,經(jīng)常不使用圖形界面,此時,對系統(tǒng)的所有操作都需要以命令方式來執(zhí)行。在嵌入式系統(tǒng)開發(fā)過程中,由于目標機的性能和配置較低,因此,一般情況下目標機僅具有命令窗口而沒有圖形界面,對目標機的所有操作都通過命令實現(xiàn)。
Linux系統(tǒng)具有非常豐富的命令,絕大多數(shù)命令具有大量的參數(shù),要對這些命令進行詳細描述需要大量篇幅,在此,僅對嵌入式系統(tǒng)開發(fā)過程中,可能用到的命令進行簡單介紹,其他命令請參考相關(guān)資料。使用命令時,在命令后面加參數(shù)“-help”或者用“man”命令可以取得命令的詳細用法。
本章首先介紹Linux系統(tǒng)中常見文件類型和常用目錄,文件通配符用法、文件操作權(quán)限;然后,以實例方式示范常用命令的用法和參數(shù)選擇,簡單介紹輸入輸出轉(zhuǎn)向、管道功能;最后,對嵌入式系統(tǒng)開發(fā)過程中常用的vi編輯器進行較詳細的講解。