隨著無(wú)線通信、物聯(lián)網(wǎng)、智能設(shè)備等新技術(shù)的飛速發(fā)展,面向信息化、網(wǎng)絡(luò)化、智能化的各類高性能芯片不斷涌現(xiàn),開發(fā)者需要根據(jù)不同的設(shè)計(jì)方案,選擇合適的開發(fā)技術(shù)以實(shí)現(xiàn)系統(tǒng)功能,而能夠量身定做的嵌入式系統(tǒng)技術(shù)正是應(yīng)對(duì)新技術(shù)挑戰(zhàn)的絕佳選擇。硬件軟件化和軟件硬件化是未來(lái)智能化設(shè)備開發(fā)的重要實(shí)現(xiàn)方法,基于ARM處理器在智能化、定制化和網(wǎng)絡(luò)化設(shè)備的普及以及 Linux 操作系統(tǒng)的日益完善,為智能設(shè)備的硬件軟件化和軟件硬件化提供了非常好的實(shí)現(xiàn)路徑。本書結(jié)合作者在浙江工業(yè)大學(xué)通信工程專業(yè)教授嵌入式系統(tǒng)課程的多年經(jīng)驗(yàn),將嵌入式系統(tǒng)技術(shù)應(yīng)用于無(wú)線通信、物聯(lián)網(wǎng)等領(lǐng)域的科研和體會(huì)呈現(xiàn)給廣大讀者,以幫助新工科人才應(yīng)對(duì)信息化、網(wǎng)絡(luò)化、智能化領(lǐng)域的新技術(shù)挑戰(zhàn)。
本書起源于2008 年作者承擔(dān)的無(wú)線網(wǎng)絡(luò)攝像機(jī)科研項(xiàng)目,作者系統(tǒng)地研究了無(wú)線多媒體終端設(shè)備和相應(yīng)的嵌入式軟件,發(fā)現(xiàn)嵌入式技術(shù)具有巨大潛力,因?yàn)樗鼘⒂布浖蛙浖布脑O(shè)計(jì)理念真正融入到了智能設(shè)備的制作中。之后作者著手制作了PNARM9嵌入式系統(tǒng)教學(xué)實(shí)驗(yàn)箱,配合自編實(shí)驗(yàn)講義,在浙江工業(yè)大學(xué)通信工程專業(yè)的本科教學(xué)中加以實(shí)施。嵌入式系統(tǒng)教學(xué)是實(shí)踐性很強(qiáng)的一門課程,學(xué)生除了學(xué)習(xí)一整套完整的理論體系和一系列的操作函數(shù)外,還必須針對(duì)某種應(yīng)用進(jìn)行實(shí)驗(yàn),沒有實(shí)驗(yàn)環(huán)節(jié)的嵌入式系統(tǒng)教學(xué)很難讓學(xué)生融會(huì)貫通。為此,作者從基本知識(shí)、基礎(chǔ)技能、綜合應(yīng)用等方面配以相應(yīng)的實(shí)驗(yàn)案例,加強(qiáng)學(xué)生感性認(rèn)識(shí),培養(yǎng)學(xué)生的綜合設(shè)計(jì)和應(yīng)用能力。
2016年,作者主編的《嵌入式系統(tǒng)原理、應(yīng)用與實(shí)踐教程》由清華大學(xué)出版社出版,并在浙江工業(yè)大學(xué)通信工程專業(yè)的嵌入式系統(tǒng)課程以及研究生的專業(yè)實(shí)踐課程使用了7年,受到了廣泛好評(píng)。然而,隨著國(guó)內(nèi)外無(wú)線通信、物聯(lián)網(wǎng)、人工智能等新技術(shù)的突飛猛進(jìn),嵌入式系統(tǒng)的應(yīng)用越來(lái)越廣泛,對(duì)嵌入式系統(tǒng)教材的內(nèi)容也提出了更高的要求。同時(shí),教材編寫組深度結(jié)合當(dāng)前物聯(lián)網(wǎng)應(yīng)用的熱點(diǎn),更新了配套實(shí)驗(yàn)設(shè)備,設(shè)計(jì)了更多綜合開發(fā)應(yīng)用實(shí)例和成果,供讀者學(xué)習(xí)實(shí)踐。為此,教材編寫組配合浙江工業(yè)大學(xué)通信工程國(guó)家一流專業(yè)建設(shè)點(diǎn)及嵌入式系統(tǒng)線上線下混合式一流課程建設(shè)需求,對(duì)教材進(jìn)行全面改版升級(jí),將教材更名為《嵌入式系統(tǒng)原理及實(shí)踐》,并被列入浙江省普通本科高校十四五重點(diǎn)教材建設(shè)項(xiàng)目。
全面改版升級(jí)后的教材,主要解決的問題包括:
1. 修改使用過(guò)程中發(fā)現(xiàn)的錯(cuò)誤,如示例代碼書寫問題,部分圖例錯(cuò)誤問題。
2. 部分章節(jié)內(nèi)容更新調(diào)整。根據(jù)當(dāng)前嵌入式技術(shù)的最新發(fā)展,更新了部分章節(jié)內(nèi)容,主要有嵌入式系統(tǒng)的發(fā)展、嵌入式系統(tǒng)的應(yīng)用、常用嵌入式操作系統(tǒng)等。
3. 補(bǔ)充新內(nèi)容,主要包括ARM處理器的工作模式、寄存器組織、異常處理相關(guān)內(nèi)容、ARM偽指令、ARM和C語(yǔ)言混合編程、make相關(guān)使用等。
4. 根據(jù)教材的編寫需求重新編寫了部分章節(jié)。由于配套的實(shí)驗(yàn)箱進(jìn)行了升級(jí),原有的章節(jié)在實(shí)驗(yàn)箱部分介紹也不夠詳盡,故進(jìn)行重新編寫; 增加了物聯(lián)網(wǎng)應(yīng)用相關(guān)原理的介紹內(nèi)容。
5. 修訂原有教材中的實(shí)驗(yàn)項(xiàng)目,本次修訂對(duì)于所有的實(shí)驗(yàn)項(xiàng)目都重新梳理和編排,并增加了物聯(lián)網(wǎng)應(yīng)用相關(guān)的綜合實(shí)踐項(xiàng)目。按嵌入式系統(tǒng)基礎(chǔ)實(shí)驗(yàn)、Linux操作系統(tǒng)基礎(chǔ)實(shí)驗(yàn)、 Linux環(huán)境下驅(qū)動(dòng)實(shí)驗(yàn)、嵌入式系統(tǒng)應(yīng)用實(shí)驗(yàn)進(jìn)行分類,共編寫四大類25個(gè)實(shí)驗(yàn),大大豐富了教材的實(shí)驗(yàn)實(shí)踐環(huán)節(jié)內(nèi)容。
6. 該教材配套有實(shí)驗(yàn)設(shè)備、課程網(wǎng)絡(luò)資源、課程教學(xué)視頻和實(shí)驗(yàn)內(nèi)容電子材料等,課程組在超星學(xué)銀在線教學(xué)平臺(tái)建設(shè)了在線開放課程,錄制了嵌入式系統(tǒng)課程的所有理論和實(shí)踐內(nèi)容教學(xué)視頻,此外還包括課程大綱、課程教案、在線交流等課程輔助教學(xué)資源。
目前,在線教學(xué)平臺(tái)累計(jì)訪問量達(dá)693124人次,累計(jì)10余所高校學(xué)生通過(guò)網(wǎng)站進(jìn)行學(xué)習(xí),為全面提升學(xué)生嵌入式系統(tǒng)綜合開發(fā)應(yīng)用能力提供有價(jià)值的參考學(xué)習(xí)資料。
本書以目前流行的基于ARM架構(gòu)的嵌入式微處理器及Linux操作系統(tǒng)為核心,結(jié)合作者多年的教學(xué)與科研工作經(jīng)驗(yàn),以循序漸進(jìn)的方式介紹了嵌入式系統(tǒng)原理、嵌入式處理器軟硬件開發(fā),嵌入式系統(tǒng)開發(fā)環(huán)境的搭建、嵌入式系統(tǒng)開發(fā)和調(diào)試工具、嵌入式系統(tǒng)驅(qū)動(dòng)程序開發(fā)以及相關(guān)的實(shí)驗(yàn)案例,最后結(jié)合工程實(shí)際應(yīng)用,介紹嵌入式系統(tǒng)在物聯(lián)網(wǎng)等方面的綜合應(yīng)用設(shè)計(jì)開發(fā)。學(xué)習(xí)了本書內(nèi)容就可以掌握嵌入式系統(tǒng)完整的知識(shí)體系和應(yīng)用實(shí)踐。
本書在編排上理論和實(shí)踐內(nèi)容各占50%,在理論知識(shí)介紹的基礎(chǔ)上充分體現(xiàn)實(shí)踐的重要性。實(shí)踐內(nèi)容分為四部分,按嵌入式系統(tǒng)基礎(chǔ)實(shí)驗(yàn)、Linux操作系統(tǒng)基礎(chǔ)實(shí)驗(yàn)、 Linux環(huán)境下驅(qū)動(dòng)實(shí)驗(yàn)、嵌入式系統(tǒng)應(yīng)用實(shí)驗(yàn)進(jìn)行分類,便于將嵌入式系統(tǒng)技術(shù)實(shí)踐融入無(wú)線通信、人工智能、物聯(lián)網(wǎng)等新技術(shù)應(yīng)用。
本書配套的線上線下教學(xué)資源融入了課程組多年動(dòng)態(tài)新增資源,配套資源建設(shè)完善。本書的部分硬件實(shí)驗(yàn)開發(fā)了遠(yuǎn)程在線實(shí)境實(shí)驗(yàn),學(xué)生可在任何有網(wǎng)絡(luò)的地點(diǎn)完成實(shí)驗(yàn),實(shí)驗(yàn)案例真實(shí)詳細(xì),能使學(xué)生循序漸進(jìn)地掌握嵌入式開發(fā)的過(guò)程。此外,配合教學(xué)實(shí)驗(yàn)箱,教師還可帶領(lǐng)學(xué)生進(jìn)行嵌入式系統(tǒng)相關(guān)項(xiàng)目的開發(fā),大大提升了實(shí)際的教學(xué)效果及學(xué)生實(shí)際掌握嵌入式原理及開發(fā)的能力。
隨著信息與通信技術(shù)的迅猛發(fā)展,嵌入式系統(tǒng)技術(shù)在網(wǎng)絡(luò)通信、電子消費(fèi)、移動(dòng)互聯(lián)、工業(yè)控制等領(lǐng)域得到了廣泛應(yīng)用,同時(shí)它也是智能設(shè)備設(shè)計(jì)領(lǐng)域最為熱門的技術(shù)之一。學(xué)習(xí)和應(yīng)用嵌入式技術(shù)已經(jīng)成為通信、電子、計(jì)算機(jī)和自動(dòng)化領(lǐng)域工程師感興趣的話題。衷心地希望本書能對(duì)高等院校相關(guān)專業(yè)的教師和學(xué)生,各類機(jī)構(gòu)中從事嵌入式系統(tǒng)設(shè)計(jì)和開發(fā)的研究人員、技術(shù)工程師以及期望通過(guò)學(xué)習(xí)提升自我的愛好者們提供幫助。通過(guò)對(duì)嵌入式系統(tǒng)理論與實(shí)踐的巧妙結(jié)合,不斷適應(yīng)當(dāng)下信息與通信技術(shù)的發(fā)展要求,做到與時(shí)俱進(jìn)。
本書由孟利民、宋秀蘭、彭宏、盧為黨、徐志江、應(yīng)頌翔共同創(chuàng)作完成,是集體努力的成果。孟利民提供了多年來(lái)嵌入式教學(xué)實(shí)驗(yàn)講義及相關(guān)科研資料,編寫了第3、6、9、11、13章; 宋秀蘭編寫了第1、2、4、5、7章,彭宏、盧為黨、徐志江、應(yīng)頌翔共同編寫了第8、10、12章。感謝清華大學(xué)出版社趙凱、李曄編輯的大力支持,使本書得以與讀者見面; 感謝研究生許恩澤、柯旭清、包秀欽為本書的實(shí)驗(yàn)部分進(jìn)行了大量調(diào)試和測(cè)試; 感謝浙江工業(yè)大學(xué)教務(wù)處為本書的出版提供幫助,本書獲得浙江工業(yè)大學(xué)重點(diǎn)教材建設(shè)項(xiàng)目支持; 感謝浙江省高等教育學(xué)會(huì)教材建設(shè)分會(huì)給予本書浙江省普通本科高校十四五重點(diǎn)教材建設(shè)項(xiàng)目資助; 感謝侄女兒孟晶妮對(duì)本書給予潤(rùn)色和校對(duì); 感謝所有對(duì)本書提供了幫助但未署名的老師和學(xué)生。
初心如磐,行臻致遠(yuǎn); 執(zhí)著努力,堅(jiān)卓競(jìng)遠(yuǎn)。未來(lái),我們會(huì)一如既往地投身專業(yè)教學(xué),為現(xiàn)代信息與通信技術(shù)發(fā)展持續(xù)貢獻(xiàn)自己的綿薄之力。
由于知識(shí)所限,書中不足之處在所難免,懇請(qǐng)各位專家和讀者指正。
編者
2024年6月于杭州
教學(xué)大綱
教學(xué)課件
第1章嵌入式系統(tǒng)概述
1.1嵌入式系統(tǒng)的定義
1.2嵌入式系統(tǒng)的特點(diǎn)
1.3嵌入式系統(tǒng)的組成
1.4嵌入式系統(tǒng)的分類
1.5嵌入式系統(tǒng)的發(fā)展
本章習(xí)題
第2章嵌入式處理器概述
2.1處理器原理
2.1.1CPU的指令系統(tǒng)
2.1.2CPU的分類
2.1.3CPU結(jié)構(gòu)
2.1.4大端和小端
2.2嵌入式處理器的分類
2.3嵌入式處理器的特點(diǎn)
2.4熟悉ARM處理器
2.4.1ARM 技術(shù)的發(fā)展
2.4.2ARM處理器核
2.4.3ARM處理器的片內(nèi)總線
2.5ARM處理器工作模式
2.6ARM處理器寄存器組織
2.6.1ARM狀態(tài)下的寄存器組織
2.6.2Thumb/Thumb2 狀態(tài)下的寄存器組
2.7ARM異常處理
2.7.1ARM異常種類、異常中斷向量和優(yōu)先級(jí)
2.7.2ARM異常的中斷響應(yīng)過(guò)程
2.8存儲(chǔ)管理單元
2.8.1常見存儲(chǔ)介質(zhì)
2.8.2存儲(chǔ)管理單元與存儲(chǔ)器的關(guān)系
2.8.3存儲(chǔ)管理單元的功能
2.8.4存儲(chǔ)器訪問的順序
2.8.5MMU的地址轉(zhuǎn)換
2.9ARM的選型原則
本章習(xí)題
第3章熟悉ARM嵌入式教學(xué)實(shí)驗(yàn)系統(tǒng)
3.1ARM嵌入式教學(xué)實(shí)驗(yàn)系統(tǒng)
3.2嵌入式教學(xué)實(shí)驗(yàn)系統(tǒng)的總體設(shè)計(jì)方案
3.3系統(tǒng)核心開發(fā)板硬件架構(gòu)
3.4存儲(chǔ)模塊設(shè)計(jì)
3.5溫度/濕度模塊設(shè)計(jì)
3.6超聲波模塊設(shè)計(jì)
3.7WiFi模塊設(shè)計(jì)
3.8ZigBee模塊設(shè)計(jì)
3.9藍(lán)牙模塊設(shè)計(jì)
3.10加速度模塊設(shè)計(jì)
3.11按鍵模塊設(shè)計(jì)
3.12繼電器模塊設(shè)計(jì)
3.13液晶顯示
本章習(xí)題
第4章ARM指令集及匯編
4.1ARM指令集概述
4.2ARM指令的尋址方式
4.3ARM存儲(chǔ)器訪問指令
4.4ARM數(shù)據(jù)處理指令
4.5ARM跳轉(zhuǎn)指令
4.6ARM協(xié)處理指令
4.7ARM雜項(xiàng)指令
4.8ARM偽指令
4.8.1ADS編譯環(huán)境下的ARM偽指令與宏指令
4.8.2ARM匯編語(yǔ)言的偽指令
4.9ARM匯編語(yǔ)言實(shí)例
本章習(xí)題
第5章ARM混合編程和ADS 1.2集成開發(fā)環(huán)境
5.1C語(yǔ)言和匯編語(yǔ)言混合編程方式
5.2ADS集成開發(fā)環(huán)境
5.2.1CodeWarrior集成開發(fā)環(huán)境
5.2.2ADS調(diào)試器
5.3ADS使用入門
5.3.1ADS調(diào)試器的使用
5.3.2ADS 1.2環(huán)境下工程的仿真、調(diào)試及配置方法
5.4JTAG介紹
5.5MultiICE仿真器
本章習(xí)題
第6章嵌入式系統(tǒng)基礎(chǔ)實(shí)驗(yàn)
實(shí)驗(yàn)1: ADS 1.2集成開發(fā)環(huán)境練習(xí)
實(shí)驗(yàn)2: 匯編指令實(shí)驗(yàn)1
實(shí)驗(yàn)3: 匯編指令實(shí)驗(yàn)2
實(shí)驗(yàn)4: 匯編指令實(shí)驗(yàn)3
實(shí)驗(yàn)5: ARM微控制器工作模式實(shí)驗(yàn)
實(shí)驗(yàn)6: C語(yǔ)言程序?qū)嶒?yàn)
實(shí)驗(yàn)7: C語(yǔ)言調(diào)用匯編程序?qū)嶒?yàn)
第7章Linux使用基礎(chǔ)
7.1Linux簡(jiǎn)介
7.1.1Linux操作系統(tǒng)及其特點(diǎn)
7.1.2Linux系統(tǒng)的發(fā)展過(guò)程
7.1.3Linux系統(tǒng)的組成部分
7.1.4常用Linux系統(tǒng)介紹
7.1.5Linux目錄結(jié)構(gòu)
7.1.6VMware Workstation簡(jiǎn)介
7.2Linux基本命令
7.2.1常用命令
7.2.2文件操作命令
7.2.3文件編輯命令
7.2.4系統(tǒng)關(guān)閉命令
7.2.5用戶管理相關(guān)命令
7.2.6信息系統(tǒng)相關(guān)命令
7.2.7網(wǎng)絡(luò)相關(guān)命令
7.3VI編輯器
7.4TFTP服務(wù)器
7.4.1TFTP服務(wù)器概述
7.4.2TFTP服務(wù)器的安裝配置
7.5遠(yuǎn)程管理工具
7.5.1OpenSSH服務(wù)端的安裝
7.5.2OpenSSH服務(wù)的配置
7.5.3SSH客戶端的使用
7.6Windows下常用遠(yuǎn)程登錄客戶端
7.6.1Putty
7.6.2SSH Secure Shell Client
7.6.3SecureCRT
7.7NFS的配置及管理
7.7.1NFS概述
7.7.2NFS安裝和配置
本章習(xí)題
第8章Linux系統(tǒng)開發(fā)環(huán)境
8.1Linux交叉編譯
8.2GCC和GDB
8.2.1基于GNU及Linux內(nèi)核的編程風(fēng)格
8.2.2GCC編譯器
8.2.3GDB調(diào)試器
8.3BootLoader
8.3.1BootLoader簡(jiǎn)介
8.3.2常見BootLoader介紹
8.4Linux內(nèi)核移植
8.4.1Linux內(nèi)核結(jié)構(gòu)
8.4.2Linux系統(tǒng)的可加載內(nèi)核模塊機(jī)制
8.4.3用戶空間和內(nèi)核空間
8.5文件系統(tǒng)
8.5.1文件系統(tǒng)簡(jiǎn)介
8.5.2常見的文件系統(tǒng)
8.5.3根文件系統(tǒng)的制作
本章習(xí)題
第9章Linux操作系統(tǒng)基礎(chǔ)實(shí)驗(yàn)
實(shí)驗(yàn)8: 建立Linux虛擬機(jī)及熟悉常用命令
實(shí)驗(yàn)9: 程序下載燒寫實(shí)驗(yàn)
實(shí)驗(yàn)10: mount掛載實(shí)驗(yàn)
實(shí)驗(yàn)11: Linux交叉編譯平臺(tái)實(shí)驗(yàn)
實(shí)驗(yàn)12: UBOOT下載運(yùn)行實(shí)驗(yàn)
實(shí)驗(yàn)13: Linux內(nèi)核編譯實(shí)驗(yàn)
第10章Linux環(huán)境下的驅(qū)動(dòng)程序開發(fā)
10.1Linux設(shè)備驅(qū)動(dòng)
10.1.1Linux設(shè)備的分類
10.1.2驅(qū)動(dòng)程序中的基本要素
10.2設(shè)備驅(qū)動(dòng)開發(fā)
10.2.1驅(qū)動(dòng)開發(fā)的一般流程
10.2.2驅(qū)動(dòng)程序的框架
10.2.3測(cè)試程序框架
10.3Linux驅(qū)動(dòng)的部分技術(shù)簡(jiǎn)介
10.3.1同步機(jī)制
10.3.2阻塞與非阻塞
10.3.3時(shí)間
10.4Linux驅(qū)動(dòng)程序?qū)嵗治?/p>
10.5Linux系統(tǒng)下的具體實(shí)現(xiàn)
10.6make程序和Makefile文件
本章習(xí)題
第11章Linux環(huán)境下驅(qū)動(dòng)程序?qū)嶒?yàn)
實(shí)驗(yàn)14: Linux下GPIO驅(qū)動(dòng)程序編寫實(shí)驗(yàn)
實(shí)驗(yàn)15: I2C驅(qū)動(dòng)程序編寫實(shí)驗(yàn)
實(shí)驗(yàn)16: RTC時(shí)鐘驅(qū)動(dòng)實(shí)驗(yàn)
實(shí)驗(yàn)17: 按鍵驅(qū)動(dòng)實(shí)驗(yàn)
實(shí)驗(yàn)18: 繼電器驅(qū)動(dòng)實(shí)驗(yàn)
第12章Linux環(huán)境下應(yīng)用程序開發(fā)
12.1多任務(wù)之間的同步和通信
12.1.1System V共享內(nèi)存
12.1.2消息隊(duì)列
12.1.3POSIX信號(hào)量
12.1.4System V信號(hào)量
12.1.5多線程
12.1.6互斥鎖和條件變量
12.2TCP/IP網(wǎng)絡(luò)編程
12.2.1概述
12.2.2TCP通信過(guò)程
12.2.3基本socket接口
12.2.4socket編程的其他函數(shù)
12.2.5TCP通信編程實(shí)例
12.2.6UDP通信過(guò)程
12.2.7UDP通信編程實(shí)例
12.3視頻壓縮與傳輸技術(shù)簡(jiǎn)介
12.3.1H.264視頻編解碼
12.3.2RTP/RTCP流媒體實(shí)時(shí)傳輸協(xié)議
本章習(xí)題
第13章嵌入式系統(tǒng)應(yīng)用實(shí)驗(yàn)
實(shí)驗(yàn)19: 以太網(wǎng)傳輸程序編寫實(shí)驗(yàn)
實(shí)驗(yàn)20: 視頻采集播放程序編寫實(shí)驗(yàn)
實(shí)驗(yàn)21: WiFi程序編寫實(shí)驗(yàn)
實(shí)驗(yàn)22: 藍(lán)牙程序編寫實(shí)驗(yàn)
實(shí)驗(yàn)23: 溫度/濕度傳感器實(shí)驗(yàn)
實(shí)驗(yàn)24: 超聲波程序編寫實(shí)驗(yàn)
實(shí)驗(yàn)25: 加速度計(jì)程序編寫實(shí)驗(yàn)
參考文獻(xiàn)