嵌入式系統(tǒng)是軟件和硬件的綜合體,有人將其稱為后PC時(shí)代和后網(wǎng)絡(luò)時(shí)代的新秀。特別是近幾年來,嵌入式產(chǎn)品強(qiáng)勢占領(lǐng)了消費(fèi)類電子產(chǎn)品市場,并開始在汽車電子、工業(yè)控制、航空航天、國防工業(yè)等領(lǐng)域得到全面應(yīng)用。因此可以斷言,面向嵌入式的信息時(shí)代已經(jīng)到來。
本書作者在學(xué)生時(shí)代多次參加機(jī)器人大賽,工作后指導(dǎo)智能車控制大賽。最初設(shè)計(jì)機(jī)器人控制系統(tǒng)采用8位單片機(jī),隨著機(jī)器人控制功能的增強(qiáng),原有的8位芯片很難滿足功能要求,另外軟件設(shè)計(jì)也越來越煩瑣。在2002年,ARM技術(shù)產(chǎn)品開始大范圍占領(lǐng)市場,基于ARM技術(shù)的嵌入式微控制器成為嵌入式開發(fā)的硬件支撐。世界上知名的半導(dǎo)體公司如Intel、Samsung、Motorola、Philips和Atmel相繼推出了以ARM為核心的主流芯片,嵌入式開發(fā)成為信息領(lǐng)域研究與應(yīng)用的熱點(diǎn)。為了適應(yīng)更加復(fù)雜的控制需求,作者當(dāng)時(shí)選用ARM微控制器作為主控制單元,設(shè)計(jì)嵌入式機(jī)器人控制系統(tǒng),在有限的幾本書可供參考的情況下,面向應(yīng)用裁剪硬件,移植嵌入式操作系統(tǒng),從此與嵌入式結(jié)下不解之緣。近年來,全國各大高校紛紛建立嵌入式方向,經(jīng)過幾年來的教學(xué)實(shí)踐,已經(jīng)成功地培養(yǎng)出一批具備嵌入式設(shè)計(jì)與開發(fā)技能的畢業(yè)生,這些畢業(yè)生走向嵌入式開發(fā)的各個(gè)領(lǐng)域。本書正是在教學(xué)和實(shí)踐的基礎(chǔ)上進(jìn)行編寫的。
本書的編寫力求將復(fù)雜問題簡單化,為了說明一個(gè)問題,可能不惜篇幅,圖表并用,并設(shè)有實(shí)例解析,使每一個(gè)嵌入式開發(fā)的初學(xué)者都能快速上手,為嵌入式系統(tǒng)開發(fā)打下堅(jiān)實(shí)的基礎(chǔ)。
本書的內(nèi)容安排
第1章介紹嵌入式系統(tǒng)的發(fā)展歷史,通過典型產(chǎn)品實(shí)例使讀者體會(huì)嵌入式技術(shù)的研究方向和發(fā)展趨勢。
第2章介紹ARM處理器的內(nèi)核調(diào)試結(jié)構(gòu),重點(diǎn)介紹ARM7TDMIS、ARM9TDMI兩種結(jié)構(gòu),并分析了ARM7和 ARM9的3級(jí)流水線運(yùn)行機(jī)制和5級(jí)流水線運(yùn)行機(jī)制。
第3~5章詳細(xì)解析ARM指令尋址方式、ARM指令系統(tǒng)詳細(xì)解析和Thumb指令系統(tǒng)。
第6、7章介紹ARM匯編語言偽指令、ARM匯編語言程序設(shè)計(jì)中所用的偽操作、匯編語言程序設(shè)計(jì)規(guī)范,并用大量的實(shí)例說明匯編語言程序設(shè)計(jì)方法。
第8章介紹嵌入式C語言的編程規(guī)范、嵌入式開發(fā)中常用的位運(yùn)算與控制位域以及在嵌入式C程序設(shè)計(jì)中要注意的問題,也介紹了ARM匯編語言與嵌入式C語言進(jìn)行相互調(diào)用的標(biāo)準(zhǔn)(AAPCS),并用大量的實(shí)例說明相互調(diào)用應(yīng)注意的問題。
第9、10章介紹Samsung公司兩款流行的ARM處理器芯片: S3C44B0是基于ARM7TDMI架構(gòu)的,S3C2410/S3C2440是基于ARM920T架構(gòu)的; 詳細(xì)介紹基于這兩款微控制器的存儲(chǔ)系統(tǒng)、通用I/O、中斷控制器、UART、I2C和LCD接口原理與應(yīng)用開發(fā)。
本書配套資源豐富,包括教學(xué)大綱、教學(xué)課件、電子教案、習(xí)題答案和教學(xué)進(jìn)度表,掃描封底的“課件下載”二維碼,在公眾號(hào)“書圈”下載; 本書還提供程序源碼,掃描目錄上方的二維碼下載。
致謝
本書的編寫參考和引用了國內(nèi)外同行、專家、學(xué)者所撰寫的大量文獻(xiàn)以及網(wǎng)絡(luò)技術(shù)論壇的精華資料,在此向相關(guān)作者表示衷心的感謝!
嵌入式系統(tǒng)發(fā)展非常迅速,新的技術(shù)成果不斷涌現(xiàn)。書中難免存在不妥之處,懇請讀者和同行批評(píng)指正。
邱鐵
于天津大學(xué)北洋園
2020年8月
第1章緒論
1.1嵌入式系統(tǒng)定義
1.1.1嵌入式系統(tǒng)的發(fā)展歷程
1.1.2嵌入式系統(tǒng)的定義與特點(diǎn)
1.2嵌入式操作系統(tǒng)
1.2.1嵌入式實(shí)時(shí)操作系統(tǒng)
1.2.2實(shí)時(shí)操作系統(tǒng)的典型應(yīng)用
1.3嵌入式技術(shù)在工程領(lǐng)域的應(yīng)用
1.4嵌入式技術(shù)的發(fā)展趨勢
思考與練習(xí)題
第2章ARM技術(shù)與ARM體系結(jié)構(gòu)
2.1ARM體系結(jié)構(gòu)版本與內(nèi)核
2.1.1ARM體系結(jié)構(gòu)版本
2.1.2ARM內(nèi)核版本命名規(guī)則
2.1.3主流ARM處理器內(nèi)核系列與應(yīng)用
2.2ARM內(nèi)核模塊
2.3ARM處理器的工作模式
2.4內(nèi)部寄存器
2.4.1通用寄存器及其分布
2.4.2程序狀態(tài)寄存器
2.5ARM異常處理
2.6存儲(chǔ)方式與存儲(chǔ)器映射機(jī)制
2.7ARM流水線技術(shù)分析
思考與練習(xí)題
第3章ARM指令集尋址方式
3.1ARM指令的編碼格式
3.2數(shù)據(jù)處理指令尋址方式
3.3Load/Store指令尋址
3.3.1地址計(jì)算方法
3.3.2字、無符號(hào)字節(jié)尋址
3.3.3半字、有符號(hào)字節(jié)尋址
3.4批量Load/Store指令尋址方式
3.5協(xié)處理器指令尋址方式
思考與練習(xí)題
第4章ARM指令集系統(tǒng)
4.1數(shù)據(jù)處理指令
4.1.1基本數(shù)據(jù)處理指令
4.1.2乘法指令
4.1.3雜類的數(shù)據(jù)處理指令
4.2ARM分支指令
4.3加載/存儲(chǔ)指令
4.3.1加載/存儲(chǔ)字、無符號(hào)字節(jié)指令
4.3.2半字、有符號(hào)字節(jié)訪問指令
4.4批量加載/存儲(chǔ)指令
4.4.1基本批量字?jǐn)?shù)據(jù)加載/存儲(chǔ)指令
4.4.2用戶模式下的批量字?jǐn)?shù)據(jù)加載/存儲(chǔ)指令
4.4.3帶PSR操作的批量字?jǐn)?shù)據(jù)加載指令
4.5交換指令
4.6程序狀態(tài)寄存器訪問指令
4.7協(xié)處理器操作指令
4.7.1協(xié)處理器數(shù)據(jù)操作指令
4.7.2協(xié)處理器加載/存儲(chǔ)指令
4.7.3ARM寄存器與協(xié)處理器寄存器數(shù)據(jù)傳輸指令
4.8異常產(chǎn)生指令
思考與練習(xí)題
第5章Thumb指令
5.1Thumb數(shù)據(jù)處理指令
5.1.1寄存器移位指令
5.1.2低位寄存器算術(shù)運(yùn)算指令
5.1.3ALU操作指令
5.1.4帶高位寄存器操作的Thumb指令
5.1.5帶SP/PC的算術(shù)運(yùn)算指令
5.2Thumb存儲(chǔ)器操作指令
5.2.1字節(jié)、半字和字的加載/存儲(chǔ)指令
5.2.2批量加載/存儲(chǔ)指令
5.3Thumb分支指令
5.3.1B分支指令
5.3.2帶鏈接的分支指令
5.3.3帶狀態(tài)切換的分支指令
5.4Thumb軟中斷指令
5.5Thumb指令功能碼段分析
5.5.1Thumb與ARM實(shí)現(xiàn)功能比較
5.5.2Thumb與ARM性能比較
思考與練習(xí)題
第6章ARM匯編偽指令與偽操作
6.1匯編語言偽指令
6.1.1ARM匯編語言偽指令
6.1.2Thumb匯編語言偽指令
6.2ARM匯編語言偽操作
6.3ARM匯編偽操作
6.3.1符號(hào)定義偽操作
6.3.2數(shù)據(jù)定義偽操作
6.3.3匯編代碼控制偽操作
6.3.4匯編信息報(bào)告控制偽操作
6.3.5指令集類型標(biāo)識(shí)偽操作
6.3.6文件包含偽操作
6.3.7其他類型偽操作
6.4GNU ARM匯編偽操作
6.4.1符號(hào)定義偽操作
6.4.2數(shù)據(jù)定義偽操作
6.4.3匯編與反匯編代碼控制偽操作
6.4.4預(yù)定義控制偽操作
思考與練習(xí)題
第7章匯編語言程序設(shè)計(jì)
7.1ARM編譯環(huán)境下匯編語句
7.1.1ARM編譯環(huán)境下匯編語句格式
7.1.2ARM編譯環(huán)境下匯編語句中的符號(hào)規(guī)則
7.2GNU環(huán)境下匯編語句與編譯說明
7.2.1GNU環(huán)境下ARM匯編語句格式
7.2.2GNU環(huán)境下ARM匯編程序編譯
7.3ARM匯編語言程序設(shè)計(jì)規(guī)范
7.4ARM匯編語言程序設(shè)計(jì)實(shí)例解析
思考與練習(xí)題
第8章ARM匯編語言與嵌入式C混合編程
8.1嵌入式C編程規(guī)范
8.2嵌入式C程序設(shè)計(jì)中的位運(yùn)算
8.3嵌入式C程序設(shè)計(jì)中的幾點(diǎn)說明
8.3.1volatile限制符
8.3.2地址強(qiáng)制轉(zhuǎn)換與多級(jí)指針
8.3.3預(yù)處理的使用
8.4嵌入式C程序設(shè)計(jì)格式
8.5過程調(diào)用標(biāo)準(zhǔn)ATPCS與AAPCS
8.5.1寄存器使用規(guī)則
8.5.2數(shù)據(jù)棧使用規(guī)則
8.5.3參數(shù)傳遞規(guī)則
8.6ARM匯編語言與嵌入式C混合編程相互調(diào)用
8.6.1內(nèi)嵌匯編
8.6.2ARM匯編語言與嵌入式C程序相互調(diào)用
思考與練習(xí)題
第9章S3C44B0/S3C2410/S3C2440硬件結(jié)構(gòu)與關(guān)鍵技術(shù)分析
9.1處理器簡介
9.2S3C44B0/S3C2410/S3C2440存儲(chǔ)控制器
9.2.1S3C44B0存儲(chǔ)控制與地址空間
9.2.2S3C2410/S3C2440存儲(chǔ)控制與地址空間
9.2.3S3C44B0/S3C2410/S3C2440存儲(chǔ)位寬控制
9.2.4S3C44B0/S3C2410/S3C2440存儲(chǔ)器接口時(shí)序分析
9.2.5S3C44B0/S3C2410存儲(chǔ)控制寄存器
9.2.6SDRAM接口電路設(shè)計(jì)
9.2.7S3C44B0存儲(chǔ)器初始化實(shí)例
9.3S3C2410/S3C2440 NAND Flash控制器
9.4S3C44B0/S3C2410/S3C2440時(shí)鐘與電源管理
9.4.1S3C44B0/S3C2410/S3C2440時(shí)鐘管理
9.4.2S3C44B0/S3C2410/S3C2440電源管理
9.4.3S3C44B0/S3C2410/S3C2440時(shí)鐘與電源管理專用寄存器
9.5S3C44B0/S3C2410/S3C2440通用 I/O端口
9.5.1端口控制描述
9.5.2端口寄存器
9.5.3通用I/O接口設(shè)計(jì)實(shí)例
9.6S3C44B0/S3C2410/S3C2440中斷機(jī)制
9.6.1S3C44B0中斷控制器
9.6.2S3C2410/S3C2440中斷控制器
9.6.3S3C44B0/S3C2410/S3C2440中斷控制特殊功能寄存器
9.6.4S3C44B0/S3C2410/S3C2440中斷控制器設(shè)計(jì)實(shí)例
思考與練習(xí)題
第10章S3C44B0/S3C2410/S3C2440通信與LCD接口技術(shù)
10.1S3C44B0/S3C2410/S3C2440 UART
10.1.1UART原理
10.1.2S3C44B0/S3C2410/S3C2440 UART模塊
10.1.3S3C44B0/S3C2410/S3C2440 UART操作
10.1.4UART中斷與波特率的計(jì)算
10.1.5S3C44B0/S3C2410/S3C2440 UART專用功能寄存器
10.1.6S3C44B0/S3C2410 UART設(shè)計(jì)實(shí)例
10.2S3C44B0/S3C2410/S3C2440 I2C總線接口
10.2.1I2C總線原理
10.2.2S3C44B0/S3C2410/S3C2440 I2C總線功能模塊
10.2.3S3C44B0/S3C2410/S3C2440 I2C總線操作
10.2.4S3C44B0/S3C2410/S3C2440 I2C專用功能寄存器
10.2.5S3C44B0/S3C2410/S3C2440 I2C總線設(shè)計(jì)實(shí)例
10.3S3C44B0/S3C2410/S3C2440 LCD控制器
10.3.1LCD簡介
10.3.2S3C44B0/S3C2410/S3C2440 LCD控制器模塊
10.3.3S3C44B0/S3C2410/S3C2440 LCD控制器專用功能寄存器
10.3.4S3C44B0/S3C2410/S3C2440 LCD控制器設(shè)計(jì)實(shí)例
思考與練習(xí)題
附錄AS3C44B0/S3C2410/S3C2440封裝與I/O復(fù)用信息
附錄B鏈接定位與系統(tǒng)引導(dǎo)程序
附錄C“ARM嵌入式系統(tǒng)結(jié)構(gòu)與編程”課程考試標(biāo)準(zhǔn)試題
參考文獻(xiàn)