本書全面、系統(tǒng)地描述了ARM9微處理器核的嵌入式系統(tǒng)體系結(jié)構(gòu),以Samsung公司的S3C2440A控制器為例,著重介紹ARM9微處理器的結(jié)構(gòu)、開發(fā)工具、Linux的程序設(shè)計(jì)及嵌入式CDIO工程實(shí)訓(xùn)等內(nèi)容。
本書共分5部分: 第1部分(第1章)為理論部分,著重介紹嵌入式系統(tǒng)的概念,包括嵌入式的特點(diǎn)、分類和應(yīng)用; 第2部分(第2~6章)為基礎(chǔ)部分,著重介紹ARM9體系結(jié)構(gòu)、指令系統(tǒng)、尋址方式、指令集,偽指令、匯編語(yǔ)言程序設(shè)計(jì)基礎(chǔ)及與C/C 的混合編程,S3C2440A 控制器的結(jié)構(gòu)原理及外圍電路的設(shè)計(jì)方法等; 第3部分(第7章)為開發(fā)工具部分,著重介紹ADS 1.2集成開發(fā)環(huán)境及嵌入式Linux的軟件開發(fā)環(huán)境的使用; 第4部分(第8~11章)為操作系統(tǒng)部分,著重介紹Linux的程序設(shè)計(jì); 第5部分為第2版新增部分(第12章),增加了嵌入式CDIO工程實(shí)訓(xùn)環(huán)節(jié)。
本書采用理論與實(shí)踐相結(jié)合的方法,立足于應(yīng)用,具有有針對(duì)性、實(shí)用性及綜合性強(qiáng)等特點(diǎn)。
本書不僅適用于高等院校計(jì)算機(jī)、物聯(lián)網(wǎng)、電子、自動(dòng)化等相關(guān)專業(yè)的本科教學(xué),也適合于從事嵌入式系統(tǒng)研究與開發(fā)的技術(shù)人員及普通讀者參考。
前言
嵌入式無處不在已成為現(xiàn)實(shí)。嵌入式系統(tǒng)應(yīng)用的領(lǐng)域日益廣闊,與網(wǎng)絡(luò)通信、數(shù)字家庭、工業(yè)控制、國(guó)防軍事、醫(yī)療系統(tǒng)、安防系統(tǒng)、能源系統(tǒng)、交通系統(tǒng)等行業(yè)的融合逐步加深,智能設(shè)備終端應(yīng)用市場(chǎng)的快速發(fā)展對(duì)嵌入式系統(tǒng)提出了持續(xù)需求,使得嵌入式系統(tǒng)產(chǎn)業(yè)在前所未有的機(jī)遇下飛速發(fā)展。因此,系統(tǒng)開設(shè)嵌入式系列課程是非常必要的,這樣就需要合適的配套教材。鑒于這種情況,筆者參考了大量國(guó)內(nèi)外教材,結(jié)合應(yīng)用型本科院校的特點(diǎn),在原有第1版教材的基礎(chǔ)上進(jìn)行更新和修訂,從而有了更具實(shí)踐性和應(yīng)用性的《嵌入式系統(tǒng)原理及應(yīng)用教程(第2版)》。本書著眼于應(yīng)用,立足于工程開發(fā),強(qiáng)調(diào)工程訓(xùn)練,具有以下特點(diǎn)。1. 綜合性嵌入式系統(tǒng)是嵌入式硬件和嵌入式軟件的綜合體,硬件的設(shè)計(jì)服務(wù)于軟件功能,軟件的開發(fā)也必須考慮硬件資源的有限性。根據(jù)嵌入式系統(tǒng)的這一特點(diǎn),本書采用ARM9微處理器 Linux操作平臺(tái) 應(yīng)用程序設(shè)計(jì) CDIO工程實(shí)訓(xùn)的教學(xué)體系。2. 基礎(chǔ)性本書詳細(xì)講解了ARM9體系結(jié)構(gòu)和編程方法,尤其是舉例講解了指令系統(tǒng)中的指令集及匯編語(yǔ)言與C/C 混合編程的方法,以便讀者掌握好底層嵌入式開發(fā)的技能。3. 實(shí)用性本書以S3C2440A芯片和Linux操作系統(tǒng)為例,舉例介紹了開發(fā)環(huán)境的使用與調(diào)試方法,詳細(xì)介紹了嵌入式軟件的編程技術(shù)。例如介紹了AC97音頻控制器設(shè)計(jì)實(shí)例。4. 針對(duì)性本書是筆者多年嵌入式教學(xué)的總結(jié)。主要是針對(duì)應(yīng)用型本科學(xué)生實(shí)踐性的特點(diǎn),在介紹ARM9微處理器原理及結(jié)構(gòu)的同時(shí),注重各功能模塊的應(yīng)用介紹。5. 工程性本書在第1版教材的基礎(chǔ)上,結(jié)合CDIO教學(xué)模式,增加了嵌入式CDIO實(shí)訓(xùn)項(xiàng)目,以提高學(xué)生的實(shí)踐能力,增強(qiáng)學(xué)生的工程意識(shí)。本書系統(tǒng)介紹嵌入式系統(tǒng)軟硬件的組成、工作原理和設(shè)計(jì)方法。全書分為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è)計(jì)基礎(chǔ),包括匯編語(yǔ)言程序設(shè)計(jì)及與C/C 語(yǔ)言的混合編程技術(shù); 第5、6章詳細(xì)講解S3C2440A芯片內(nèi)部結(jié)構(gòu)、外設(shè)及工作原理和應(yīng)用方法,并輔以實(shí)例講解。第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章以實(shí)例的方式講解基于S3C2440A芯片 Linux操作平臺(tái)的設(shè)計(jì)方法。第5部分為CDIO工程實(shí)訓(xùn),由第12章組成,詳細(xì)講解了8個(gè)實(shí)訓(xùn)實(shí)例,學(xué)生還可以進(jìn)行擴(kuò)展訓(xùn)練。本書由孟祥蓮任主編,孫平、王嘉鵬、姜波、于劍光任副主編。由于嵌入式技術(shù)發(fā)展迅速,加上筆者水平有限,時(shí)間倉(cāng)促,書中難免有疏漏和錯(cuò)誤之處,請(qǐng)讀者不吝賜教,以便我們?cè)谠侔娴臅r(shí)候及時(shí)糾正補(bǔ)充。本書的配套課件、代碼等可以從清華大學(xué)出版社網(wǎng)站www.tup.com.cn下載,如在本書使用或課件下載中遇到問題,請(qǐng)聯(lián)系fuhy@tup.tsinghua.edu.cn。編者2017年1月
第1版前言
嵌入式無處不在已成為現(xiàn)實(shí)。嵌入式系統(tǒng)應(yīng)用的領(lǐng)域日益廣闊,與網(wǎng)絡(luò)通信、數(shù)字家庭、工業(yè)控制、國(guó)防軍事、醫(yī)療系統(tǒng)、安防系統(tǒng)、能源系統(tǒng)、交通系統(tǒng)等行業(yè)融合正在加深,智能設(shè)備終端應(yīng)用市場(chǎng)的快速發(fā)展對(duì)嵌入式系統(tǒng)提出了持續(xù)需求,使得嵌入式系統(tǒng)產(chǎn)業(yè)在前所未有的機(jī)遇下快速地發(fā)展。因此,系統(tǒng)地開設(shè)嵌入式系列課程是必要的,這樣就需要合適的配套教材,鑒于這種情況,作者參考了大量國(guó)內(nèi)外教材,結(jié)合應(yīng)用型本科院校的特點(diǎn),編寫了《嵌入式系統(tǒng)原理及應(yīng)用教程》一書。全書著眼于應(yīng)用、立足于工程開發(fā),具有以下特點(diǎn)。1. 綜合性嵌入式系統(tǒng)是嵌入式硬件和嵌入式軟件的綜合體,硬件的設(shè)計(jì)服務(wù)于軟件功能,軟件的開發(fā)也必須考慮硬件資源的有限性。根據(jù)嵌入式系統(tǒng)的這一特點(diǎn),本書采用ARM9處理器 Linux操作平臺(tái) 應(yīng)用程序設(shè)計(jì)的介紹方法。2. 基礎(chǔ)性本書詳細(xì)地講解了ARM9處理器的體系結(jié)構(gòu)和編程方法,尤其是舉例講解了指令系統(tǒng)中的指令集及匯編語(yǔ)言與C/C 混合編程的方法,以便讀者掌握好底層嵌入式開發(fā)的技能。3. 實(shí)用性本書以S3C2440A芯片和Linux操作系統(tǒng)為例,舉例介紹了開發(fā)環(huán)境的使用與調(diào)試方法,詳細(xì)介紹了嵌入式軟件的編程技術(shù)。例如介紹AC97音頻控制器和觸摸屏的設(shè)計(jì)實(shí)例。4. 針對(duì)性本書是編者幾年嵌入式教學(xué)的總結(jié)。主要是針對(duì)應(yīng)用型本科學(xué)生實(shí)踐性強(qiáng)的特點(diǎn),在介紹ARM9處理器的原理及結(jié)構(gòu)的同時(shí),注重了各功能模塊的應(yīng)用介紹。本書系統(tǒng)地介紹了嵌入式系統(tǒng)軟硬件的組成、工作原理和設(shè)計(jì)方法。全書分為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è)計(jì)基礎(chǔ),包括匯編語(yǔ)言程序設(shè)計(jì)及與C/C 語(yǔ)言的混合編程技術(shù); 第5~6章詳細(xì)講解S3C2440A芯片內(nèi)部結(jié)構(gòu)、內(nèi)部外設(shè)及工作原理和應(yīng)用方法,并輔以實(shí)例講解。第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章以實(shí)例的方式講解基于S3C2440A芯片 Linux操作平臺(tái)的設(shè)計(jì)方法。全書由孟祥蓮主編并編寫第3~6章,高洪志編寫第1~2章,孫平編寫第7~8章,朱國(guó)晗編寫第9~11章。由于嵌入式技術(shù)發(fā)展迅速,加上作者水平有限,時(shí)間倉(cāng)促,書中難免有疏漏和錯(cuò)誤之處,無論如何,請(qǐng)讀者不吝賜教,以便我們?cè)诟陌婊蛟侔娴臅r(shí)候及時(shí)糾正補(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)的存儲(chǔ)器格式
2.4.1指令長(zhǎng)度及數(shù)據(jù)類型
2.4.2存儲(chǔ)管理單元
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)先級(jí)
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相對(duì)尋址
3.2ARM指令集
3.2.1指令格式
3.2.2條件碼
3.2.3ARM 存儲(chǔ)器訪問指令
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è)計(jì)基礎(chǔ)
4.1偽指令
4.1.1通用偽指令
4.1.2與ARM指令相關(guān)的偽指令
4.1.3與Thumb指令相關(guān)的偽指令
4.2匯編語(yǔ)言的語(yǔ)句格式
4.2.1書寫格式
4.2.2匯編語(yǔ)言中表達(dá)式和運(yùn)算符
4.3匯編程序應(yīng)用
4.3.1匯編程序基本結(jié)構(gòu)
4.3.2子程序調(diào)用
4.4匯編語(yǔ)言與C/C 的混合編程
4.4.1在C/C 程序中內(nèi)嵌匯編指令的語(yǔ)法格式
4.4.2C/C 與匯編語(yǔ)言的混合編程應(yīng)用
4.5本章小結(jié)
4.6習(xí)題4
第5章嵌入式內(nèi)部可編程模塊
5.1存儲(chǔ)控制模塊
5.1.1存儲(chǔ)器控制器
5.1.2NAND Flash控制器
5.1.3存儲(chǔ)器實(shí)例
5.2GPIO
5.2.1端口功能
5.2.2端口配置寄存器
5.2.3端口其他寄存器
5.2.4I/O應(yīng)用實(shí)例
5.3中斷系統(tǒng)
5.3.1中斷優(yōu)先級(jí)
5.3.2中斷控制寄存器
5.3.3中斷編程實(shí)例
5.4定時(shí)部件
5.4.1看門狗定時(shí)器原理及實(shí)例
5.4.2RTC部件
5.4.3Timer部件
5.4.4定時(shí)部件應(yīng)用實(shí)例
5.5UART
5.5.1UART的操作
5.5.2UART接口寄存器
5.5.3UART實(shí)例
5.6ADC及觸摸屏接口
5.6.1功能描述
5.6.2ADC及觸摸屏接口特殊寄存器
5.6.3A/D轉(zhuǎn)換實(shí)例
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編程實(shí)例
6.4AC97控制器
6.4.1AC97控制器操作
6.4.2AC97控制器特殊寄存器
6.4.3AC97應(yīng)用實(shí)例
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的啟動(dòng)過程
8.1.3Boot Loader的操作模式
8.1.4Boot Loader的總體設(shè)計(jì)
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ū)動(dòng)程序開發(fā)
10.1嵌入式Linux驅(qū)動(dòng)程序開發(fā)基礎(chǔ)
10.1.1嵌入式Linux設(shè)備驅(qū)動(dòng)程序分類
10.1.2最簡(jiǎn)單的內(nèi)核模塊
10.2嵌入式Linux設(shè)備驅(qū)動(dòng)重要技術(shù)
10.2.1內(nèi)存與I/O端口
10.2.2同步機(jī)制
10.2.3阻塞與非阻塞
10.2.4時(shí)間問題
10.2.5中斷處理
10.3字符設(shè)備驅(qū)動(dòng)程序
10.3.1字符設(shè)備驅(qū)動(dòng)結(jié)構(gòu)
10.3.2字符設(shè)備驅(qū)動(dòng)實(shí)例LED驅(qū)動(dòng)
10.4網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序
10.4.1Linux 網(wǎng)絡(luò)設(shè)備簡(jiǎn)介
10.4.2網(wǎng)絡(luò)驅(qū)動(dòng)核心數(shù)據(jù)結(jié)構(gòu)
10.4.3網(wǎng)絡(luò)驅(qū)動(dòng)程序分析
10.5設(shè)備驅(qū)動(dòng)實(shí)例
10.5.1ADC設(shè)備驅(qū)動(dòng)實(shí)例
10.5.2PWM設(shè)備驅(qū)動(dòng)實(shí)例
10.5.3觸摸屏設(shè)備驅(qū)動(dòng)實(shí)例
10.6本章小結(jié)
10.7習(xí)題10
第11章嵌入式Linux應(yīng)用程序設(shè)計(jì)
11.1嵌入式Linux C語(yǔ)言應(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)用實(shí)例
11.4.1ADC應(yīng)用實(shí)例
11.4.2PWM蜂鳴器控制應(yīng)用實(shí)例
11.4.3觸摸屏應(yīng)用實(shí)例
11.5本章小結(jié)
11.6習(xí)題11
第12章嵌入式CDIO實(shí)訓(xùn)項(xiàng)目
實(shí)訓(xùn)1ARM匯編基礎(chǔ)訓(xùn)練1
實(shí)訓(xùn)2ARM匯編基礎(chǔ)訓(xùn)練2
實(shí)訓(xùn)3GPIO輸入輸出實(shí)訓(xùn)
實(shí)訓(xùn)4GPIO定時(shí)器中斷應(yīng)用實(shí)訓(xùn)
實(shí)訓(xùn)5直流電機(jī)應(yīng)用實(shí)訓(xùn)
實(shí)訓(xùn)6溫度采集應(yīng)用實(shí)訓(xùn)
實(shí)訓(xùn)7紅外通信應(yīng)用實(shí)訓(xùn)
實(shí)訓(xùn)8CAN總線應(yīng)用實(shí)訓(xùn)
參考文獻(xiàn)