近年來,國內教學科研單位的嵌入式教學實驗平臺以及開發(fā)平臺使用基于ARM核的S3C2440A、S3C2410A、S3C44B0X微處理器芯片較為廣泛。本書以這三款微處理器為例,系統(tǒng)全面地描述微處理器組成及程序員模型,ARM指令系統(tǒng),匯編語言特性及編程基礎,主存儲器及Nand Flash存儲器組成,芯片內部各控制器、接口、外設的組成和原理,以及與開發(fā)應用相關的技術。另外,通過舉例描述這三款微處理器與片外配套芯片或設備的接口技術及應用。
本書從使用嵌入式微處理器角度出發(fā),注重實現(xiàn)技術,內容新穎,實用性強,書中有大量的圖、表、例和程序,每章都附有習題,便于讀者學習。
本書適用于高等院校嵌入式系統(tǒng)、計算機等專業(yè)的本科生作為嵌入式系統(tǒng)組成原理及應用、嵌入式系統(tǒng)原理及接口技術課程的教材使用,也可作為研究生的參考教材,還可作為培訓教材或研發(fā)人員的參考書使用。
從使用嵌入式微處理器芯片的角度出發(fā),系統(tǒng)全面地描述了基于ARM核的S3C2440A/S3C2410A/S3C44B0X三款微處理器芯片內部組成,片內各控制器、接口、設備組成及工作原理,片外配套芯片、設備的接口技術及應用。 詳細描述了系統(tǒng)程序員能夠看到的微處理器組成及程序員模型,ARM指令系統(tǒng),匯編語言特性及編程基礎。 配備大量的圖、表、例、程序和習題,便于讀者學習。 適合用做高等院校嵌入式系統(tǒng)、計算機等專業(yè)作為嵌入式系統(tǒng)組成原理及應用、嵌入式系統(tǒng)原理及接口技術課程的教材,也可供準備從事或正在從事嵌入式硬件產品設計開發(fā)、系統(tǒng)軟件開發(fā)、使用到微處理器片內的接口/控制器/總線/設備的應用程序開發(fā)的研發(fā)人員參考。
前言
Foreword基于ARM7、ARM9核的微處理器芯片目前仍然是市場上出貨量最大的芯片,其主要原因是這些芯片中使用的技術已經(jīng)經(jīng)過市場上大量產品的驗證。由于這些微處理器芯片在市場上廣泛地使用,因此可以確保產品設計者能夠獲得廣泛的技術支持,從而最大限度地減少開發(fā)過程中出現(xiàn)的問題并縮短產品上市時間。這些芯片出貨量大的另外一個原因是嵌入式系統(tǒng)往往嵌入在機械設備中,基于成本考慮,對嵌入式微處理器的要求不是速度越快越好,而是夠用就行。此外,基于ARM7、ARM9核的微處理器是學習更高檔次嵌入式微處理器的基礎和入門,國內也有大量的教學實驗及開發(fā)平臺。本書主要內容可以分為三部分。第1章描述了嵌入式系統(tǒng)組成,并對嵌入式微處理器、操作系統(tǒng)作了簡介。第2~9章以S3C2440A、S3C2410A、S3C44B0X微處理器為例,系統(tǒng)、全面地描述微處理器的組成及程序員模型,ARM指令系統(tǒng),匯編語言特性及編程基礎,主存儲器及Nand Flash存儲器組成,時鐘與電源管理、DMAC及總線主設備優(yōu)先權,GPIO端口及中斷控制器,脈寬調制定時器、實時時鐘及看門狗定時器,ADC與觸摸屏接口、片外DAC連接舉例,包括它們的特殊功能寄存器含義及編程舉例。第10、11章描述S3C2440A、S3C2410A、S3C44B0X片內UART(通用異步收發(fā)器)、IIC(內部集成電路總線)、IIS(集成電路內部聲音總線)、SPI(串行外設接口)、SIO(串行輸入/輸出)、MMC/SD/SDIO主控制器、LCD控制器、USB主控制器及設備控制器、CAMERA接口、AC97控制器,包括它們的組成和原理。建議在開設計算機組成原理或微機接口技術、C語言課程以后開設本課程。感謝本書編寫、出版過程中給予我?guī)椭拿恳粋人,尤其感謝李惠林女士,在稿件交付出版社前,承擔了書稿的全部錄入、校對、編排工作,并在統(tǒng)稿過程中提出了許多修改意見;感謝清華大學出版社袁勤勇主任在書名確定、稿件篇幅等方面給出的修改意見。在本書的編寫過程中,除了書末列出的參考文獻外,還參考和引用了一些公司的公開技術資料、隨機資料和程序,如ARM公司、三星公司和國內的博創(chuàng)公司。在此向這些文獻的撰寫者表示感謝。另外,書中一些名詞術語在不引起讀者誤讀的情況下,沒有強行統(tǒng)一,因為在不同的參考文獻中,例如標準(規(guī)范、協(xié)議)、微處理器廠商、配套芯片廠商的資料中,同一個名詞術語可能會有不同的寫法。雖然作者試圖通過多次核對參考文獻的內容,來減少書中可能會出現(xiàn)的錯誤或作者自己理解、描述不準確的地方,但由于作者水平限制,書中難免存在疏漏和不當之處,敬請廣大專家和讀者批評指正。聯(lián)系郵箱: cslyw@imu.edu.cn。
劉彥文2016年7月◆基于ARM的嵌入式系統(tǒng)原理及應用
····························································
目錄Contents第1章嵌入式系統(tǒng)組成簡介1
1.1嵌入式系統(tǒng)定義、發(fā)展歷程、應用舉例、主要特點1
1.1.1嵌入式系統(tǒng)定義1
1.1.2嵌入式系統(tǒng)發(fā)展歷程1
1.1.3嵌入式系統(tǒng)應用舉例2
1.1.4嵌入式系統(tǒng)主要特點3
1.2嵌入式系統(tǒng)硬件組成及軟件組成舉例4
1.2.1嵌入式系統(tǒng)硬件組成舉例4
1.2.2嵌入式系統(tǒng)軟件組成舉例4
1.3嵌入式微處理器簡介6
1.3.1嵌入式微處理器分類6
1.3.2主流嵌入式微處理器簡介8
1.4嵌入式操作系統(tǒng)簡介11
1.4.1嵌入式操作系統(tǒng)主要特點11
1.4.2主流嵌入式操作系統(tǒng)簡介12
1.5ARM系列嵌入式微處理器簡介16
1.5.1ARM系列處理器核的命名規(guī)則與性能16
1.5.2ARM指令集結構版本和變異19
1.6本章小結22
1.7習題23
第2章微處理器組成及程序員模型24
2.1S3C2440A微處理器概述24
2.2S3C2440A微處理器組成與引腳信號25
2.2.1S3C2440A微處理器組成25
2.2.2S3C2440A芯片封裝及引腳編號與引腳
信號名29◆基于ARM的嵌入式系統(tǒng)原理及應用目錄2.2.3S3C2440A特殊功能寄存器簡介30
2.3ARM920T核31
2.3.1ARM920T簡介31
2.3.2ARM920T指令系統(tǒng)特點31
2.3.3ARM920T功能模塊32
2.4程序員模型34
2.4.1處理器操作狀態(tài)34
2.4.2存儲器格式和數(shù)據(jù)類型34
2.4.3處理器操作方式36
2.4.4寄存器37
2.4.5程序狀態(tài)寄存器40
2.4.6異常42
2.4.7Reset46
2.5S3C2410A微處理器組成46
2.6本章小結47
2.7習題47
第3章ARM指令系統(tǒng)49
3.1ARM指令系統(tǒng)概述49
3.2ARM指令集50
3.2.1ARM指令集概述50
3.2.2ARM指令集指令的條件執(zhí)行51
3.3ARM存儲器訪問指令52
3.3.1字、無符號字節(jié)裝入/存儲指令52
3.3.2半字裝入/存儲指令、帶符號字節(jié)/半字裝入指令54
3.3.3塊數(shù)據(jù)傳送指令56
3.3.4單個數(shù)據(jù)交換指令60
3.4ARM數(shù)據(jù)處理指令61
3.4.1ARM數(shù)據(jù)處理指令概述61
3.4.2ARM數(shù)據(jù)處理指令程序舉例69
3.5ARM分支指令71
3.5.1分支并且轉換狀態(tài)指令71
3.5.2分支、分支并且連接指令72
3.6ARM程序狀態(tài)寄存器傳送指令73
3.7ARM乘法指令75
3.7.1乘、乘累加指令75
3.7.2長乘、長乘累加指令76
3.8ARM軟件中斷指令77
3.9ARM協(xié)處理器指令78
3.9.1協(xié)處理器介紹78
3.9.2協(xié)處理器數(shù)據(jù)操作指令79
3.9.3協(xié)處理器數(shù)據(jù)傳送指令80
3.9.4協(xié)處理器寄存器傳送指令82
3.10Thumb指令集83
3.10.1Thumb指令集特點83
3.10.2移位并傳送、加/減、傳送/比較/加/減立即數(shù)指令85
3.10.3ALU操作指令86
3.10.4高寄存器組操作、分支并且轉換狀態(tài)指令86
3.10.5裝入/存儲指令87
3.10.6裝入地址、加偏移量到SP、壓棧/出棧、多寄存器裝入/存儲
指令88
3.10.7條件分支、軟件中斷、無條件分支、長分支并且連接指令89
3.11本章小結90
3.12習題90
第4章ARM匯編語言特性與編程基礎95
4.1ARM匯編語言特性95
4.1.1行格式、預定義名和內建變量95
4.1.2ARM偽指令與Thumb偽指令97
4.1.3符號與指示符101
4.1.4與代碼有關的指示符105
4.1.5與數(shù)據(jù)定義有關的指示符107
4.1.6符號定義指示符114
4.1.7匯編控制指示符120
4.1.8報告指示符124
4.1.9表達式和操作符125
4.2ARM匯編語言編程基礎128
4.2.1匯編語言和匯編器128
4.2.2調用子程序128
4.2.3條件執(zhí)行129
4.2.4裝入常數(shù)到寄存器130
4.2.5裝入地址到寄存器133
4.2.6裝入和存儲多個寄存器指令138
4.2.7多路分支139
4.2.8宏定義、宏調用及宏替換舉例140
4.3本章小結141
4.4習題141
第5章主存儲器及Nand Flash存儲器組成144
5.1S3C2440A/S3C2410A存儲器控制器144
5.1.1S3C2440A與存儲器相關的特性144
5.1.2與存儲器芯片連接的S3C2440A引腳信號含義及使用146
5.1.3S3C2440A存儲器總線周期定時關系舉例152
5.1.4S3C2440A存儲器控制器特殊功能寄存器156
5.2S3C2440A/S3C2410A存儲器組成舉例162
5.2.1使用Nor Flash芯片作為引導ROM162
5.2.2使用SDRAM芯片舉例167
5.3S3C2410A存儲器控制器與以太網(wǎng)控制器連接舉例178
5.4S3C2410A存儲器控制器初始化設置舉例178
5.5S3C44B0X存儲器組成舉例181
5.5.1存儲器控制器概述181
5.5.2存儲器控制器選擇大/小端數(shù)據(jù)格式及數(shù)據(jù)總線寬度182
5.5.3存儲器控制器特殊功能寄存器183
5.5.4存儲器組成舉例184
5.5.5存儲器控制器初始化設置舉例184
5.6K9F1208U0M Nand Flash芯片應用基礎185
5.6.1兩種引導模式185
5.6.2Nand Flash概述186
5.6.3K9F1208U0M Nand Flash芯片特點及結構186
5.6.4K9F1208U0M Nand Flash芯片命令集和狀態(tài)寄存器191
5.6.5K9F1208U0M Nand Flash芯片操作舉例192
5.6.6K9F1208U0M使用注意事項193
5.7S3C2410A Nand Flash存儲器組成舉例194
5.7.1S3C2410A Nand Flash控制器194
5.7.2S3C2410A Nand Flash控制器特殊功能寄存器196
5.7.3S3C2410A Nand Flash存儲器組成舉例198
5.7.4S3C2410A讀Nand Flash程序舉例198
5.8S3C2440A/S3C44B0X Nand Flash存儲器組成舉例200
5.8.1S3C2440A Nand Flash控制器200
5.8.2S3C2440A Nand Flash存儲器組成舉例201
5.8.3S3C44B0X Nand Flash存儲器組成舉例202
5.9本章小結202
5.10習題202
第6章時鐘與電源管理、DMAC及總線主設備優(yōu)先權205
6.1功耗管理、時鐘與電源管理概述205
6.1.1CMOS電路的功耗與功耗管理基礎205
6.1.2S3C2440A時鐘與電源管理概述207
6.1.3時鐘與電源管理用到的S3C2440A引腳信號207
6.2S3C2440A時鐘發(fā)生器208
6.2.1時鐘發(fā)生器框圖208
6.2.2時鐘源的選擇209
6.2.3鎖相環(huán)210
6.2.4時鐘控制邏輯211
6.3S3C2440A電源管理213
6.3.1電源管理模式的轉換213
6.3.2電源管理模式214
6.3.3S3C2440A電源引腳217
6.4S3C2440A時鐘與電源管理特殊功能寄存器218
6.5S3C2410A/S3C44B0X時鐘與電源管理222
6.5.1S3C2410A時鐘與電源管理222
6.5.2UBoot對S3C2410A時鐘與電源管理特殊功能寄存器初始設置
代碼223
6.5.3S3C44B0X時鐘與電源管理224
6.5.4S3C44B0X時鐘與電源管理特殊功能寄存器設置程序舉例225
6.6DMA基礎225
6.6.1DMA含義225
6.6.2DMAC控制輸入傳輸舉例226
6.6.3總線主設備、從設備228
6.7S3C2440A/S3C2410A DMA傳輸228
6.7.1DMA概述228
6.7.2存儲器到外設DMA傳輸舉例229
6.7.3DMA用到的S3C2440A引腳信號231
6.8S3C2440A/S3C2410A DMA請求、有限狀態(tài)機和協(xié)議231
6.8.1硬件DMA請求與軟件DMA請求231
6.8.2用于DMA操作的有限狀態(tài)機232
6.8.3外部DMA請求/響應協(xié)議233
6.8.4Unit/Burst傳輸、數(shù)據(jù)尺寸與自動重裝235
6.8.5外部DMA請求/響應協(xié)議傳輸舉例236
6.9S3C2440A/S3C2410A DMA特殊功能寄存器237
6.10S3C2410A DMA存儲器到存儲器傳輸測試舉例241
6.11S3C44B0X DMA傳輸245
6.11.1DMA概述245
6.11.2ZDMA/BDMA操作246
6.11.3外部DMA請求/響應協(xié)議247
6.11.4DMA傳輸模式249
6.11.5DMA請求源選擇 250
6.12總線主設備優(yōu)先權251
6.12.1S3C2440A/S3C2410A總線主設備優(yōu)先權251
6.12.2S3C44B0X總線主設備優(yōu)先權251
6.13本章小結252
6.14習題252
第7章GPIO端口及中斷控制器255
7.1S3C2440A/S3C2410A GPIO端口及其他寄存器概述、引腳信號255
7.1.1GPIO端口及其他寄存器概述255
7.1.2與GPIO端口及其他寄存器相關的S3C2440A/S3C2410A引腳
信號256
7.2S3C2440A/S3C2410A GPIO端口控制258
7.3S3C2440A/S3C2410A GPIO端口特殊功能寄存器259
7.3.1端口A~端口J寄存器組259
7.3.2其他寄存器267
7.4S3C2410A GPIO端口定義、設置、應用程序舉例275
7.4.1GPOI端口特殊功能寄存器在程序中定義275
7.4.2GPIO端口初始設置舉例277
7.4.3GPIO端口應用程序舉例277
7.5S3C44B0X GPIO端口279
7.6S3C2440A/S3C2410A與中斷有關的寄存器、中斷處理過程280
7.6.1與中斷有關的寄存器280
7.6.2中斷處理過程282
7.7S3C2440A/S3C2410A中斷控制器操作、中斷源及中斷優(yōu)先權283
7.7.1中斷控制器操作283
7.7.2中斷源284
7.7.3中斷優(yōu)先權產生模塊285
7.8S3C2440A/S3C2410A中斷控制器特殊功能寄存器287
7.9S3C2410A中斷程序舉例293
7.10S3C44B0X中斷控制器300
7.10.1中斷控制器概述及G組端口寄存器、外部中斷控制/登記
寄存器300
7.10.2中斷控制器操作303
7.10.3中斷源304
7.10.4中斷優(yōu)先權產生模塊305
7.10.5用于IRQ的向量中斷方式306
7.10.6向量與非向量中斷方式程序舉例306
7.10.7中斷控制器特殊功能寄存器308
7.11本章小結315
7.12習題315
第8章脈寬調制定時器、實時時鐘及看門狗定時器318
8.1脈寬調制定時器318
8.1.1S3C2440A/S3C2410A脈寬調制定時器概述318
8.1.2S3C2440A/S3C2410A脈寬調制定時器操作321
8.1.3S3C2440A/S3C2410A脈寬調制定時器特殊功能寄存器326
8.1.4S3C2410A脈寬調制定時器應用舉例328
8.1.5S3C44B0X脈寬調制定時器331
8.2實時時鐘332
8.2.1S3C2440A/S3C2410A實時時鐘概述332
8.2.2S3C2440A/S3C2410A實時時鐘組成與操作332
8.2.3S3C2440A/S3C2410A實時時鐘特殊功能寄存器334
8.2.4S3C2410A實時時鐘程序舉例338
8.2.5S3C44B0X實時時鐘340
8.3看門狗定時器340
8.3.1看門狗定時器概述340
8.3.2S3C2440A/S3C2410A看門狗定時器操作341
8.3.3S3C2440A/S3C2410A看門狗定時器特殊功能寄存器342
8.3.4S3C2410A看門狗定時器程序舉例343
8.3.5S3C44B0X看門狗定時器346
8.4本章小結346
8.5習題347
第9章ADC與觸摸屏接口、片外DAC連接舉例349
9.1ADC與觸摸屏接口基礎知識349
9.1.1ADC基礎知識349
9.1.2四線電阻式觸摸屏接口基礎知識350
9.2S3C2440A/S3C2410A ADC與觸摸屏接口概述352
9.2.1概述352
9.2.2主要特點353
9.2.3ADC與觸摸屏接口用到的S3C2440A/S3C2410A引腳信號353
9.3S3C2440A/S3C2410A ADC與觸摸屏接口操作353
9.3.1功能框圖353
9.3.2觸摸屏應用舉例353
9.3.3功能描述355
9.4S3C2440A/S3C2410A ADC與觸摸屏接口特殊功能寄存器356
9.5S3C2410A ADC與觸摸屏接口程序舉例360
9.5.1ADC程序舉例360
9.5.2ADC與觸摸屏接口程序舉例361
9.6S3C44B0X ADC與片外觸摸屏控制器363
9.6.1S3C44B0X ADC概述363
9.6.2S3C44B0X ADC組成與操作364
9.6.3S3C44B0X ADC特殊功能寄存器366
9.6.4S3C44B0X ADC特殊功能寄存器使用舉例367
9.6.5S3C44B0X與片外觸摸屏控制器ADS7843連接舉例368
9.7微處理器片外DAC連接舉例372
9.7.1DAC硬件基礎372
9.7.2S3C2410A與DAC芯片連接舉例374
9.8本章小結374
9.9習題375
第10章微處理器片內串行傳輸模塊376
10.1UART377
10.1.1串行異步通信基礎377
10.1.2S3C2410A UART組成及操作380
10.1.3S3C2410A UART與RS232C接口連接舉例383
10.1.4S3C2410A UART與紅外收發(fā)器連接舉例385
10.2IIC總線接口386
10.2.1IIC總線接口概述386
10.2.2S3C2410A IIC總線接口特點388
10.2.3S3C2410A IIC總線接口組成及操作方式中的功能關系388
10.2.4S3C2410A IIC總線接口4種操作方式392
10.3IIS總線接口392
10.3.1常用IIS總線接口概述392
10.3.2S3C2410A IIS總線接口概述393
10.3.3S3C2410A IIS總線接口組成和發(fā)送/接收方式394
10.3.4S3C2410A IIS音頻串行接口數(shù)據(jù)格式395
10.4SPI總線接口396
10.4.1常用SPI總線接口概述396
10.4.2S3C2410A SPI總線接口特點及引腳信號398
10.4.3S3C2410A SPI總線接口組成和操作399
10.4.4S3C2410A SPI傳輸格式400
10.5S3C44B0X SIO接口401
10.5.1S3C44B0X SIO概述401
10.5.2S3C44B0X SIO接口模塊組成401
10.5.3S3C44B0X SIO通常方式操作402
10.5.4S3C44B0X SIO發(fā)送/接收定時圖402
10.6本章小結402
10.7習題403
第11章微處理器片內其他模塊405
11.1MMC/SD/SDIO主控制器406
11.1.1MMC/SD/SDIO卡概述406
11.1.2S3C2410A MMC/SD/SDIO主控制器概述410
11.1.3S3C2410A MMC/SD/SDIO主控制器組成411
11.1.4MMC/SD總線協(xié)議412
11.1.5S3C2410A MMC/SD卡初始化及數(shù)據(jù)傳輸416
11.2LCD控制器417
11.2.1液晶顯示基礎知識417
11.2.2S3C2410A LCD控制器概述422
11.2.3S3C2410A LCD控制器特點422
11.2.4S3C2410A LCD控制器外部接口信號423
11.2.5S3C2410A LCD控制器組成423
11.3USB主控制器及設備控制器424
11.3.1USB基礎424
11.3.2USB通信協(xié)議概述434
11.3.3USB總線枚舉過程舉例439
11.3.4S3C2410A USB主控制器440
11.3.5S3C2410A USB設備控制器440
11.4CAMERA接口443
11.4.1彩色電視制式及電視系統(tǒng)中傳輸?shù)男盘?43
11.4.2ITUR BT.601建議簡介445
11.4.3ITUR BT.656建議簡介448
11.4.4OV9650彩色CAMERACHIP芯片簡述450
11.4.5S3C2440A CAMERA接口453
11.4.6CAMERA接口與OV9650 CAMERACHIP連接舉例455
11.5AC97控制器456
11.5.1AC97簡介456
11.5.2AC97規(guī)范簡介457
11.5.3AC97 Codec芯片UCB1400簡介464
11.5.4S3C2440A AC97控制器465
11.5.5AC97控制器與AC97 Codec連接舉例468
11.6本章小結468
11.7習題469
附錄AS3C2440A引腳編號與對應的引腳信號名471
附錄BS3C2440A引腳信號名與對應功能描述匯總表474
附錄C英漢名詞術語對照匯總表480
參考文獻488