圖書簡(jiǎn)介:
ARM處理器是一種16/32位的高性能、低成本、低功耗的嵌入式RISC微處理器,由ARM公司設(shè)計(jì),然后授權(quán)各半導(dǎo)體廠商生產(chǎn),它目前已經(jīng)成為應(yīng)用最為廣泛的嵌入式處理器。
本書分為14章,對(duì)ARM處理器的體系結(jié)構(gòu)、指令系統(tǒng)以及嵌入式系統(tǒng)移植、設(shè)備驅(qū)動(dòng)程序等做了比較全面的講解。其中包括ARM系列處理器介紹、ARM編程模型、嵌入式開發(fā)編譯工具的使用,并在此基礎(chǔ)上介紹了一些典型的基于ARM系統(tǒng)的嵌入式應(yīng)用系統(tǒng)程序設(shè)計(jì)。通過閱讀本書,可以使讀者掌握開發(fā)基于ARM的應(yīng)用系統(tǒng)的各方面知識(shí)。
對(duì)于ARM指令系統(tǒng),本書給出了詳細(xì)的介紹,希望該部分能作為編寫ARM匯編程序的開發(fā)人員的參考資料,提高開發(fā)人員的工作效率。本書既可以用作學(xué)習(xí)ARM技術(shù)的培訓(xùn)材料,也可以供嵌入式系統(tǒng)開發(fā)人員作為參考資料手冊(cè)。
前 言
1. 為何編寫本書
ARM(Advanced RISC Machines Ltd.)公司自1990年11月正式成立以來,在32RISC (Reduced Instruction Set Computer,精簡(jiǎn)指令集計(jì)算機(jī))CPU開發(fā)領(lǐng)域中不斷取得突破。ARM作為IP(Intelligence Property,知識(shí)產(chǎn)權(quán))供應(yīng)商,依靠轉(zhuǎn)讓許可,由合作伙伴公司來生成各具特色的芯片。其設(shè)計(jì)的芯核具有功耗低、成本低等顯著優(yōu)點(diǎn),獲得眾多的半導(dǎo)體廠家和整機(jī)廠商的大力支持。世界上幾乎所有的主要半導(dǎo)體廠商都生產(chǎn)基于ARM體系結(jié)構(gòu)的通用芯片,或在其專用芯片中嵌入ARM的相關(guān)技術(shù)。
現(xiàn)在,嵌入式技術(shù)無處不在,而ARM幾乎成為嵌入式技術(shù)的代名詞。目前ARM芯片廣泛應(yīng)用于無線產(chǎn)品、PDA、GPS、網(wǎng)絡(luò)、消費(fèi)電子產(chǎn)品、STB及智能卡。鑒于ARM微處理器在國(guó)內(nèi)的逐步推廣應(yīng)用,很多大學(xué)已開設(shè)了基于ARM的32位微處理器的相關(guān)課程,包括計(jì)算機(jī)組成原理、計(jì)算機(jī)體系結(jié)構(gòu)、計(jì)算機(jī)操作系統(tǒng),甚至包括電子技術(shù)。盡管已經(jīng)具備這些嵌入式系統(tǒng)的基礎(chǔ)知識(shí),但是多數(shù)大學(xué)畢業(yè)生還是不清楚到底如何開發(fā)嵌入式系統(tǒng)。編寫本書的目的,就是闡述嵌入式體系結(jié)構(gòu)的組成部分及其編程方式,從概念上和實(shí)踐上說明嵌入式系統(tǒng)的設(shè)計(jì)開發(fā)過程。這本書可以幫助具備計(jì)算機(jī)基礎(chǔ)知識(shí)的開發(fā)者迅速進(jìn)入嵌入式系統(tǒng)的開發(fā)領(lǐng)域。希望本書能夠幫助讀者更好地理解嵌入式體系結(jié)構(gòu),并且參與到嵌入式系統(tǒng)的開發(fā)中來。
2. 本書內(nèi)容特色
(1) 內(nèi)容新穎、知識(shí)全面
全書以嵌入式系統(tǒng)的基礎(chǔ)知識(shí)開始,逐漸引導(dǎo)讀者了解嵌入式系統(tǒng)和嵌入式處理器的基本結(jié)構(gòu)及嵌入式系統(tǒng)的設(shè)計(jì)方法,詳細(xì)講述了嵌入式系統(tǒng)開發(fā)的相關(guān)知識(shí),重點(diǎn)介紹了基于嵌入式Linux的設(shè)備驅(qū)動(dòng)程序的開發(fā),以及嵌入式操作系統(tǒng)移植等方面的內(nèi)容,做到了知識(shí)面的全覆蓋。
本書內(nèi)容由淺入深,從基礎(chǔ)知識(shí)講起,使初學(xué)者對(duì)ARM體系有總體的了解,然后通過具體的編程實(shí)例來進(jìn)行嵌入式設(shè)備驅(qū)動(dòng)開發(fā)。
(2) 層次分明,學(xué)習(xí)輕松
本書結(jié)合作者多年講授嵌入式課程及參與科研項(xiàng)目的經(jīng)驗(yàn),借鑒了多位同行教授的提示,從嵌入式系統(tǒng)的基本知識(shí)到系統(tǒng)的開發(fā)流程,最后是實(shí)例編程及嵌入式操作系統(tǒng)的移植等內(nèi)容,全面介紹了嵌入式系統(tǒng)的結(jié)構(gòu)和編程方面的知識(shí),內(nèi)容翔實(shí)、層次分明,為嵌入式系統(tǒng)的開發(fā)者提供了很好的參考。
(3) 通俗易懂,針對(duì)性強(qiáng)
本書適合剛剛踏入嵌入式領(lǐng)域的初學(xué)者,同時(shí)也適合想要進(jìn)一步掌握嵌入式系統(tǒng)開發(fā)高級(jí)技巧的讀者。本書并沒有運(yùn)用過多的專業(yè)術(shù)語(yǔ),即使有也都做了具體的名詞解釋,并且采用通俗易懂的文字、清晰形象的圖片,便于讀者理解和閱讀,從而幫助讀者快速掌握嵌入式體系結(jié)構(gòu)的基本知識(shí)及系統(tǒng)開發(fā)的基本方法。
3. 適合的讀者群
本書的主要目的是向社會(huì)推廣與嵌入式系統(tǒng)有關(guān)的知識(shí)和技術(shù),內(nèi)容編排是由淺入深的,適合不同程度的讀者。入門的讀者可以很快地掌握一些常用的技術(shù)并積累開發(fā)經(jīng)驗(yàn);專業(yè)讀者則可以從對(duì)某一嵌入式設(shè)備的驅(qū)動(dòng)程序開發(fā)中,掌握相應(yīng)的開發(fā)技術(shù)和技巧。
本書既可以作為高等院校的教科書使用,又可以作為ARM技術(shù)人員的培訓(xùn)資料使用,也可以供嵌入式系統(tǒng)開發(fā)人員作為參考資料手冊(cè)。
編 者
目 錄第1章 嵌入式系統(tǒng)基礎(chǔ) 1
1.1 嵌入式系統(tǒng)簡(jiǎn)介 2
1.1.1 嵌入式系統(tǒng)的概念 2
1.1.2 嵌入式系統(tǒng)的特點(diǎn) 4
1.1.3 嵌入式系統(tǒng)的分類 4
1.2 嵌入式系統(tǒng)的研究現(xiàn)狀和發(fā)展趨勢(shì) 6
1.2.1 研究現(xiàn)狀 6
1.2.2 發(fā)展趨勢(shì) 7
1.3 典型嵌入式操作系統(tǒng) 8
1.3.1 嵌入式操作系統(tǒng)的特點(diǎn) 8
1.3.2 幾種典型的嵌入式操作系統(tǒng) 8
1.3.3 嵌入式系統(tǒng)與PC機(jī) 10
1.3.4 嵌入式系統(tǒng)與單片機(jī) 11
1.3.5 嵌入式Linux系統(tǒng)的特點(diǎn) 11
1.4 課后練習(xí) 12
第2章 嵌入式處理器介紹 13
2.1 嵌入式處理器概述 14
2.1.1 嵌入式處理器簡(jiǎn)介 14
2.1.2 嵌入式處理器的特點(diǎn) 14
2.1.3 嵌入式處理器的分類 15
2.1.4 嵌入式處理器的體系結(jié)構(gòu) 17
2.1.5 嵌入式處理器的存儲(chǔ)體系結(jié)構(gòu) 24
2.1.6 典型嵌入式處理器 26
2.2 ARM系列處理器 28
2.2.1 ARM簡(jiǎn)介 29
2.2.2 ARM技術(shù)的應(yīng)用領(lǐng)域 29
2.2.3 ARM處理器系列 29
2.2.4 ARM處理器的工作狀態(tài) 35
2.2.5 ARM處理器運(yùn)行模式 36
2.2.6 ARM處理器的存儲(chǔ)格式 37
2.2.7 ARM狀態(tài)下的寄存器結(jié)構(gòu) 38
2.2.8 ARM異常中斷 42
2.2.9 ARM處理器的應(yīng)用選型 46
2.3 ARM指令集 47
2.3.1 ARM指令的一般格式 47
2.3.2 ARM存儲(chǔ)器訪問指令 49
2.3.3 跳轉(zhuǎn)指令 54
2.3.4 數(shù)據(jù)處理指令 55
2.3.5 程序狀態(tài)寄存器(PSR)傳輸指令 61
2.3.6 協(xié)處理器指令 62
2.3.7 ARM雜項(xiàng)指令 64
2.3.8 ARM偽指令 67
2.4 Thumb指令集 69
2.5 課后練習(xí) 70
第3章 嵌入式系統(tǒng)的設(shè)計(jì)方法 73
3.1 嵌入式系統(tǒng)設(shè)計(jì)概述 74
3.1.1 嵌入式系統(tǒng)的總體結(jié)構(gòu) 74
3.1.2 嵌入式系統(tǒng)設(shè)計(jì)內(nèi)容 76
3.1.3 嵌入式系統(tǒng)設(shè)計(jì)的特點(diǎn) 76
3.1.4 嵌入式系統(tǒng)設(shè)計(jì)方法的分類 77
3.2 嵌入式系統(tǒng)設(shè)計(jì)流程 79
3.3 課后練習(xí) 82
第4章 ARM編程模型的工作原理 85
4.1 系統(tǒng)設(shè)計(jì)概述 86
4.1.1 嵌入式系統(tǒng)開發(fā)基礎(chǔ) 86
4.1.2 嵌入式系統(tǒng)選型原則 87
4.2 ARM920T簡(jiǎn)介 88
4.3 S3C2410X開發(fā)板 89
4.3.1 S3C2410處理器的特點(diǎn) 91
4.3.2 ARM片上總線 95
4.3.3 S3C2410的處理器中斷 97
4.3.4 S3C2410處理器片上資源的定義和使用 103
4.3.5 編程參考軟件包2410TEST 106
4.4 課后練習(xí) 109
第5章 BootLoader 111
5.1 BootLoader介紹 112
5.1.1 BootLoader的基本概念 113
5.1.2 BootLoader所支持的CPU和嵌入式體系結(jié)構(gòu) 114
5.1.3 BootLoader的安裝媒介 115
5.1.4 BootLoader的概念擴(kuò)展 115
5.1.5 ARM BootLoader的共性 115
5.1.6 BootLoader移植的必要性 117
5.1.7 BootLoader的燒錄和存儲(chǔ) 117
5.1.8 BootLoader與主機(jī)間文件傳輸所用的通信設(shè)備及協(xié)議 117
5.1.9 BootLoader的通用執(zhí)行流程 117
5.2 常用的嵌入式Linux BootLoader 118
5.2.1 U-Boot 118
5.2.2 VIVI 119
5.2.3 Blob 120
5.2.4 RedBoot 120
5.2.5 ARMBoot 120
5.2.6 DIY 120
5.3 U-Boot基礎(chǔ) 121
5.3.1 U-Boot源代碼的目錄結(jié)構(gòu) 121
5.3.2 U-Boot支持的主要功能 123
5.3.3 U-Boot命令介紹及環(huán)境變量 123
5.4 U-Boot的啟動(dòng)過程 124
5.5 U-Boot的編譯過程 128
5.6 U-Boot移植的關(guān)鍵技術(shù) 131
5.7 課后練習(xí) 132
第6章 Linux交叉編譯環(huán)境 133
6.1 交叉編譯環(huán)境簡(jiǎn)介 134
6.1.1 交叉編譯環(huán)境概念模型 134
6.1.2 目標(biāo)板與宿主機(jī)之間的連接 135
6.1.3 文件傳輸方式 137
6.1.4 網(wǎng)絡(luò)文件系統(tǒng) 138
6.2 交叉編譯工具簡(jiǎn)介 138
6.2.1 gcc編譯器 138
6.2.2 Binutils工具包 140
6.2.3 GNU make 140
6.2.4 glibc庫(kù) 142
6.2.5 gdb調(diào)試工具 142
6.2.6 交叉編譯環(huán)境的建立 144
6.3 主機(jī)開發(fā)環(huán)境配置 148
6.3.1 配置主機(jī)服務(wù) 148
6.3.2 串口控制臺(tái)工具 150
6.3.3 配置DHCP服務(wù) 152
6.3.4 配置TFTP服務(wù) 154
6.3.5 配置NFS服務(wù) 156
6.4 課后練習(xí) 158
第7章 嵌入式開發(fā)及調(diào)試 159
7.1 嵌入式系統(tǒng)的開發(fā)環(huán)境 160
7.1.1 開發(fā)環(huán)境簡(jiǎn)介 160
7.1.2 ADS集成開發(fā)環(huán)境的使用 161
7.2 嵌入式系統(tǒng)調(diào)試方法 174
7.2.1 基于主機(jī)的調(diào)試 176
7.2.2 遠(yuǎn)程調(diào)試器與調(diào)試內(nèi)核 176
7.2.3 在線仿真ICE 177
7.2.4 BDM 178
7.2.5 軟件仿真器 179
7.3 ROM仿真器 179
7.4 JTAG接口 180
7.5 課后練習(xí) 181
第8章 簡(jiǎn)單設(shè)備驅(qū)動(dòng)程序 183
8.1 設(shè)備驅(qū)動(dòng)概述 184
8.1.1 基本概念 185
8.1.2 數(shù)據(jù)結(jié)構(gòu) 187
8.1.3 文件結(jié)構(gòu) 191
8.2 設(shè)備驅(qū)動(dòng)基礎(chǔ) 192
8.2.1 設(shè)備驅(qū)動(dòng)程序結(jié)構(gòu) 194
8.2.2 設(shè)備驅(qū)動(dòng)程序接口 195
8.3 設(shè)備驅(qū)動(dòng)模塊化編程 196
8.3.1 模塊化驅(qū)動(dòng)程序概述 197
8.3.2 設(shè)備驅(qū)動(dòng)模塊化編程的一般框架 200
8.4 PCI總線 201
8.4.1 PCI設(shè)備驅(qū)動(dòng)概述 201
8.4.2 PCI驅(qū)動(dòng)程序的編程實(shí)現(xiàn) 203
8.5 課后練習(xí) 209
第9章 網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序開發(fā) 211
9.1 網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序簡(jiǎn)介 212
9.1.1 網(wǎng)絡(luò)設(shè)備概述 212
9.1.2 重要數(shù)據(jù)結(jié)構(gòu)——struct device 214
9.2 以太網(wǎng)控制器 218
9.3 網(wǎng)絡(luò)設(shè)備的初始化 220
9.3.1 模塊初始化模式分析 221
9.3.2 啟動(dòng)初始化模式分析 226
9.4 網(wǎng)絡(luò)設(shè)備的打開和關(guān)閉 230
9.5 數(shù)據(jù)包的傳輸和接收 232
9.5.1 Socket緩沖區(qū)及相關(guān)操作 233
9.5.2 數(shù)據(jù)包的傳輸 235
9.5.3 數(shù)據(jù)包的接收 236
9.6 網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序?qū)嵗?nbsp;238
9.7 TCP編程實(shí)例 244
9.8 課后練習(xí) 247
第10章 音頻設(shè)備驅(qū)動(dòng)程序開發(fā) 249
10.1 音頻信號(hào)基礎(chǔ) 250
10.1.1 音頻信號(hào) 250
10.1.2 模擬音頻的數(shù)字化過程 250
10.1.3 音頻文件的格式 252
10.1.4 WAV文件格式剖析 253
10.2 基于IIS接口的音頻系統(tǒng) 255
10.2.1 IIS接口總線控制原理 255
10.2.2 音頻接口設(shè)計(jì) 257
10.3 音頻設(shè)備程序的實(shí)現(xiàn) 263
10.3.1 音頻設(shè)備編程接口 263
10.3.2 音頻設(shè)備文件 266
10.3.3 音頻設(shè)備編程設(shè)計(jì) 268
10.4 課后練習(xí) 274
第11章 USB設(shè)備驅(qū)動(dòng)程序開發(fā) 275
11.1 USB驅(qū)動(dòng)程序簡(jiǎn)介 276
11.1.1 USB總線概述 276
11.1.2 USB設(shè)備的基礎(chǔ)構(gòu)成 277
11.1.3 USB中的描述符 279
11.1.4 USB的數(shù)據(jù)傳輸 284
11.1.5 USB文件系統(tǒng)(usbfs) 284
11.1.6 Libusb介紹 284
11.2 Linux下USB系統(tǒng)文件節(jié)點(diǎn) 286
11.3 USB主機(jī)驅(qū)動(dòng)結(jié)構(gòu) 287
11.4 USB驅(qū)動(dòng)數(shù)據(jù)結(jié)構(gòu) 296
11.4.1 USB驅(qū)動(dòng)的整體構(gòu)架 296
11.4.2 USB驅(qū)動(dòng)中主要的 數(shù)據(jù)結(jié)構(gòu) 297
11.4.3 驅(qū)動(dòng)程序相關(guān)函數(shù) 298
11.5 USB主機(jī)驅(qū)動(dòng)在S3C2410X平臺(tái)的實(shí)現(xiàn) 304
11.5.1 S3C2410X簡(jiǎn)介 304
11.5.2 USB主機(jī)控制器 305
11.5.3 USB驅(qū)動(dòng)程序的移植 305
11.6 課后練習(xí) 306
第12章 ?C/OS-Ⅱ在ARM平臺(tái)的移植 307
12.1 實(shí)時(shí)操作系統(tǒng)簡(jiǎn)介 308
12.1.1 實(shí)時(shí)操作系統(tǒng)的基本概念 308
12.1.2 幾種主要的實(shí)時(shí)操作系統(tǒng) 311
12.1.3 實(shí)時(shí)操作系統(tǒng)的主要性能 312
12.2 ?C/OS-II操作系統(tǒng) 317
12.2.1 ?C/OS-II操作系統(tǒng)概述 317
12.2.2 ?C/OS-II系統(tǒng)內(nèi)核 321
12.3 eCos簡(jiǎn)介及移植介紹分析 333
12.3.1 eCos的體系結(jié)構(gòu)及可配置性 333
12.3.2 eCos內(nèi)核的移植 335
12.4 課后練習(xí) 337
第13章 Linux在ARM平臺(tái)的移植 339
13.1 Linux概述 340
13.1.1 Linux操作系統(tǒng)的產(chǎn)生及發(fā)展 340
13.1.2 Linux操作系統(tǒng)的特點(diǎn)和組成 342
13.2 Linux內(nèi)核結(jié)構(gòu) 344
13.2.1 Linux內(nèi)核的主要模塊 344
13.2.2 Linux的文件系統(tǒng)基礎(chǔ) 346
13.2.3 文件系統(tǒng)的掛載 349
13.3 Linux操作系統(tǒng)移植及根文件系統(tǒng) 350
13.3.1 Linux內(nèi)核移植 350
13.3.2 Linux根文件系統(tǒng) 361
13.4 課后練習(xí) 364
第14章 圖形用戶界面實(shí)例 367
14.1 圖形用戶界面 368
14.1.1 GUI簡(jiǎn)介 368
14.1.2 GUI特征 368
14.1.3 GUI架構(gòu) 369
14.2 嵌入式Linux圖形用戶界面簡(jiǎn)介 370
14.2.1 Micro Windows 371
14.2.2 OpenGUI 371
14.2.3 Qt/Embedded 372
14.2.4 MiniGUI 372
14.3 Qt/Embedded嵌入式圖形開發(fā) 373
14.3.1 Qt/Embedded簡(jiǎn)介 373
14.3.2 Qt/Embedded信號(hào)和插槽機(jī)制 378
14.3.3 Qt/Embedded實(shí)現(xiàn)技術(shù)分析 382
14.3.4 Qt/Embedded圖形引擎 實(shí)現(xiàn)基礎(chǔ) 382
14.3.5 Qt/Embedded事件驅(qū)動(dòng)基礎(chǔ) 383
14.3.6 Qt/Embedded應(yīng)用程序的開發(fā)流程 384
14.3.7 Qt/Embedded移植與應(yīng)用 384
14.3.8 Qt/Embedded窗口部件 387
14.4 課后練習(xí) 390
習(xí)題答案 393