本書從組件技術(shù)的視角出發(fā),介紹了嵌入式系統(tǒng)設(shè)計(jì)技術(shù)和技巧,并將安全性貫穿全書。全書每一章涵蓋一個專題,包括與嵌人式系統(tǒng)設(shè)計(jì)相關(guān)的若干主要內(nèi)容:指令系統(tǒng)、CPU、計(jì)算平臺、程序設(shè)計(jì)與分析、進(jìn)程和操作系統(tǒng)、系統(tǒng)設(shè)計(jì)技術(shù)、物聯(lián)網(wǎng)、汽車與航天系統(tǒng)以及嵌入式多處理器等。本書適合作為計(jì)算機(jī)、電子信息、通信工程、自動化、機(jī)電一體化、儀器儀表及相關(guān)專業(yè)高年級本科生和研究生的教材,也適合相關(guān)的工程技術(shù)人員參考。
第4版前言準(zhǔn)備本書第4版的過程使我意識到我的年齡有多大。在1999年年底,我完成了第1版的最終草稿。從那時起,嵌入式計(jì)算技術(shù)發(fā)展迅猛,但是核心原理依然基本保持不變。我對整本書進(jìn)行了修改:整理問題,修改文稿,對某些章節(jié)重新排序以改進(jìn)思路,并刪除了一些不重要的內(nèi)容。
本書在兩方面做出了巨大改動。第一,新增了物聯(lián)網(wǎng)(IoT)這一章;第二,將安全性貫穿全書。自第3版出版以來,IoT就已作為一個重要主題出現(xiàn),但是它的實(shí)現(xiàn)依賴于現(xiàn)存的技術(shù)和知識。在第4版中,新的IoT章節(jié)綜述了幾個用于IoT應(yīng)用的無線網(wǎng)絡(luò),也給出了一些IoT系統(tǒng)組織的模型。安全性對于嵌入式系統(tǒng)一直都很重要,雖然本書第1版就已討論過醫(yī)療設(shè)備的安全性,但是一系列事件又突出了這一主題的關(guān)鍵特性。
在前幾版中,一些高級的知識點(diǎn)都放在第8章,包括多處理器片上系統(tǒng)和網(wǎng)絡(luò)嵌入式系統(tǒng)等。第4版將這些內(nèi)容擴(kuò)展,并分為三章:第8章涵蓋OSI和網(wǎng)絡(luò)協(xié)議,以及IoT特定主題的知識;第9章探討汽車環(huán)境中的網(wǎng)絡(luò)嵌入式系統(tǒng),并涵蓋安全性方面的幾個例子;第10章講述多處理器片上系統(tǒng)及其應(yīng)用。
和前幾版一樣,在本書網(wǎng)站http://www.marilynwolf.us可以找到所有相關(guān)內(nèi)容。一些外部Web資源的鏈接也在該網(wǎng)站上。此外,我的新博客http://embeddedcps.blogspot.com/提供了一些嵌入式計(jì)算人員感興趣的話題。
我要感謝編輯Nate McFadden給予的幫助和指導(dǎo)。當(dāng)然,本書中的任何問題都是我的責(zé)任。
Marilyn Wolf第3版前言本書第3版反映了我對嵌入式計(jì)算的深入思考以及對本書讀者的若干建議,其中一個重要的目標(biāo)是擴(kuò)大嵌入式計(jì)算應(yīng)用的范圍。學(xué)習(xí)有關(guān)數(shù)碼相機(jī)和汽車之類的主題需要付出很多努力。我希望本書可以為這些系統(tǒng)中直接影響嵌入式計(jì)算設(shè)計(jì)者決策的部分提供一些有用的見解。我也擴(kuò)大了示例處理器的范圍,包括尖端的處理器,如TI C64x和高級ARM擴(kuò)展(advanced ARM extension),同時還包括PIC16F,并通過它描述小型RISC嵌入式處理器的特性。最后重新組織了網(wǎng)絡(luò)和多處理器章節(jié),使這些緊密相關(guān)的主題看起來更統(tǒng)一。讀者可以在課程網(wǎng)站http://www.marilynwolf.us尋找附加的材料,這個網(wǎng)站包含了上面所說的所有內(nèi)容,還有實(shí)驗(yàn)樣例以及獲取附加信息的提示。
我要感謝Nate McFadden、Todd Green和Andre Cuello的耐心編輯以及在本書修訂過程中對我的關(guān)心。我還要感謝匿名評論者和科羅拉多大學(xué)的Andrew Pleszkun教授對本書草稿的中肯建議。特別感謝David Anderson、Phil Koopman和Bruce Jacob幫助我理解了一些內(nèi)容。同樣要感謝2011年的亞特蘭大“末日暴雪”給了我大量不受打擾的寫作時間。
最重要的是,這是我感謝父親的最好時機(jī)。他教會我如何工作:不僅僅是教會我怎樣做具體的事情,更重要的是教會我如何處理問題,開拓思路,然后把它們轉(zhuǎn)化為成果。一直以來,他教我如何體貼關(guān)心他人。感謝您,父親。
Marilyn Wolf第2版前言相對2000年本書第1版出版的時候,如今嵌入式計(jì)算更為重要。更多的產(chǎn)品中使用了嵌入式處理器,從玩具到飛機(jī)都有應(yīng)用。片上系統(tǒng)現(xiàn)在使用幾百個CPU。手機(jī)朝著新的標(biāo)準(zhǔn)計(jì)算平臺方向發(fā)展。就像2006年9月《IEEE Computer》雜志上我的專欄中所指出的那樣,當(dāng)今世界至少有50萬嵌入式系統(tǒng)程序員,可能接近80萬。
在這一版中,我盡力做了更新和補(bǔ)充。本書的一個主要改變是使用TI C55x DSP。我慎重地重寫了關(guān)于實(shí)時調(diào)度的討論。嘗試將性能分析主題盡可能在更多的抽象層次上擴(kuò)展。指出多處理器在甚至最平凡的嵌入式系統(tǒng)中的重要性,此版對硬/軟件協(xié)同設(shè)計(jì)和多處理器也進(jìn)行了更通用的介紹。
計(jì)算機(jī)教學(xué)領(lǐng)域的一個改變是,本教材成為越來越低年級的課本。過去用于研究生的教材現(xiàn)在用于高年級本科生;在可預(yù)見的未來,本書的部分內(nèi)容將可作為大學(xué)二年級教材。我認(rèn)為可以選取本書的部分內(nèi)容去覆蓋更先進(jìn)和更基礎(chǔ)的課程。一些高年級學(xué)生可能不需要前面章節(jié)的背景知識,這樣可以把更多時間花在軟件性能分析、調(diào)度和多處理器上。當(dāng)開設(shè)介紹性課程時,軟件性能分析可作為探索微處理器體系結(jié)構(gòu)和軟件體系結(jié)構(gòu)的一個可選方案;這樣的課程可以關(guān)注前幾章的內(nèi)容。
本書和我的其他書的新網(wǎng)站是http://www.waynewolf.us。在這個網(wǎng)站里,可以找到本書相關(guān)材料的概括、實(shí)驗(yàn)建議,還可找到關(guān)于嵌入式系統(tǒng)的更多信息的網(wǎng)站鏈接。
致謝感謝許多幫助我完成第2版的人。德州儀器的Cathy Wicks和Naser Salameh在理解C55x上給了我非常有價(jià)值的幫助。FreeRTOS.org的Richard Barry不僅慷慨地允許我引用其操作系統(tǒng)的源碼,還幫我澄清代碼的解釋。本書的編輯是Morgan Kaufmann出版社的Chuck Glaser,他知道何時需要耐心,何時需要鼓勵,何時需要誘導(dǎo)。當(dāng)然,還要感謝Nancy和Alec耐心為我錄入。本書的任何問題,不管是大是小,自然都是我個人的責(zé)任。
Marilyn Wolf第1版前言微處理器早已成為我們生活的一部分,然而,微處理器足夠強(qiáng)大到能執(zhí)行真正復(fù)雜的功能還是近幾年的事。在摩爾定律的驅(qū)動下,微處理器飛速發(fā)展,同時促使嵌入式計(jì)算成為一門學(xué)科。在微處理器的早期階段,所有組件相對較小也較簡單,
---作者簡介---
瑪里琳·沃爾夫(Marilyn Wolf) 佐治亞理工學(xué)院教授,佐治亞研究聯(lián)合會學(xué)者,IEEE會士,ACM會士。1984~1989年任職于貝爾實(shí)驗(yàn)室,1989~2007年執(zhí)教于普林斯頓大學(xué)。她于2003年獲得ASEE Frederick E. Terman獎,于2006年獲得IEEE電路與系統(tǒng)教育獎。
---譯者簡介---
林水生 電子科技大學(xué)通信與信息工程學(xué)院教授,物聯(lián)網(wǎng)工程系主任,全國物聯(lián)網(wǎng)工程及相關(guān)專業(yè)教學(xué)指導(dǎo)小組成員。目前主要從事無線通信系統(tǒng)、無線傳感器網(wǎng)絡(luò)、通信集成電路設(shè)計(jì)等方面的研究工作。
目 錄
出版者的話
譯者序
第1版序言
第4版前言
第3版前言
第2版前言
第1版前言
第1章 嵌入式計(jì)算1
1.1 引言1
1.2 復(fù)雜系統(tǒng)與微處理器1
1.2.1 嵌入式計(jì)算機(jī)2
1.2.2 嵌入式計(jì)算應(yīng)用的特點(diǎn)3
1.2.3 為什么使用微處理器4
1.2.4 信息物理系統(tǒng)6
1.2.5 防危性和安全性6
1.2.6 嵌入式計(jì)算系統(tǒng)設(shè)計(jì)所面臨的挑戰(zhàn)8
1.2.7 嵌入式計(jì)算系統(tǒng)的性能9
1.3 嵌入式系統(tǒng)設(shè)計(jì)過程9
1.3.1 需求10
1.3.2 規(guī)格說明14
1.3.3 體系結(jié)構(gòu)設(shè)計(jì)14
1.3.4 設(shè)計(jì)硬件與軟件組件16
1.3.5 系統(tǒng)集成16
1.3.6 系統(tǒng)設(shè)計(jì)的形式化方法16
1.3.7 結(jié)構(gòu)描述17
1.3.8 行為描述20
1.4 設(shè)計(jì)示例:模型火車控制器22
1.4.1 需求23
1.4.2 DCC24
1.4.3 概念性規(guī)格說明25
1.4.4 詳細(xì)規(guī)格說明27
1.4.5 經(jīng)驗(yàn)總結(jié)32
1.5 本書導(dǎo)讀32
1.5.1 第2章:指令集33
1.5.2 第3章:CPU33
1.5.3 第4章:計(jì)算平臺33
1.5.4 第5章:程序設(shè)計(jì)與分析34
1.5.5 第6章:進(jìn)程和操作系統(tǒng)34
1.5.6 第7章:系統(tǒng)設(shè)計(jì)技術(shù)35
1.5.7 第8章:物聯(lián)網(wǎng)系統(tǒng)35
1.5.8 第9章:汽車和航天系統(tǒng)35
1.5.9 第10章:嵌入式多處理器36
1.6 總結(jié)36
我們學(xué)到了什么36
擴(kuò)展閱讀36
問題37
上機(jī)練習(xí)38
第2章 指令集39
2.1 引言39
2.2 預(yù)備知識39
2.2.1 計(jì)算機(jī)體系結(jié)構(gòu)分類39
2.2.2 匯編語言41
2.2.3 VLIW處理器42
2.3 ARM處理器43
2.3.1 處理器和存儲體系44
2.3.2 數(shù)據(jù)運(yùn)算44
2.3.3 控制流程49
2.3.4 ARM的高級特性54
2.4 PICmicro系列中端微處理器55
2.4.1 處理器和存儲體系55
2.4.2 數(shù)據(jù)操作55
2.4.3 控制流程57
2.5 TI C55x DSP58
2.5.1 處理器和存儲體系58
2.5.2 尋址模式61
2.5.3 數(shù)據(jù)操作62
2.5.4 控制流程63
2.5.5 C語言編程指南64
2.6 TI C64x65
2.7 總結(jié)68
我們學(xué)到了什么68
擴(kuò)展閱讀68
問題68
上機(jī)練習(xí)69
第3章 CPU70
3.1 引言70
3.2 輸入/輸出編程70
3.2.1 輸入/輸出設(shè)備70
3.2.2 輸入/輸出原語72
3.2.3 忙等待I/O73
3.2.4 中斷74
3.3 特權(quán)模式、異常和陷阱85
3.3.1 特權(quán)模式85
3.3.2 異常85
3.3.3 陷阱86
3.4 協(xié)處理器86
3.5 存儲系統(tǒng)機(jī)制86
3.5.1 高速緩存87
3.5.2 存儲管理單元和地址轉(zhuǎn)換91
3.6 CPU性能94
3.6.1 流水線技術(shù)94
3.6.2 高速緩存的性能98
3.7 CPU的功耗99
3.7.1 CMOS功耗99
3.7.2 電源管理模式99
3.7.3 程序級電源管理101
3.8 防危性和安全性102
3.9 設(shè)計(jì)示例:數(shù)據(jù)壓縮器103
3.9.1 需求和算法103
3.9.2 規(guī)格說明105
3.9.3 程序設(shè)計(jì)106
3.9.4 測試111
3.10 總結(jié)112
我們學(xué)到了什么112
擴(kuò)展閱讀112
問題112
上機(jī)練習(xí)115
第4章 計(jì)算平臺116
4.1 引言116
4.2 基本的計(jì)算平臺116
4.2.1 平臺硬件組件116
4.2.2 平臺軟件組件118
4.3 CPU總線119
4.3.1 總線結(jié)構(gòu)和協(xié)議119
4.3.2 直接內(nèi)存訪問124
4.3.3 系統(tǒng)總線配置125
4.4 存儲設(shè)備和系統(tǒng)127
4.5 基于計(jì)算平臺的系統(tǒng)設(shè)計(jì)129
4.5.1 示例平臺129
4.5.2 選擇平臺129
4.5.3 知識產(chǎn)權(quán)131
4.5.4 開發(fā)環(huán)境132
4.5.5 看門狗定時器132
4.5.6 調(diào)試技術(shù)133
4.5.7 調(diào)試中的困難和挑戰(zhàn)135
4.6 消費(fèi)類電子設(shè)備的體系結(jié)構(gòu)136
4.6.1 消費(fèi)類電子設(shè)備的用例和需求136
4.6.2 文件系統(tǒng)137
4.7 平臺級性能分析138
4.8 平臺級電源管理141
4.9 設(shè)計(jì)示例:鬧鐘142
4.9.1 需求142
4.9.2 規(guī)格說明143
4.9.3 系統(tǒng)體系結(jié)構(gòu)146
4.9.4 組件設(shè)計(jì)和測試147
4.9.5 系統(tǒng)集成和測試147
4.10 設(shè)計(jì)示例:音頻播放器147
4.10.1 工作原理和需求147
4.10.2 規(guī)格說明149
4.10.3 系統(tǒng)體系結(jié)構(gòu)150
4.10.4 組件設(shè)計(jì)和測試151
4.10.5 系統(tǒng)集成和調(diào)試151
4.11 總結(jié)151
我們學(xué)到了什么151
擴(kuò)展閱讀151
問題152
上機(jī)練習(xí)154
第5章 程序設(shè)計(jì)與分析155
5.1 引言155
5.2 嵌入式程序的組件155
5.2.1 狀態(tài)機(jī)155
5.2.2 循環(huán)緩沖區(qū)和面向流的程序設(shè)計(jì)157
5.2.3 隊(duì)列與生產(chǎn)者/消費(fèi)者系統(tǒng)161
5.3 程序模型163
5.3.1 數(shù)據(jù)流圖163
5.3.2 控制/數(shù)據(jù)流圖164
5.4 匯編、鏈接和加載166
5.4.1 匯編器167
5.4.2 鏈接170
5.4.3 目標(biāo)代碼設(shè)計(jì)171
5.5 編譯技術(shù)172
5.5.1 編譯過程172
5.5.2 基本編譯方法173
5.5.3 編譯器優(yōu)化方法179
5.6 程序級性能分析185
5.6.1 程序性能分析186
5.6.2 測量驅(qū)動的性能分析190
5.7 軟件性能優(yōu)化193
5.7.1 循環(huán)的基本優(yōu)化193
5.7.2 針對高速緩存的優(yōu)化194
5.7.3 性能優(yōu)化策略196
5.8 程序級的能量和功率分析及優(yōu)化197
5.9 程序長度的分析和優(yōu)化199
5.10 程序驗(yàn)證和測試200
5.10.1 白盒測試201
5.10.2 黑盒測試205
5.10.3 功能性測試206
5.11 防危性與安全性207
5.12 設(shè)計(jì)示例:軟件調(diào)制解調(diào)器207
5.12.1 工作原理和需求207
5.12.2 規(guī)格說明209
5.12.3 系統(tǒng)體系結(jié)構(gòu)209
5.12.4 組件設(shè)計(jì)和測試210
5.12.5 系統(tǒng)集成和測試210
5.13 設(shè)計(jì)示例:數(shù)碼相機(jī)210
5.13.1 工作原理和需求210
5.13.2 規(guī)格說明214
5.13.3