本書由淺入深,全面、系統地介紹ARM9嵌入式開發。本書每章都提供大量有針對性的實例,供讀者實戰演練。另外,為了幫助讀者高效、直觀地學習,本書每章配有大量圖片和表格。 本書對ARM9嵌入式開發做了全面介紹,全書共23章,分為5篇。基礎篇介紹ARM9基礎知識、ARM體系結構、ARM指令集、Thumb指令集,同時也介紹S3C2440的GPIO接口、處理器控制器、UART、SPI以及ADC和觸控螢幕接口等。提高篇介紹ARM9嵌入式開發環境的建立,ARM9嵌入式Linux系統移植。其中,嵌入式開發環境的建立詳細介紹Linux作業系統開發環境的搭建和模擬軟體SkyEye環境的搭建,系統移植介紹BootLoad移植、核心移植及構建Linux檔案系統。實例篇介紹基於Qt的嵌入式GUI開發、基於ARM9與QTE4的數據採集圖形界面設計、基於ARM9及QTE4的圖像處理。
基本介紹
- 書名:ARM9嵌入式系統設計直通車
- 出版社:電子工業出版社
- 頁數:531頁
- 開本:16
- 品牌:電子工業出版社
- 作者:潘念 李立功
- 出版日期:2014年1月1日
- 語種:簡體中文
- ISBN:7121220016
基本介紹
內容簡介
為了便於讀者高效、直觀地學習本書中的內容,作者提供了對應的實例。
2.結構合理,內容全面、系統
本書詳細介紹ARM9處理器基礎知識、ARM9嵌入式系統基礎、ARM9的Linux開發環境的建立,ARM9嵌入式Linux系統移植以及ARM9嵌入式Linux套用開發實例,將實際項目開發經驗貫穿於全書,思想和內容都非常豐富。在內容的安排上,則根據讀者的學習習慣和內容的梯度合理安排,更加適合讀者學習。
3.敘述詳實,例程豐富
本書有詳細的例程,每個例子都經過精挑細選,有很強的針對性。書中的程式都有完整的代碼,而且代碼非常簡潔和高效,便於讀者學習和調試。讀者也可以直接使用這些代碼來解決自己的問題。
4.結合實際,編程技巧貫穿其中
ARM9編程非常靈活,所以本書寫作時特意給出了大量的實用編程技巧,這些技巧的靈活使用,將會讓你事半功倍。
5.語言通俗,圖文並茂
對於本書給出的大量理論知識、運行效果的圖片及表格,讀者學習起來更加形象、直觀。本書不僅注重基礎知識,而且非常注重實踐,讓讀者快速上手,迅速掌握ARM9知識。
作者簡介
圖書目錄
第1章嵌入式系統開發介紹2
1.1嵌入式系統介紹2
1.1.1嵌入式系統概念3
1.1.2重要組成部分3
1.2嵌入式系統的組成4
1.2.1通用設備接口和I/O接口6
1.2.2中間層7
1.2.3系統軟體層8
1.3嵌入式系統的優點及特點8
1.3.1嵌入式系統的優點9
1.3.2嵌入式系統的特點9
1.4嵌入式處理器10
1.4.1嵌入式微處理器10
1.4.2嵌入式微控制器11
1.4.3嵌入式DSP處理器11
1.4.4SOC片上系統11
1.5嵌入式作業系統12
1.5.1作業系統包含的功能12
1.5.2嵌入式作業系統的特點13
1.5.3嵌入式作業系統的分類14
1.5.4嵌入式技術套用及發展趨勢15
1.6嵌入式技術發展趨勢16
1.7小結17
第2章ARM處理器概述18
2.1ARM處理器介紹18
2.2ARM體系結構的版本和變數19
2.2.1ARM體系結構的版本19
2.2.2ARM體系結構的變數24
2.2.3ARM/Thumb體系結構版本命名25
2.3ARM處理器的命名規則26
2.4ARM處理器結構28
2.4.1RISC中的關鍵技術29
2.4.2ARM和Thumb狀態30
2.4.3ARM暫存器30
2.4.4ARM指令集概述31
2.4.5Thumb指令集概述31
2.5ARM處理器系列32
2.5.1ARM7系列32
2.5.2ARM9系列33
2.5.3ARM9E系列33
2.5.4ARM10E系列34
2.5.5ARM11系列35
2.5.6SecurCore系列35
2.5.7XScale系列36
2.5.8StrongARM系列37
2.5.9Cortex系列38
2.6小結39
第3章ARM9處理器與編程模型40
3.1ARM9處理器產品40
3.1.1ARM9進步之處40
3.1.2操作指令41
3.1.3ARM9產品舉例42
3.1.4ARM9E系列微處理器44
3.2ARM9編程模型45
3.2.1ARM9數據類型45
3.2.2ARM9體系結構的存儲器格式45
3.2.3ARM9處理器的工作狀態46
3.2.4ARM9處理器模式47
3.2.5ARM暫存器47
3.2.6異常51
3.3小結54
第4章ARM指令集與定址方式55
4.1指令集編碼55
4.2條件執行55
4.3指令分類及指令格式57
4.3.1數據處理指令57
4.3.2Load/Store指令61
4.3.3程式狀態暫存器與通用暫存器之間的傳送指令66
4.3.4轉移指令66
4.3.5異常中斷指令67
4.3.6協處理器指令68
4.3.7乘法指令70
4.3.8偽指令71
4.4ARM基本定址方式72
4.4.1立即定址72
4.4.2暫存器定址72
4.4.3暫存器間接定址73
4.4.4基址變址定址74
4.4.5基址加偏址定址74
4.4.6堆疊定址74
4.4.7塊複製定址75
4.4.8相對定址76
4.5小結76
第5章Thumb指令集77
5.1Thumb指令集概述77
5.2Thumb暫存器和ARM暫存器之間的關係78
5.3Thumb指令集分類介紹79
5.3.1存儲器指令79
5.3.2數據處理指令82
5.3.3分支指令86
5.3.4中斷和斷點指令88
5.4小結88
第2篇S3C2440嵌入式系統基礎
第6章GPIO接口90
6.1GPIO硬體介紹90
6.1.1GPxCON暫存器91
6.1.2GPxDAT暫存器92
6.1.3GPxUP暫存器92
6.2軟體訪問硬體92
6.2.1訪問單個引腳92
6.2.2以匯流排方式訪問硬體92
6.2.3軟體如何讀寫GPIO93
6.3LED的GPIO接口實例95
6.4小結98
第7章存儲器控制器99
7.1概述99
7.2功能描述101
7.2.1bank0匯流排寬度設定101
7.2.2nWAIT引腳操作102
7.2.3nXBREQ/nXBACK引腳操作103
7.3存儲器接口實例103
7.3.1ROM存儲器接口實例104
7.3.2SRAM存儲器接口實例105
7.3.3SDRAM存儲器接口實例106
7.3.4可程式存儲器訪問周期107
7.4存儲器控制暫存器108
7.4.1匯流排寬度和等待控制暫存器108
7.4.2bank控制暫存器109
7.4.3刷新控制暫存器111
7.4.4banksize暫存器111
7.4.5模式暫存器集暫存器112
7.5存儲器實例112
7.6小結116
第8章MMC/SD/SDIO控制器117
8.1概述117
8.2SD操作118
8.3特殊暫存器119
8.4SD實例127
8.5小結141
第9章NandFlash控制器142
9.1NandFlash介紹及其控制器使用142
9.1.1Flash142
9.1.2NandFlash的物理結構144
9.1.3NandFlash的訪問方法148
9.2S3C2440NandFlash控制器160
9.2.1操作方法概述161
9.2.2暫存器介紹161
9.3NandFlash控制器實例162
9.4小結182
第10章系統時鐘和定時器183
10.1S3C2440時鐘體系和電源管理模組183
10.1.1功能描述184
10.1.2電源管理189
10.1.3特殊暫存器195
10.2PWM及定時器200
10.2.1特點200
10.2.2脈寬調製定時器特殊暫存器206
10.3實時時鐘211
10.3.1特點211
10.3.2實時時鐘操作212
10.3.3實時時鐘特殊暫存器213
10.4看門狗定時器219
10.4.1特點219
10.4.2看門狗定時器操作219
10.4.3看門狗定時器特殊暫存器220
10.5小結222
第11章中斷控制器223
11.1概述223
11.2中斷控制器操作223
11.3中斷控制器特殊暫存器227
11.4中斷方式鍵盤掃描實例235
11.5小結238
第12章UART239
12.1概述239
12.2UART操作241
12.3特殊暫存器246
12.4UART實例252
12.5小結258
第13章串列外圍設備接口259
13.1概述259
13.1.1SPI相關概念259
13.1.2S3C2440A的SPI260
13.2SPI操作方法261
13.2.1編程步驟261
13.2.2傳輸格式262
13.3SPI特殊暫存器263
13.4SPI使用實例265
13.5小結276
第14章ADC和觸控螢幕接口277
14.1概述277
14.2特點277
14.3ADC及觸控螢幕接口操作278
14.4功能描述279
14.4.1AD轉換時間279
14.4.2觸控螢幕接口模式279
14.4.3編程細節280
14.5ADC及觸控螢幕接口特殊暫存器281
14.5.1ADC控制暫存器281
14.5.2ADC觸控螢幕控制暫存器282
14.5.3ADC開始延時暫存器283
14.5.4ADC轉換數據暫存器0283
14.5.5ADC轉換數據暫存器1284
14.5.6ADC觸控螢幕指針上下中斷檢測暫存器284
14.6ADC驅動程式及測試程式284
14.6.1三通道ADC驅動程式285
14.6.2三通道ADC採樣測試程式289
14.7小結291
第3篇建立ARM9嵌入式開發環境
第15章無作業系統的ARM9開發方法294
15.1硬體開發294
15.2軟體開發295
15.2.1軟體開發基礎295
15.2.2軟體開發方法298
15.3使用EWARM進行無作業系統開發301
15.4EWARM使用實例305
15.5小結314
第16章嵌入式Linux開發環境的搭建315
16.1嵌入式Linux概述315
16.2嵌入式Linux常用工具319
16.2.1交叉編譯工具319
16.2.2vim編輯器320
16.2.3Linux編譯器gcc及編譯工具322
16.2.4Makefile和Make命令324
16.2.5GNU調試工具326
16.2.6Linux核心編譯327
16.3建立micro2440開發板的Linux開發環境328
16.3.1Fedora9.0安裝步驟329
16.3.2解壓安裝原始碼及其他工具344
16.3.3配置網路檔案系統NFS服務348
16.4小結350
第17章SkyEye環境搭建351
17.1SkyEye概述351
17.1.1SkyEye的特點351
17.1.2SkyEye的配置352
17.1.3SkyEye的使用指南353
17.2環境搭建354
17.2.1Linux作業系統安裝和配置354
17.2.2交叉編譯環境安裝357
17.3SkyEye測試359
17.3.1SkyEye—testsuite—1.3.0_rc1測試包359
17.3.2測試U—Boot359
17.3.3測試μClinux361
17.3.4測試μClinux的網路功能364
17.3.5手工編譯μClinux核心364
17.4小結371
第4篇ARM9嵌入式Linux系統移植
第18章BootLoader移植374
18.1BootLoader簡介374
18.1.1BootLoader概述375
18.1.2BootLoader的安裝媒介375
18.1.3BootLoader支持的體系結構376
18.1.4BootLoader的啟動過程和操作模式377
18.1.5BootLoader的常見種類378
18.2U—Boot移植381
18.2.1U—Boot簡介381
18.2.2U—Boot源碼結構381
18.2.3U—Boot啟動過程382
18.2.4U—Boot的編譯過程389
18.2.5U—Boot移植391
18.2.6U—Boot移植實例391
18.2.7U—Boot常用命令394
18.2.8U—Boot命令啟動Linux核心401
18.3小結402
第19章Linux核心移植403
19.1Linux核心的基本概念403
19.1.1Linux核心版本和分類403
19.1.2Linux的體系結構406
19.2核心啟動421
19.2.1BootLoader啟動過程421
19.2.2Linux啟動過程423
19.2.3建立目標板Linux的基本步驟424
19.2.4Linux核心的配置和編譯426
19.2.5Linux核心的Kconfig及Makfile分析428
19.3Linux核心移植實例436
19.4小結443
第20章構建Linux檔案系統444
20.1Linux根檔案系統概述444
20.1.1Linux檔案系統的目錄結構444
20.1.2嵌入式Linux檔案系統的常見類型453
20.2BusyBox製作根檔案系統457
20.2.1BusyBox安裝457
20.2.2BusyBox工作原理460
20.2.3BusyBox製作檔案系統467
20.3小結468
第5篇ARM9嵌入式套用開發實例
第21章基於Qt的嵌入式GUI開發470
21.1嵌入式GUI概述470
21.1.1嵌入式GUI的發展狀況470
21.1.2基於ARM處理器的嵌入式Linux開發方法471
21.2Qt程式移植473
21.2.1Linux作業系統473
21.2.2軟體開發環境Qt4473
21.2.3軟體平台建立474
21.3計算器實例480
21.4小結491
第22章基於ARM9與QTE4的數據採集圖形界面設計492
22.1micro2440開發板概述492
22.2多通道AD驅動494
22.2.1Linux設備驅動494
22.2.2多通道AD驅動495
22.2.3AD驅動編譯進核心498
22.2.4AD採樣程式設計499
22.3圖形界面設計及移植500
22.3.1主界面設計500
22.3.2曲線繪製的設計503
22.3.3整體工作流程及程式移植504
22.3.4測試506
22.4主界面控制程式508
22.5小結515
第23章基於ARM9及QTE4的圖像處理516
23.1ARM9與圖像處理516
23.2OpenCV庫編譯及移植516
23.2.1Linux下OpenCV編譯安裝517
23.2.2ARM版OpenCV編譯安裝518
23.3在Qt軟體添加OpenCV連線庫522
23.3.1動態連線庫與靜態連線庫522
23.3.2Qt軟體添加OpenCV庫523
23.3.3OpenCV庫中的IplImage類型與Qt的QImage類型轉換524
23.4基於ARM9和OpenCV圖像邊緣提取實例529
23.5小結531