在梳理不斷演化和豐富的嵌入式系統理論、方法、技術及應用脈絡的基礎上,本書致力于構建自架構、原理到設計,由宏觀特性到微觀原理,硬件與軟件、理論與實踐相融合的多維知識體系。開篇首先以經典的嵌入式系統概念、內涵以及必要的基礎知識作為鋪墊進行導入,進而從嵌入式硬件、嵌入式軟件以及設計與驗證方法三個方面展開論述。其中,硬件部分深入地闡述了嵌入式處理器、存儲器等子系統以及*小系統外圍電路和I/O接口擴展等硬件組件的體系結構、工作原理、設計方法與示例。軟件部分重點闡述了嵌入式軟件系統的組成結構與基礎組件,嵌入式(實時)操作系統共性的功能模型、服務機制、設計方法和典型系統示例,以及嵌入式圖形庫、文件系統、數據庫等典型的嵌入式軟件組件。設計與驗證方法部分則分析和闡述了嵌入式軟件與系統的開發機制以及常見調試、測試、仿真方法的技術原理。全書寫作采用了整體體系貫穿與局部深度剖析相結合、共性機理歸納與設計示例分析相呼應的思路,力求系統、生動又深入淺出地闡述嵌入式系統技術涉及的體系結構、技術原理與設計機制,并在突出技術性、新穎性的同時又注重內容的易讀性和實用性。
本書適合供高等院校計算機科學與技術、物聯網、自動化、電子信息及電氣工程等相關專業的高年級本科生、研究生學習,尤其適合作為嵌入式(計算機)系統類課程的授課教材或參考教材,同時也適合作為專業設計人員的技術參考用書。
嵌入式系統作為信息技術領域的重要技術發展方向,已廣泛融入到軍事國防、工業裝備、智能交通、醫療電子、信息通信等諸多領域。在經歷網絡化發展階段之后,嵌入式系統技術的發展已經開始步入微型化、信息物理融合以及智能化的時代,是互聯網 、物聯網、智能制造等眾多領域進行技術變革和跨越式發展的重要支撐。隨著相關技術的飛速發展,嵌入式系統技術完備、龐大的知識體系也在不斷演化和豐富,對嵌入式系統技術的學習隨之邁入更為深化和高級的階段。在總結嵌入式系統知識特點的基礎上,本書全面地梳理了嵌入式系統技術的知識結構,并以構建自架構、原理到設計,由宏觀特性到微觀原理,以及硬件與軟件、理論與實踐相融合的多維、立體知識體系為總目標,以整體體系貫穿與局部深度剖析相結合、共性機理歸納與設計示例分析相呼應的方法展開相關內容的闡述和討論。全書內容總體分為嵌入式系統概述、硬件、軟件及設計方法四個大的部分,共11章,知識結構如圖1所示。其中,第1章為概述,第2章至第6章為嵌入式硬件部分,第7章至第10章為嵌入式軟件相關內容,第11章為開發與驗證方法,具體內容安排如下。圖1本書的知識架構第1章,從計算技術、通信與網絡技術的發展導入,分析了計算裝置的可嵌入發展歷程,并重點討論了嵌入式系統的內涵、組成、特點及其趨勢。第2章,總結、論述了與本書后續內容密切相關的硬件電路知識;進而闡述了嵌入式硬件的架構模型與子系統組成、典型嵌入式系統的硬件形式以及基本的硬件設計方法。第3章,由嵌入式處理器的組成模型和典型邏輯架構出發,總結、闡述了不同類型嵌入式處理器的體系、組成、特點及其差異,在此基礎上分析了幾種典型嵌入式處理器體系的機制和特性。第4章,歸納、討論了嵌入式存儲器子系統的體系與模型,重點分析了不同類型存儲器的架構、原理、特性以及微觀的電路機制,并簡要闡述了存儲器的測試與驗證方法。第5章,圍繞最小系統硬件設計,闡述了電源、復位、時鐘等外圍電路的基本工作原理與設計機制,并對相關知識進行了延伸討論。第6章,面向完整的嵌入式系統硬件設計需要,分析、討論了常見和典型I/O接口與總線的原理、特性及應用機制。第7章,在分析嵌入式系統啟動與運行過程的基礎上,總結了嵌入式軟件系統的典型架構,重點對系統軟件中基礎軟件組件的機制與特性進行了分析和討論。第8章,系統地討論了嵌入式(實時)操作系統的相關內容。本章首先歸納了嵌入式操作系統的架構與功能模型,進而分析了不同嵌入式操作系統中的共性服務機制和方法,最后給出了幾個典型嵌入式操作系統的分析實例。第9章,結合嵌入式軟件系統的設計需要,分析、闡述了嵌入式圖形庫、文件系統、數據庫、協議棧等嵌入式軟(硬)件組件的原理與機制。第10章,綜合闡述了嵌入式應用軟件的相關設計方法,包括嵌入式應用軟件結構、中斷程序與數據共享問題、典型的嵌入式軟件設計機制以及軟件工程方法等。第11章,根據嵌入式系統特點,總結了嵌入式軟件與系統開發過程中調試、測試及仿真等驗證技術的基本原理、工作機制和實施方法。在本書內容的組織和編寫過程中,作者以構建多維度的知識體系為目標,力求實現模型到實現、宏觀到微觀、硬件到軟件、高級語言到低級語言的單點縱向穿透和多點橫向融合。這一方面將有助于讀者系統、深入地理解和掌握相關的知識原理、機制和方法,另一方面也有助于消除知識盲點,促進整個知識體系的融會貫通。閱讀過程中,讀者將發現本書的知識體系還實現了嵌入式系統技術到電子、物理、材料等學科知識以及經典示例的延伸與融合,這也使得本書內容更為豐富和生動。按照上述方式組織本書內容的另一個目的在于,嘗試引導讀者建立從多個角度來分析嵌入式系統設計問題的綜合能力以及多維度的思維方式,在閱讀本書內容的過程中讀者將會有深刻體會。嵌入式系統知識體系的體量較大且軟硬件高度融合。作者雖致力于在本書中構建一個完整的知識體系,但因篇幅有限,對部分相關內容的細節未能進行深入討論,請讀者根據興趣和實際工作需要進行延伸閱讀與學習。同時,作者本人知識水平有限,雖在近一年半的寫作中已盡全力,但書中謬誤之處在所難免,虛心接受各位讀者的意見和建議。
張凱龍
2016年1月13日于西安
張凱龍,工學博士,法國Mines Paristech博士后,西北工業大學計算機學院副教授,第二屆中國嵌入式系統十大杰出青年(2011)。現為IEEE、ACM、ACIS會員,中國計算機學會高級會員、嵌入式系統專委會委員、系統軟件專委會委員。主要研究方向為網絡化嵌入式計算領域的多形態自適應嵌入式實時計算、智能化嵌入式系統與服務軟件、多機器人協同調度與協作、嵌入式系統仿真驗證技術,主要承擔嵌入式系統方向的專業課程教學及人才培養工作。作為課程負責人,自2005年起在西北工業大學計算機學院開設并主講本科生嵌入式系統,2008年起在軟件與微電子學院開設本科生嵌入式計算機系統課程,并負責嵌入式系統課程的教學方案與大綱制定,教學實驗室建設等工作;自2014年起在計算機學院面向碩士生開設高級嵌入式系統課程實時智能系統。從事嵌入式系統系列課程教學過程中,注意探索教學模式和教學方法,以第一作者發表嵌入式系統課程教學研究論文1篇;參加建設的操作系統課程獲*精品課程、嵌入式人才培養模式獲陜西省優秀教學成果一等獎1項。指導研究生、本科生參加全國物聯網大賽、中國開源軟件大賽、微軟全球ImagineCUP大學生挑戰賽、西安市大學生軟件設計大賽等多項,獲作品創新獎、金獎、優秀論文獎、團體季軍獎等多項。在國際學術會議、國內核心學術期刊等發表學術論文50余篇,三大索引26篇次,獲得國家發明專利5項、國家計算機軟件著作權11項。近年來,主持國家自然基金課題2項,陜西省重大科技創新計劃、航空院所合作課題等5項;2011年起與法國勃艮第大學LE2I實驗室、巴黎第十二大學LISSI實驗室、巴黎高科Mines機器人研究中心CAOR等建立學術合作關系,并聯合承擔中法合作交流項目1項。
目錄
第1章概述/1
1.1計算技術延伸/1
1.1.1從開爾文設想到現代計算技術出現/1
1.1.2計算機技術的發展/2
1.1.3通信與網絡技術發展/4
1.2理解嵌入式(計算)系統/6
1.2.1計算裝置的可嵌入發展過程/6
1.2.2嵌入式(計算)系統的內涵/8
1.2.3相關術語辨析/10
1.3嵌入式系統的組成與特點/12
1.3.1體系結構與組成/12
1.3.2應用及技術特點/13
1.4發展趨勢/16
1.5知識體系小結/18
習題/19
第2章嵌入式硬件基礎/20
2.1硬件基礎/20
2.1.1器件術語/20
2.1.2電路術語與符號/23
2.1.3基本元件與邏輯/25
2.2嵌入式系統硬件組成/30
2.2.1硬件基本架構模型/30
2.2.2核心邏輯與子系統/32
2.3典型嵌入式系統硬件形式/38
2.3.1基于通用計算機擴展的嵌入式硬件/38
2.3.2基于領域標準模塊集成的嵌入式硬件/39
2.3.3針對具體應用設計的嵌入式硬件/41
2.4硬件設計基本方法/42
2.4.1Protel EDA軟件/42
2.4.2電路設計基本流程/45
2.4.3電磁兼容性問題/47
2.4.4低功耗問題/512.4.5嵌入式硬件設計示例/52
2.5小結/60
習題/61
第3章嵌入式處理器/62
3.1處理器模型與邏輯體系/62
3.1.1處理器基本組成模型/62
3.1.2處理器的基本邏輯體系/65
3.2嵌入式處理器類型及特點/70
3.2.1嵌入式微控制器/70
3.2.2嵌入式微處理器/72
3.2.3數字信號處理器/73
3.2.4可編程邏輯器件/77
3.2.5片上系統/84
3.2.6多核、眾核處理器/88
3.3典型嵌入式處理器體系/95
3.3.1ARM架構/95
3.3.2MIPS架構/110
3.3.3PowerPC架構/115
3.4性能評價指標/124
3.5小結/126
習題/126
第4章嵌入式存儲技術/127
4.1基本存儲體系與模型/127
4.1.1嵌入式系統存儲體系/127
4.1.2存儲器結構模型/128
4.1.3存儲器基本操作流程/129
4.1.4存儲器技術指標/130
4.2存儲器分類及特性/131
4.2.1隨機訪問存儲器/132
4.2.2只讀存儲器/145
4.2.3混合存儲器/150
4.3存儲器測試與驗證/165
4.3.1可讀寫存儲器的測試/166
4.3.2只讀存儲器測試/167
4.4小結/169
習題/169
第5章最小系統外圍電路設計/170
5.1電源電路/170
5.1.1電源電路設計方法/170
5.1.2延伸: 電源管理與低功耗設計/174
5.2復位電路/179
5.2.1上電復位/179
5.2.2手動復位/184
5.2.3看門狗復位/186
5.2.4軟件復位/187
5.3時鐘電路/191
5.3.1信號源: 振蕩電路原理/191
5.3.2多時鐘管理/196
5.3.3延伸: 時鐘管理與低功耗設計/201
5.4電路抖動與消抖/202
5.4.1抖動現象與危害/202
5.4.2優化硬件消除抖動/203
5.4.3軟件消抖方式/205
5.5小結/208
習題/208
第6章接口、總線與網絡擴展/209
6.1通用I/O與串行總線/209
6.1.1GPIO/209
6.1.2SPI/213
6.1.3SDIO/222
6.1.4I2S/IIS/226
6.1.5I2C/IIC/232
6.1.6UART與USART/237
6.2典型工業總線、背板總線及網絡/249
6.2.1CAN總線/249
6.2.2實時工業以太網/259
6.2.3VPX總線/264
6.3無線接口與網絡/274
6.3.1ZigBee/274
6.3.2藍牙/280
6.3.3WiFi/292
6.3.4NFC/295
6.4小結/300
習題/300
第7章嵌入式軟件結構與基礎軟件/302
7.1計算系統的啟動與運行過程/302
7.1.1通用計算機的引導和啟動過程/302
7.1.2嵌入式系統的引導與啟動過程/303
7.2嵌入式軟件體系與結構/305
7.2.1基于裸機的嵌入式軟件/306
7.2.2基于嵌入式操作系統的軟件結構/307
7.3基礎軟件組件/308
7.3.1ROM Monitor/308
7.3.2Boot Loader/313
7.3.3BSP/320
7.3.4虛擬機監控程序/332
7.4小結/339
習題/339
第8章嵌入式操作系統及其服務機制/341
8.1架構與模型/341
8.1.1微內核、超微內核架構/341
8.1.2功能模型/343
8.2服務機制與特性/346
8.2.1基本概念/346
8.2.2關于實時/357
8.2.3內核服務機制/362
8.3典型嵌入式操作系統/379
8.3.1RTX51/379
8.3.2C/OS/380
8.3.3嵌入式Linux系列/382
8.3.4VxWorks/387
8.3.5Windows嵌入式操作系統/389
8.3.6其他嵌入式操作系統/396
8.4小結/401
習題/402
第9章嵌入式軟件組件/403
9.1嵌入式圖形庫與圖形組件/403
9.1.1C/GUI與emWin/403
9.1.2NanoX Window/405
9.1.3MiniGUI/407
9.1.4QT/413
9.1.5可編程圖形界面硬件模塊/418
9.2嵌入式文件系統/419
9.2.1JFFS/JFFS2/420
9.2.2Yaffs/Yaffs2/422
9.2.3UBIFS/425
9.2.4只讀文件系統/428
9.2.5RAM文件系統/430
9.3嵌入式數據庫/432
9.3.1SQLite/432
9.3.2Berkeley DB/434
9.3.3eXtremeDB/435
9.4嵌入式網絡協議棧/437
9.5小結/438
習題/438
第10章嵌入式應用軟件設計方法/439
10.1嵌入式軟件典型結構/439
10.1.1輪轉結構/439
10.1.2前后臺軟件結構/442
10.1.3函數隊列調度結構/444
10.1.4基于嵌入式操作系統的軟件結構/445
10.2中斷與數據共享問題/447
10.2.1中斷服務程序設計/447
10.2.2消除數據共享問題/451
10.3嵌入式軟件設計機制/458
10.3.1可重入代碼設計/458
10.3.2軟件看門狗方法/462
10.3.3避免頻繁地創建、取消任務/465
10.3.4基于狀態機方法設計軟件邏輯/466
10.3.5FPGA IP核開發流程/466
10.3.6生成可執行的嵌入式軟件/469
10.4軟件工程方法/477
10.4.1模型驅動的開發方法: 從V模型到
Y模型/477
10.4.2軟硬件協同設計/479
10.4.3制定編碼規范/480
10.5小結/482
習題/482
第11章調試、測試與仿真方法/483
11.1嵌入式軟件調試/483
11.1.1基于宿主機的調試/484
11.1.2ROM Monitor軟件調試/486
11.1.3ROM仿真器/487
11.1.4ICE在線仿真器/488
11.1.5JTAG調試/490
11.2嵌入式軟件測試/492
11.2.1基本測試方法與指標/493
11.2.2測試工具的使用/498
11.3系統仿真驗證技術/502
11.3.1計算機仿真方法及其原理/503
11.3.2可視化技術/505
11.4小結/507
習題/507
參考文獻/508
后記/513附路遙先生《個人小結(草稿)》/515