本書(shū)第1版于2017年由清華大學(xué)出版社出版。在此后的5年多時(shí)間里,本書(shū)得到了高校師生及業(yè)界工程技術(shù)人員的廣泛關(guān)注。在此期間,作者陸續(xù)收到了來(lái)自多個(gè)教學(xué)團(tuán)隊(duì)和很多讀者的問(wèn)題咨詢和建議反饋,其中涉及課程的內(nèi)容組織、知識(shí)闡述、教學(xué)方法、課程資源、習(xí)題分析等諸多方面。在這些反饋中,普遍對(duì)本書(shū)所呈現(xiàn)的多維融合嵌入式系統(tǒng)知識(shí)體系給予了高度評(píng)價(jià),認(rèn)為本書(shū)從宏觀到微觀、從模型到具象、從硬件到軟件的多維融合知識(shí)體系組織方式有效破解了嵌入式系統(tǒng)知識(shí)體系中的樹(shù)木、森林在有限篇幅內(nèi)難以兼顧的內(nèi)容組織難題,深入淺出、內(nèi)容豐富且實(shí)用易學(xué)。因此,本書(shū)得到了越來(lái)越多的人認(rèn)可,被國(guó)內(nèi)30多所高校(包括雙一流高校)以及中國(guó)航空研究院研究生院等作為主要教學(xué)資源。同時(shí),作者負(fù)責(zé)組織建設(shè)并主講的嵌入式系統(tǒng)課程已被評(píng)為西北工業(yè)大學(xué)課程思政示范課程、一流本科課程(線下一流課程)、高水平在線開(kāi)放課程及在線示范課程,并獲得西北工業(yè)大學(xué)優(yōu)秀教學(xué)成果獎(jiǎng)一等獎(jiǎng)和二等獎(jiǎng)。教材和課程獲得的廣泛好評(píng)使得作者15個(gè)月潛心著述所付出的艱辛實(shí)現(xiàn)了價(jià)值的彰顯和升華,對(duì)于作者是一種極大的寬慰、鼓舞和鞭策。
信息技術(shù)日新月異,嵌入式系統(tǒng)技術(shù)快速演化,5年對(duì)于嵌入式系統(tǒng)類(lèi)的專業(yè)圖書(shū)已是較為漫長(zhǎng)的時(shí)間了。為此,在清華大學(xué)出版社的建議下,作者于2021年下半年開(kāi)始對(duì)第1版內(nèi)容進(jìn)行修訂,經(jīng)過(guò)大半年的技術(shù)資料查閱以及增刪改等修訂工作,最終完成了本書(shū)的第2版。本書(shū)第2版內(nèi)容的組織依然以多維融合的知識(shí)體系為主要框架,具體分為嵌入式系統(tǒng)概述、數(shù)字電路與嵌入式硬件、嵌入式軟件與嵌入式開(kāi)發(fā)方法四大部分,共11章,知識(shí)框架如圖1所示。其中,第1章為概述,第2~6章為數(shù)字電路與嵌入式硬件,第7~10章為嵌入式軟件,第11章為嵌入式系統(tǒng)開(kāi)發(fā)方法。
圖1本書(shū)的知識(shí)架構(gòu)
具體內(nèi)容安排及修訂情況簡(jiǎn)要說(shuō)明如下。
第1章從科技?xì)v史與文化著手,從現(xiàn)代信息科學(xué)、計(jì)算科學(xué)、通信技術(shù)及網(wǎng)絡(luò)技術(shù)等的交叉融合和發(fā)展導(dǎo)入,以泛在計(jì)算、信息物理融合計(jì)算為背景分析了嵌入式(計(jì)算機(jī))系統(tǒng)的經(jīng)典、高階概念及其內(nèi)涵,重點(diǎn)討論了計(jì)算裝置的可嵌入式發(fā)展過(guò)程以及嵌入式系統(tǒng)、組成、特點(diǎn)、趨勢(shì),對(duì)嵌入式系統(tǒng)與信息物理系統(tǒng)(CPS)、物聯(lián)網(wǎng)(IoT)的聯(lián)系及區(qū)別進(jìn)行了辨析。同時(shí),對(duì)習(xí)題進(jìn)行了重新設(shè)計(jì)。
第2章總結(jié)、論述了與本書(shū)后續(xù)內(nèi)容密切相關(guān)的硬件電路知識(shí);進(jìn)而闡述了嵌入式硬件的架構(gòu)模型與子系統(tǒng)組成、典型嵌入式系統(tǒng)的硬件形式以及基本的硬件設(shè)計(jì)方法。第2版重點(diǎn)對(duì)集電極開(kāi)路、上/下拉電阻、漏極開(kāi)路與推挽電路、習(xí)題等內(nèi)容進(jìn)行了修訂。需要說(shuō)明的是,本章所涉及的電路、硬件等知識(shí)是從本書(shū)后續(xù)內(nèi)容的需要中反向歸納得出的,是必要但非充分的。
第3章從嵌入式處理器的組成模型和典型邏輯架構(gòu)出發(fā),總結(jié)、闡述了不同類(lèi)型嵌入式處理器的體系、組成、特點(diǎn)及差異,在此基礎(chǔ)上分析了幾種典型嵌入式處理器體系的機(jī)制和特性。第2版增加了RISCV指令集及處理器,總結(jié)、更新了ARM、SoC、AI(眾核)計(jì)算等處理器的最新發(fā)展及特性,并對(duì)習(xí)題進(jìn)行了重新設(shè)計(jì)。
第4章歸納、討論了嵌入式存儲(chǔ)器子系統(tǒng)的體系與模型,重點(diǎn)分析了不同類(lèi)型存儲(chǔ)器的架構(gòu)、原理、特性以及微觀的電路機(jī)制,并對(duì)存儲(chǔ)器的測(cè)試與驗(yàn)證方法進(jìn)行了簡(jiǎn)要介紹。第2版重點(diǎn)對(duì)混合存儲(chǔ)器、新存儲(chǔ)技術(shù)以及習(xí)題進(jìn)行了重新設(shè)計(jì)。
第5章圍繞最小系統(tǒng)硬件設(shè)計(jì),闡述了電源、復(fù)位、時(shí)鐘等外圍電路的基本工作原理與設(shè)計(jì)機(jī)制,并對(duì)相關(guān)知識(shí)進(jìn)行了延伸討論。第2版增加了最小系統(tǒng)的內(nèi)容,更新了時(shí)鐘電路、低功耗設(shè)計(jì)等內(nèi)容,重新設(shè)計(jì)了習(xí)題。
第6章面向完整的嵌入式系統(tǒng)硬件設(shè)計(jì)需要,論述了通用和典型I/O與總線的原理、特性及應(yīng)用機(jī)制。第2版對(duì)SPI接口、VP線、藍(lán)牙、WiFi等內(nèi)容進(jìn)行了修訂和更新,對(duì)習(xí)題進(jìn)行了重新設(shè)計(jì)。
第7章在分析嵌入式系統(tǒng)啟動(dòng)與運(yùn)行過(guò)程的基礎(chǔ)上,總結(jié)了嵌入式軟件系統(tǒng)的典型架構(gòu),重點(diǎn)對(duì)系統(tǒng)軟件中基礎(chǔ)軟件組件的機(jī)制與特性進(jìn)行了分析和討論。第2版對(duì)嵌入式系統(tǒng)啟動(dòng)過(guò)程與模式、Boot Loader、BSP等內(nèi)容、示例進(jìn)行了修訂,并增加了對(duì)容器、微服務(wù)與云原生的討論,重新設(shè)計(jì)了習(xí)題。
第8章系統(tǒng)地討論了嵌入式操作系統(tǒng)的相關(guān)內(nèi)容。本章首先歸納了嵌入式操作系統(tǒng)的架構(gòu)模型,進(jìn)而分析了不同嵌入式操作系統(tǒng)所呈現(xiàn)的共性服務(wù)機(jī)制和特性,最后給出了幾個(gè)典型嵌入式操作系統(tǒng)的實(shí)例分析。第2版對(duì)微內(nèi)核、EOS模型、優(yōu)先級(jí)翻轉(zhuǎn)問(wèn)題的解決方法、實(shí)時(shí)性與實(shí)時(shí)系統(tǒng)、內(nèi)核服務(wù)等內(nèi)容進(jìn)行了全面修訂,典型嵌入式操作系統(tǒng)部分刪掉了Windows Embedded系列操作系統(tǒng)的分析,增加了SylixOS、鴻蒙等典型國(guó)產(chǎn)操作系統(tǒng)的分析,重新設(shè)計(jì)了習(xí)題。
第9章結(jié)合典型軟件實(shí)現(xiàn)分析和討論了嵌入式圖形庫(kù)、文件系統(tǒng)、數(shù)據(jù)庫(kù)、協(xié)議棧等嵌入式軟件組件的原理與機(jī)制。第2版與第1版內(nèi)容基本一致,主要修改了第1版中的錯(cuò)誤,補(bǔ)充了習(xí)題。
第10章綜合闡述了嵌入式應(yīng)用軟件的設(shè)計(jì)方法,包括嵌入式應(yīng)用軟件典型結(jié)構(gòu)、中斷與數(shù)據(jù)共享問(wèn)題、嵌入式軟件設(shè)計(jì)機(jī)制以及軟件工程方法等。第2版對(duì)模塊化任務(wù)設(shè)計(jì)、中斷服務(wù)程序設(shè)計(jì)等內(nèi)容進(jìn)行了修訂,增加了對(duì)Dev(Sec)Ops方法的討論,重新設(shè)計(jì)了習(xí)題。
第11章根據(jù)嵌入式系統(tǒng)的開(kāi)發(fā)特點(diǎn),總結(jié)了嵌入式軟件與系統(tǒng)開(kāi)發(fā)過(guò)程中的調(diào)試、測(cè)試及仿真驗(yàn)證等技術(shù)的基本原理、工作機(jī)制和實(shí)施方法。第2版與第1版內(nèi)容基本一致,更新了部分示例和內(nèi)容。
本書(shū)寫(xiě)作采用了整體體系貫穿與局部深度剖析相結(jié)合、共性機(jī)理歸納與設(shè)計(jì)案例分析相呼應(yīng)的思路,系統(tǒng)、生動(dòng)又深入淺出地呈現(xiàn)了嵌入式系統(tǒng)技術(shù)所涉及的體系架構(gòu)、技術(shù)原理與設(shè)計(jì)方法等,第2版在強(qiáng)調(diào)新穎性、技術(shù)性、思想性的同時(shí)又進(jìn)一步提升了實(shí)用性和易讀性。
除了對(duì)專業(yè)內(nèi)容的修訂之外,第2版中還引用了《柏拉圖與技術(shù)呆子》等以數(shù)字技術(shù)為主要背景的科技哲學(xué)著作中的內(nèi)容,進(jìn)而形成了包括科技事例、科技文化和科技哲學(xué)等在內(nèi)的課程思政元素,期望能為讀者提供超出技術(shù)本身的更高層次的知識(shí)營(yíng)養(yǎng)。
在本書(shū)的寫(xiě)作過(guò)程中,作者得到了同行、親友的關(guān)心、鼓勵(lì)與熱心幫助,他們是我不斷前行的動(dòng)力,作者在此一并表示感謝。特別感謝中國(guó)計(jì)算機(jī)學(xué)會(huì)嵌入式系統(tǒng)專業(yè)委員會(huì)主任、西安電子科技大學(xué)副校長(zhǎng)王泉教授,西北工業(yè)大學(xué)副校長(zhǎng)張艷寧教授,西北工業(yè)大學(xué)軟件學(xué)院院長(zhǎng)鄭江濱教授,西北工業(yè)大學(xué)計(jì)算機(jī)學(xué)院院長(zhǎng)尚學(xué)群教授等。感謝在書(shū)稿校對(duì)中付出智慧和辛勤努力的趙啟迪、馮靖凱、李強(qiáng)、茆漢兵、杜長(zhǎng)怡、龔祖、王天洋、李丘剛、裴伯昊、侯博元等多位研究生。
感謝我的家人!母親在電話里時(shí)時(shí)叮囑我: 邁入中年,要在工作中注意休息和身體。戎馬躬耕一生的父親已離我遠(yuǎn)去,但他潛心求學(xué)、迎難而上、踏實(shí)肯干的精神已深深融入我的生命,也在我們家庭中長(zhǎng)久延續(xù)。
感謝我的夫人李瑜女士給予的支持和照顧,感謝嘉航、嘉芮兩位少年給我?guī)?lái)的教育挑戰(zhàn)和樂(lè)趣。讓我們?cè)诖髳?ài)中共同成長(zhǎng)、一起進(jìn)步!
張凱龍西北工業(yè)大學(xué)軟件學(xué)院教授中國(guó)計(jì)算機(jī)學(xué)會(huì)嵌入式系統(tǒng)專業(yè)委員會(huì)秘書(shū)長(zhǎng)2023年5月于西安
第1章概述1
1.1背景延伸: 現(xiàn)代信息與計(jì)算概念的緣起1
1.1.1麥克斯韋妖、信息與智慧1
1.1.2計(jì)算理論與技術(shù)的出現(xiàn)3
1.1.3現(xiàn)代計(jì)算機(jī)技術(shù)的誕生與演化5
1.1.4電子通信與網(wǎng)絡(luò)技術(shù)發(fā)展8
1.2理解嵌入式系統(tǒng)9
1.2.1計(jì)算裝置的可嵌入發(fā)展9
1.2.2嵌入式系統(tǒng)內(nèi)涵的演化11
1.2.3相關(guān)術(shù)語(yǔ)辨析15
1.3嵌入式系統(tǒng)的組成與特點(diǎn)17
1.3.1組成結(jié)構(gòu)17
1.3.2技術(shù)特點(diǎn)與發(fā)展趨勢(shì)18
1.4知識(shí)體系23
1.5小結(jié)26
習(xí)題26
第2章嵌入式硬件基礎(chǔ)27
2.1器件和電路術(shù)語(yǔ)及基本元件27
2.1.1器件術(shù)語(yǔ)27
2.1.2電路術(shù)語(yǔ)30
2.1.3基本元件32
2.2嵌入式系統(tǒng)硬件組成38
2.2.1硬件基本架構(gòu)模型38
2.2.2處理器子系統(tǒng)39
2.2.3存儲(chǔ)子系統(tǒng)41
2.2.4時(shí)鐘子系統(tǒng)42
2.2.5I/O子系統(tǒng)44
2.3嵌入式系統(tǒng)硬件典型形式44
2.3.1基于通用計(jì)算機(jī)擴(kuò)展的嵌入式硬件44
2.3.2基于領(lǐng)域標(biāo)準(zhǔn)模塊集成的嵌入式硬件45
2.3.3面向具體產(chǎn)品的專用嵌入式硬件47
2.4硬件設(shè)計(jì)基本方法48
2.4.1Protel EDA軟件48
2.4.2電路設(shè)計(jì)基本流程51
2.4.3電磁兼容性問(wèn)題53
2.4.4低功耗問(wèn)題57
2.4.5嵌入式硬件設(shè)計(jì)示例58
2.5小結(jié)67
習(xí)題67
第3章嵌入式處理器68
3.1處理器模型與邏輯體系68
3.1.1處理器基本組成模型 68
3.1.2典型處理器架構(gòu)72
3.2嵌入式處理器的類(lèi)型及特點(diǎn)76
3.2.1嵌入式微控制器76
3.2.2嵌入式微處理器78
3.2.3數(shù)字信號(hào)處理器80
3.2.4可編程邏輯器件83
3.2.5片上系統(tǒng)91
3.2.6多核、眾核處理器94
3.3典型嵌入式處理器體系102
3.3.1ARM架構(gòu)102
3.3.2MIPS架構(gòu)117
3.3.3PowerPC架構(gòu)122
3.4性能評(píng)價(jià)指標(biāo)131
3.5小結(jié)133
習(xí)題133
第4章嵌入式存儲(chǔ)技術(shù)134
4.1基本存儲(chǔ)體系與模型134
4.1.1嵌入式系統(tǒng)存儲(chǔ)體系134
4.1.2存儲(chǔ)器結(jié)構(gòu)模型135
4.1.3存儲(chǔ)器基本操作流程136
4.1.4存儲(chǔ)器指標(biāo)137
4.2存儲(chǔ)器分類(lèi)及特性139
4.2.1只讀存儲(chǔ)器139
4.2.2隨機(jī)存儲(chǔ)器144
4.2.3混合存儲(chǔ)器155
4.3存儲(chǔ)器測(cè)試與驗(yàn)證173
4.3.1可讀寫(xiě)存儲(chǔ)器的測(cè)試173
4.3.2只讀存儲(chǔ)器測(cè)試174
4.4小結(jié)176
習(xí)題176
第5章最小系統(tǒng)與外圍電路設(shè)計(jì)178
5.1理解最小系統(tǒng)178
5.2電源電路179
5.2.1電源電路設(shè)計(jì)方法179
5.2.2延伸: 電源管理與低功耗設(shè)計(jì)183
5.3復(fù)位電路187
5.3.1上電復(fù)位188
5.3.2手動(dòng)復(fù)位193
5.3.3看門(mén)狗復(fù)位195
5.3.4軟件復(fù)位196
5.4時(shí)鐘電路200
5.4.1信號(hào)源: 振蕩電路原理200
5.4.2多時(shí)鐘管理205
5.4.3延伸: 時(shí)鐘管理與低功耗設(shè)計(jì)211
5.5電路抖動(dòng)與消抖211
5.5.1抖動(dòng)現(xiàn)象與危害211
5.5.2硬件消抖213
5.5.3軟件消抖215
5.6小結(jié)217
習(xí)題217
第6章接口、總線與網(wǎng)絡(luò)擴(kuò)展218
6.1通用I/O與串行總線218
6.1.1GPIO218
6.1.2SPI222
6.1.3SDIO231
6.1.4I2S236
6.1.5I2C242
6.1.6UART與USART246
6.2典型工業(yè)總線、背板總線及網(wǎng)絡(luò)258
6.2.1CAN總線258
6.2.2實(shí)時(shí)工業(yè)以太網(wǎng)268
6.2.3VP線274
6.3無(wú)線接口與網(wǎng)絡(luò)281
6.3.1ZigBee281
6.3.2藍(lán)牙287
6.3.3WiFi299
6.3.4NFC301
6.4小結(jié)306
習(xí)題306
第7章嵌入式軟件結(jié)構(gòu)與基礎(chǔ)軟件組件308
7.1計(jì)算系統(tǒng)的啟動(dòng)與運(yùn)行過(guò)程308
7.1.1通用計(jì)算機(jī)啟動(dòng)過(guò)程分析308
7.1.2嵌入式系統(tǒng)啟動(dòng)過(guò)程分析309
7.2嵌入式軟件結(jié)構(gòu)312
7.2.1基于裸機(jī)的嵌入式軟件結(jié)構(gòu)312
7.2.2基于嵌入式操作系統(tǒng)的嵌入式軟件結(jié)構(gòu)313
7.3基礎(chǔ)軟件組件315
7.3.1ROM Monitor315
7.3.2BootLoader318
7.3.3BSP326
7.3.4虛擬機(jī)監(jiān)控程序336
7.3.5容器、微服務(wù)與云原生 344
7.4小結(jié)346
習(xí)題347
第8章嵌入式操作系統(tǒng)及其服務(wù)機(jī)制348
8.1架構(gòu)與模型348
8.1.1宏內(nèi)核、微內(nèi)核與超微內(nèi)核348
8.1.2功能模型350
8.2服務(wù)機(jī)制353
8.2.1基本概念353
8.2.2關(guān)于實(shí)時(shí)364
8.2.3內(nèi)核服務(wù)機(jī)制369
8.3典型嵌入式操作系統(tǒng)387
8.3.1RTX51387
8.3.2C/OS388
8.3.3嵌入式Linux系列390
8.3.4VxWorks395
8.3.5SylixOS397
8.3.6鴻蒙操作系統(tǒng)400
8.3.7其他嵌入式操作系統(tǒng)402
8.4小結(jié)407
習(xí)題407
第9章嵌入式軟件組件409
9.1嵌入式圖形庫(kù)與圖形組件409
9.1.1C/GUI與emWin409
9.1.2NanoX Window412
9.1.3MiniGUI413
9.1.4Qt419
9.1.5可編程圖形界面屏423
9.2嵌入式文件系統(tǒng)424
9.2.1JFFS/JFFS2425
9.2.2YAFFS/YAFFS2428
9.2.3UBIFS432
9.2.4只讀文件系統(tǒng)434
9.2.5RAM文件系統(tǒng)435
9.3嵌入式數(shù)據(jù)庫(kù)437
9.3.1SQLite438
9.3.2Berkeley DB439
9.3.3eXtremeDB441
9.4嵌入式網(wǎng)絡(luò)協(xié)議棧443
9.5小結(jié)444
習(xí)題444
第10章嵌入式應(yīng)用軟件設(shè)計(jì)方法445
10.1嵌入式應(yīng)用軟件典型結(jié)構(gòu)445
10.1.1輪轉(zhuǎn)結(jié)構(gòu)445
10.1.2前后臺(tái)軟件結(jié)構(gòu)447
10.1.3函數(shù)隊(duì)列調(diào)度結(jié)構(gòu)450
10.1.4基于嵌入式操作系統(tǒng)的軟件結(jié)構(gòu)451
10.2中斷與數(shù)據(jù)共享問(wèn)題453
10.2.1中斷服務(wù)程序設(shè)計(jì)453
10.2.2避免/消除數(shù)據(jù)共享457
10.3嵌入式軟件設(shè)計(jì)機(jī)制464
10.3.1可重入代碼設(shè)計(jì)464
10.3.2軟件看門(mén)狗方法468
10.3.3避免頻繁地創(chuàng)建、銷(xiāo)毀任務(wù)471
10.3.4基于狀態(tài)機(jī)方法設(shè)計(jì)軟件邏輯472
10.3.5FPGA IP核開(kāi)發(fā)流程473
10.3.6生成可執(zhí)行的嵌入式軟件474
10.4軟件工程方法484
10.4.1模型驅(qū)動(dòng)的開(kāi)發(fā)方法: 從V模型到Y(jié)模型484
10.4.2軟硬件協(xié)同設(shè)計(jì)486
10.4.3DevOps方法487
10.4.4制定編碼規(guī)范489
10.5小結(jié)491
習(xí)題491
第11章調(diào)試、測(cè)試與仿真方法492
11.1嵌入式軟件調(diào)試492
11.1.1基于宿主機(jī)的調(diào)試493
11.1.2ROM Monitor軟件調(diào)試495
11.1.3ROM仿真器496
11.1.4在線仿真器497
11.1.5JTAG調(diào)試499
11.2嵌入式軟件測(cè)試501
11.2.1基本測(cè)試方法與指標(biāo)502
11.2.2測(cè)試工具的使用507
11.3系統(tǒng)仿真驗(yàn)證技術(shù)511
11.3.1計(jì)算機(jī)仿真方法及其原理512
11.3.2可視化技術(shù)514
11.4小結(jié)516
習(xí)題516
后記517
參考文獻(xiàn)518