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