本書全面、系統(tǒng)地描述了ARM9微處理器核的嵌入式系統(tǒng)體系結(jié)構(gòu),以Samsung公司的S3C2440A控制器為例,著重介紹ARM9微處理器的結(jié)構(gòu)、開發(fā)工具、Linux的程序設(shè)計及嵌入式CDIO工程實訓(xùn)等內(nèi)容。
本書共分5部分: 第1部分(第1章)為理論部分,著重介紹嵌入式系統(tǒng)的概念,包括嵌入式的特點(diǎn)、分類和應(yīng)用; 第2部分(第2~6章)為基礎(chǔ)部分,著重介紹ARM9體系結(jié)構(gòu)、指令系統(tǒng)、尋址方式、指令集,偽指令、匯編語言程序設(shè)計基礎(chǔ)及與C/C 的混合編程,S3C2440A 控制器的結(jié)構(gòu)原理及外圍電路的設(shè)計方法等; 第3部分(第7章)為開發(fā)工具部分,著重介紹ADS 1.2集成開發(fā)環(huán)境及嵌入式Linux的軟件開發(fā)環(huán)境的使用; 第4部分(第8~11章)為操作系統(tǒng)部分,著重介紹Linux的程序設(shè)計; 第5部分為第2版新增部分(第12章),增加了嵌入式CDIO工程實訓(xùn)環(huán)節(jié)。
本書采用理論與實踐相結(jié)合的方法,立足于應(yīng)用,具有有針對性、實用性及綜合性強(qiáng)等特點(diǎn)。
本書不僅適用于高等院校計算機(jī)、物聯(lián)網(wǎng)、電子、自動化等相關(guān)專業(yè)的本科教學(xué),也適合于從事嵌入式系統(tǒng)研究與開發(fā)的技術(shù)人員及普通讀者參考。
前言
嵌入式無處不在已成為現(xiàn)實。嵌入式系統(tǒng)應(yīng)用的領(lǐng)域日益廣闊,與網(wǎng)絡(luò)通信、數(shù)字家庭、工業(yè)控制、國防軍事、醫(yī)療系統(tǒng)、安防系統(tǒng)、能源系統(tǒng)、交通系統(tǒng)等行業(yè)的融合逐步加深,智能設(shè)備終端應(yīng)用市場的快速發(fā)展對嵌入式系統(tǒng)提出了持續(xù)需求,使得嵌入式系統(tǒng)產(chǎn)業(yè)在前所未有的機(jī)遇下飛速發(fā)展。因此,系統(tǒng)開設(shè)嵌入式系列課程是非常必要的,這樣就需要合適的配套教材。鑒于這種情況,筆者參考了大量國內(nèi)外教材,結(jié)合應(yīng)用型本科院校的特點(diǎn),在原有第1版教材的基礎(chǔ)上進(jìn)行更新和修訂,從而有了更具實踐性和應(yīng)用性的《嵌入式系統(tǒng)原理及應(yīng)用教程(第2版)》。本書著眼于應(yīng)用,立足于工程開發(fā),強(qiáng)調(diào)工程訓(xùn)練,具有以下特點(diǎn)。1. 綜合性嵌入式系統(tǒng)是嵌入式硬件和嵌入式軟件的綜合體,硬件的設(shè)計服務(wù)于軟件功能,軟件的開發(fā)也必須考慮硬件資源的有限性。根據(jù)嵌入式系統(tǒng)的這一特點(diǎn),本書采用ARM9微處理器 Linux操作平臺 應(yīng)用程序設(shè)計 CDIO工程實訓(xùn)的教學(xué)體系。2. 基礎(chǔ)性本書詳細(xì)講解了ARM9體系結(jié)構(gòu)和編程方法,尤其是舉例講解了指令系統(tǒng)中的指令集及匯編語言與C/C 混合編程的方法,以便讀者掌握好底層嵌入式開發(fā)的技能。3. 實用性本書以S3C2440A芯片和Linux操作系統(tǒng)為例,舉例介紹了開發(fā)環(huán)境的使用與調(diào)試方法,詳細(xì)介紹了嵌入式軟件的編程技術(shù)。例如介紹了AC97音頻控制器設(shè)計實例。4. 針對性本書是筆者多年嵌入式教學(xué)的總結(jié)。主要是針對應(yīng)用型本科學(xué)生實踐性的特點(diǎn),在介紹ARM9微處理器原理及結(jié)構(gòu)的同時,注重各功能模塊的應(yīng)用介紹。5. 工程性本書在第1版教材的基礎(chǔ)上,結(jié)合CDIO教學(xué)模式,增加了嵌入式CDIO實訓(xùn)項目,以提高學(xué)生的實踐能力,增強(qiáng)學(xué)生的工程意識。本書系統(tǒng)介紹嵌入式系統(tǒng)軟硬件的組成、工作原理和設(shè)計方法。全書分為5部分,共12章,主要內(nèi)容和篇章結(jié)構(gòu)安排如下。第1部分為理論部分,由第1章組成。介紹嵌入式系統(tǒng)的基本概念,包括嵌入式系統(tǒng)的定義、組成、特點(diǎn)、分類和應(yīng)用領(lǐng)域。第2部分為基礎(chǔ)部分,由第2~6章組成。第2章重點(diǎn)講解ARM9處理器的體系結(jié)構(gòu); 第3章詳細(xì)講解基于ARM的嵌入式處理器指令系統(tǒng); 第4章講解嵌入式系統(tǒng)的程序設(shè)計基礎(chǔ),包括匯編語言程序設(shè)計及與C/C 語言的混合編程技術(shù); 第5、6章詳細(xì)講解S3C2440A芯片內(nèi)部結(jié)構(gòu)、外設(shè)及工作原理和應(yīng)用方法,并輔以實例講解。第3部分為開發(fā)工具部分,由第7章組成,著重講解ADS1.2集成開發(fā)環(huán)境及嵌入式Linux的軟件開發(fā)環(huán)境的使用。第4部分為操作系統(tǒng)部分,由第8~11章組成。第8章詳細(xì)分析嵌入式系統(tǒng)的Boot Loader,第9~11章以實例的方式講解基于S3C2440A芯片 Linux操作平臺的設(shè)計方法。第5部分為CDIO工程實訓(xùn),由第12章組成,詳細(xì)講解了8個實訓(xùn)實例,學(xué)生還可以進(jìn)行擴(kuò)展訓(xùn)練。本書由孟祥蓮任主編,孫平、王嘉鵬、姜波、于劍光任副主編。由于嵌入式技術(shù)發(fā)展迅速,加上筆者水平有限,時間倉促,書中難免有疏漏和錯誤之處,請讀者不吝賜教,以便我們在再版的時候及時糾正補(bǔ)充。本書的配套課件、代碼等可以從清華大學(xué)出版社網(wǎng)站www.tup.com.cn下載,如在本書使用或課件下載中遇到問題,請聯(lián)系fuhy@tup.tsinghua.edu.cn。編者2017年1月
第1版前言
嵌入式無處不在已成為現(xiàn)實。嵌入式系統(tǒng)應(yīng)用的領(lǐng)域日益廣闊,與網(wǎng)絡(luò)通信、數(shù)字家庭、工業(yè)控制、國防軍事、醫(yī)療系統(tǒng)、安防系統(tǒng)、能源系統(tǒng)、交通系統(tǒng)等行業(yè)融合正在加深,智能設(shè)備終端應(yīng)用市場的快速發(fā)展對嵌入式系統(tǒng)提出了持續(xù)需求,使得嵌入式系統(tǒng)產(chǎn)業(yè)在前所未有的機(jī)遇下快速地發(fā)展。因此,系統(tǒng)地開設(shè)嵌入式系列課程是必要的,這樣就需要合適的配套教材,鑒于這種情況,作者參考了大量國內(nèi)外教材,結(jié)合應(yīng)用型本科院校的特點(diǎn),編寫了《嵌入式系統(tǒng)原理及應(yīng)用教程》一書。全書著眼于應(yīng)用、立足于工程開發(fā),具有以下特點(diǎn)。1. 綜合性嵌入式系統(tǒng)是嵌入式硬件和嵌入式軟件的綜合體,硬件的設(shè)計服務(wù)于軟件功能,軟件的開發(fā)也必須考慮硬件資源的有限性。根據(jù)嵌入式系統(tǒng)的這一特點(diǎn),本書采用ARM9處理器 Linux操作平臺 應(yīng)用程序設(shè)計的介紹方法。2. 基礎(chǔ)性本書詳細(xì)地講解了ARM9處理器的體系結(jié)構(gòu)和編程方法,尤其是舉例講解了指令系統(tǒng)中的指令集及匯編語言與C/C 混合編程的方法,以便讀者掌握好底層嵌入式開發(fā)的技能。3. 實用性本書以S3C2440A芯片和Linux操作系統(tǒng)為例,舉例介紹了開發(fā)環(huán)境的使用與調(diào)試方法,詳細(xì)介紹了嵌入式軟件的編程技術(shù)。例如介紹AC97音頻控制器和觸摸屏的設(shè)計實例。4. 針對性本書是編者幾年嵌入式教學(xué)的總結(jié)。主要是針對應(yīng)用型本科學(xué)生實踐性強(qiáng)的特點(diǎn),在介紹ARM9處理器的原理及結(jié)構(gòu)的同時,注重了各功能模塊的應(yīng)用介紹。本書系統(tǒng)地介紹了嵌入式系統(tǒng)軟硬件的組成、工作原理和設(shè)計方法。全書分為4部分,共11章,主要內(nèi)容和篇章結(jié)構(gòu)安排如下。第1部分為理論部分,由第1章組成。介紹嵌入式系統(tǒng)的基本概念,包括嵌入式系統(tǒng)的定義、組成、特點(diǎn)、分類和應(yīng)用領(lǐng)域。第2部分為基本部分,由第2~6章組成。第2章重點(diǎn)講解ARM9處理器的體系結(jié)構(gòu); 第3章詳細(xì)講解基于ARM的嵌入式處理器指令系統(tǒng); 第4章講解其嵌入式系統(tǒng)的程序設(shè)計基礎(chǔ),包括匯編語言程序設(shè)計及與C/C 語言的混合編程技術(shù); 第5~6章詳細(xì)講解S3C2440A芯片內(nèi)部結(jié)構(gòu)、內(nèi)部外設(shè)及工作原理和應(yīng)用方法,并輔以實例講解。第3部分為開發(fā)工具部分,由第7章組成。著重講解ADS1.2集成開發(fā)環(huán)境及嵌入式Linux的軟件開發(fā)環(huán)境的使用。第4部分為操作系統(tǒng)部分,由第8~11章組成。第8章詳細(xì)分析嵌入式系統(tǒng)的Boot Loader; 第9~11章以實例的方式講解基于S3C2440A芯片 Linux操作平臺的設(shè)計方法。全書由孟祥蓮主編并編寫第3~6章,高洪志編寫第1~2章,孫平編寫第7~8章,朱國晗編寫第9~11章。由于嵌入式技術(shù)發(fā)展迅速,加上作者水平有限,時間倉促,書中難免有疏漏和錯誤之處,無論如何,請讀者不吝賜教,以便我們在改版或再版的時候及時糾正補(bǔ)充。
作者2010年8月
目錄
第1章嵌入式系統(tǒng)概述
1.1嵌入式系統(tǒng)定義
1.1.1嵌入式系統(tǒng)的概念
1.1.2嵌入式系統(tǒng)的特點(diǎn)
1.2嵌入式系統(tǒng)的組成
1.2.1嵌入式系統(tǒng)硬件
1.2.2嵌入式系統(tǒng)軟件
1.2.3嵌入式系統(tǒng)的開發(fā)系統(tǒng)和開發(fā)工具
1.3嵌入式系統(tǒng)的應(yīng)用
1.4本章小結(jié)
1.5習(xí)題1
第2章ARM微處理器概述與編程模型
2.1ARM微處理器概述
2.1.1ARM微處理器的特點(diǎn)
2.1.2ARM微處理器系列
2.2ARM微處理器結(jié)構(gòu)
2.2.1RISC體系結(jié)構(gòu)
2.2.2ARM微處理器的寄存器結(jié)構(gòu)
2.2.3ARM微處理器的指令結(jié)構(gòu)
2.3ARM微處理器的工作狀態(tài)
2.4ARM體系結(jié)構(gòu)的存儲器格式
2.4.1指令長度及數(shù)據(jù)類型
2.4.2存儲管理單元
2.5處理器模式
2.6寄存器組織
2.6.1ARM狀態(tài)下的寄存器組織
2.6.2Thumb狀態(tài)下的寄存器組織
2.6.3程序狀態(tài)寄存器
2.7異常
2.7.1ARM體系結(jié)構(gòu)所支持的異常類型
2.7.2異常優(yōu)先級
2.7.3異常的響應(yīng)及返回
2.7.4應(yīng)用程序中的異常處理
2.8本章小結(jié)
2.9習(xí)題2
第3章ARM9指令系統(tǒng)
3.1ARM處理器的尋址方式
3.1.1寄存器尋址
3.1.2立即尋址
3.1.3寄存器間接尋址
3.1.4變址尋址
3.1.5寄存器移位尋址
3.1.6多寄存器尋址
3.1.7堆棧尋址
3.1.8相對尋址
3.2ARM指令集
3.2.1指令格式
3.2.2條件碼
3.2.3ARM 存儲器訪問指令
3.2.4ARM 數(shù)據(jù)處理類指令
3.2.5ARM 分支指令
3.2.6ARM 協(xié)處理器指令
3.2.7ARM 軟件中斷指令
3.3Thumb指令集
3.4本章小結(jié)
3.5習(xí)題3
第4章嵌入式程序設(shè)計基礎(chǔ)
4.1偽指令
4.1.1通用偽指令
4.1.2與ARM指令相關(guān)的偽指令
4.1.3與Thumb指令相關(guān)的偽指令
4.2匯編語言的語句格式
4.2.1書寫格式
4.2.2匯編語言中表達(dá)式和運(yùn)算符
4.3匯編程序應(yīng)用
4.3.1匯編程序基本結(jié)構(gòu)
4.3.2子程序調(diào)用
4.4匯編語言與C/C 的混合編程
4.4.1在C/C 程序中內(nèi)嵌匯編指令的語法格式
4.4.2C/C 與匯編語言的混合編程應(yīng)用
4.5本章小結(jié)
4.6習(xí)題4
第5章嵌入式內(nèi)部可編程模塊
5.1存儲控制模塊
5.1.1存儲器控制器
5.1.2NAND Flash控制器
5.1.3存儲器實例
5.2GPIO
5.2.1端口功能
5.2.2端口配置寄存器
5.2.3端口其他寄存器
5.2.4I/O應(yīng)用實例
5.3中斷系統(tǒng)
5.3.1中斷優(yōu)先級
5.3.2中斷控制寄存器
5.3.3中斷編程實例
5.4定時部件
5.4.1看門狗定時器原理及實例
5.4.2RTC部件
5.4.3Timer部件
5.4.4定時部件應(yīng)用實例
5.5UART
5.5.1UART的操作
5.5.2UART接口寄存器
5.5.3UART實例
5.6ADC及觸摸屏接口
5.6.1功能描述
5.6.2ADC及觸摸屏接口特殊寄存器
5.6.3A/D轉(zhuǎn)換實例
5.7本章小結(jié)
5.8習(xí)題5
第6章嵌入式接口技術(shù)應(yīng)用
6.1LCD顯示器接口
6.1.1LCD的控制器
6.1.2S3C2440A芯片的LCD專用寄存器
6.1.3S3C2440A芯片LCD寄存器的設(shè)置
6.2I2C總線
6.2.1S3C2440A的I2C接口
6.2.2I2C總線接口特殊寄存器
6.2.3I2C編程舉例
6.3I2S總線
6.3.1發(fā)送接收模式
6.3.2音頻串行接口格式
6.3.3I2S總線接口特殊寄存器
6.3.4I2S編程實例
6.4AC97控制器
6.4.1AC97控制器操作
6.4.2AC97控制器特殊寄存器
6.4.3AC97應(yīng)用實例
6.5本章小結(jié)
6.6習(xí)題6
第7章軟件開發(fā)環(huán)境
7.1ADS1.2集成開發(fā)環(huán)境
7.1.1使用ADS創(chuàng)建工程
7.1.2用AXD進(jìn)行代碼調(diào)試
7.2嵌入式Linux的交叉編譯環(huán)境安裝
7.3本章小結(jié)
7.4習(xí)題7
第8章嵌入式系統(tǒng)Boot Loader技術(shù)
8.1Boot Loader的基本概念
8.1.1Boot Loader的相關(guān)設(shè)備和機(jī)制
8.1.2Boot Loader的啟動過程
8.1.3Boot Loader的操作模式
8.1.4Boot Loader的總體設(shè)計
8.2Boot Loader(vivi)的代碼分析
8.3本章小結(jié)
8.4習(xí)題8
第9章嵌入式Linux操作系統(tǒng)移植
9.1嵌入式Linux基本概念
9.2嵌入式Linux內(nèi)核移植
9.2.1內(nèi)核修改
9.2.2內(nèi)核配置
9.2.3內(nèi)核編譯
9.3建立Linux根文件系統(tǒng)
9.4下載目標(biāo)文件
9.5本章小結(jié)
9.6習(xí)題 9
第10章嵌入式Linux設(shè)備驅(qū)動程序開發(fā)
10.1嵌入式Linux驅(qū)動程序開發(fā)基礎(chǔ)
10.1.1嵌入式Linux設(shè)備驅(qū)動程序分類
10.1.2最簡單的內(nèi)核模塊
10.2嵌入式Linux設(shè)備驅(qū)動重要技術(shù)
10.2.1內(nèi)存與I/O端口
10.2.2同步機(jī)制
10.2.3阻塞與非阻塞
10.2.4時間問題
10.2.5中斷處理
10.3字符設(shè)備驅(qū)動程序
10.3.1字符設(shè)備驅(qū)動結(jié)構(gòu)
10.3.2字符設(shè)備驅(qū)動實例LED驅(qū)動
10.4網(wǎng)絡(luò)設(shè)備驅(qū)動程序
10.4.1Linux 網(wǎng)絡(luò)設(shè)備簡介
10.4.2網(wǎng)絡(luò)驅(qū)動核心數(shù)據(jù)結(jié)構(gòu)
10.4.3網(wǎng)絡(luò)驅(qū)動程序分析
10.5設(shè)備驅(qū)動實例
10.5.1ADC設(shè)備驅(qū)動實例
10.5.2PWM設(shè)備驅(qū)動實例
10.5.3觸摸屏設(shè)備驅(qū)動實例
10.6本章小結(jié)
10.7習(xí)題10
第11章嵌入式Linux應(yīng)用程序設(shè)計
11.1嵌入式Linux C語言應(yīng)用程序開發(fā)基礎(chǔ)
11.1.1編寫源程序
11.1.2交叉編譯程序
11.1.3調(diào)試程序
11.2文件I/O編程
11.2.1文件I/O操作例程
11.2.2文件I/O操作API
11.3網(wǎng)絡(luò)編程
11.3.1網(wǎng)絡(luò)通信基礎(chǔ)及例程
11.3.2網(wǎng)絡(luò)通信API
11.4應(yīng)用實例
11.4.1ADC應(yīng)用實例
11.4.2PWM蜂鳴器控制應(yīng)用實例
11.4.3觸摸屏應(yīng)用實例
11.5本章小結(jié)
11.6習(xí)題11
第12章嵌入式CDIO實訓(xùn)項目
實訓(xùn)1ARM匯編基礎(chǔ)訓(xùn)練1
實訓(xùn)2ARM匯編基礎(chǔ)訓(xùn)練2
實訓(xùn)3GPIO輸入輸出實訓(xùn)
實訓(xùn)4GPIO定時器中斷應(yīng)用實訓(xùn)
實訓(xùn)5直流電機(jī)應(yīng)用實訓(xùn)
實訓(xùn)6溫度采集應(yīng)用實訓(xùn)
實訓(xùn)7紅外通信應(yīng)用實訓(xùn)
實訓(xùn)8CAN總線應(yīng)用實訓(xùn)
參考文獻(xiàn)