
(西北工業大學 計算機學院,陜西 西安 710129)
摘 要:分析嵌入式系統知識體系特點與內涵,闡述從架構、原理至設計的知識體系的構建思路,探討重構嵌入式系統課程教學內容的具體方法,提出一種多維融合的新的知識體系和教學模式。
關鍵詞:嵌入式系統;知識體系;多維融合;共性模型;教學模式
1 背 景
嵌入式系統技術的發展已開始邁入微型化、信息物理融合以及智能化的時代,是物聯網、智能制造等眾多領域進行技術變革和跨越式發展的重要支撐。深入、全面地學習嵌入式計算機系統知識是進入嵌入式系統領域的首要步驟,也是進一步開展具體領域嵌入式系統設計的技術基礎[1-4]。
嵌入式系統具有完整、龐大的獨特知識體系,該課程的內容體系組織和教學方法在近年來已被廣泛地討論和研究[1,4]。隨著知識體系的不斷演化,如何有效地梳理相關知識點以構建完整的知識框架,如何在不失一般性的前提下突出每個知識點的嵌入式特性,如何穿透每一個知識點的內外部機理并實現不同知識點的融會貫通,以及如何實現從理論學習到實踐能力轉化等,都已經成為嵌入式系統課程教學改革中亟待重新考慮的問題。與此同時,專業課學習的目的不應僅停留在掌握知識內容本身,還應致力于知識體系的完善、對優秀思想的借鑒、思維方式的培養以及綜合能力的提升。為此,在前期教學研究的基礎上[2],筆者結合多年來對“嵌入式系統”課程教學的探索、教材編著以及承擔的教學改革工作,總結、探討了“從架構、原理到設計,從共性模型到具體實現、從宏觀特性到微觀原理、從硬件邏輯到軟件機制等”的多維融合知識體系構建方法和課程教學模式。
2 知識體系特點分析
2.1 知識高度綜合且又“大象無形”
嵌入式系統以計算機技術為基礎,其知識體系具有高度綜合、知識與技術密集等特征。不同于內容具體的專業課程,嵌入式系統的知識體系并不是單一的、具體的,而是蘊含于形形色色的嵌入式系統中,大象無形。究其原因,不論是處理器子系統、存儲子系統等硬件的架構、接口和類型,還是所采用嵌入式操作系統、軟件架構、編程語言及開發方式等,都具有豐富多樣的形式。圍繞特定軟硬件所構建的知識體系強調了該類軟硬件的具體設計、外部功能和特性,不具備代表性,也不利于學習者全面、深刻地進行學習。為此,在重構課程內容時就需要突出共性和系統性,既能以共性歸納和模型抽象的方式來討論知識原理,又能以多維角度進行理論、原理、設計的有機融合。
2.2 “嵌入式”特性不斷演化和豐富
嵌入式系統是一種特殊的計算機系統,它在計算結構上與通用計算機相似,但又存在差異。嵌入式系統的差異性主要體現在面向具體應用、軟硬件可定制、資源相對受限等,同時在計算性能、可靠性、體積、重量、功耗等方面具有特殊要求,這使得嵌入式系統的軟、硬件都呈現出豐富的“嵌入式”內涵。
2.2.1 硬件體系與設計
處理器子系統是嵌入式系統的核心,可以基于MPU、MCU、DSP或So(P)C等不同的嵌入式處理單元設計。其中,除了MPU與通用處理器較為相似、通用性較強以外,其他處理器的微架構、指令集、片內資源等均各具特色,要獨立且又對照地分析和討論。嵌入式存儲子系統在數據管理方面大都具有特殊性,其分級的存儲子系統體系一般由處理器的片內、片外存儲資源構成,并涵蓋RAM、ROM、FIFO以及NVRAM等多種存儲器類型,實現形式豐富。另外,隨著新型混合存儲器的應用,存儲子系統的組成也開始朝著簡約化的方向發展,這也進一步影響著嵌入式軟件架構、啟動過程和資源管理等機制的設計。除此之外,嵌入式系統所使用的內部、外部總線以及形形色色的I/O接口等也都有其獨特性。顯然,課堂上首先需要對嵌入式系統的這些特性進行深入討論。
2.2.2 軟件架構與機制
在通用軟件體系中,軟件基于操作系統運行,軟件設計者無需關注系統底層的軟硬件細節。然而在嵌入式系統領域,軟件設計一方面需要關注軟件的體系架構、啟動與引導方式、代碼和數據的存儲機制、軟件的分區運行、特定I/O接口的驅動等系統層面的內容;另一方面,由于應用軟件的算法和邏輯大都和系統層軟硬件存在密切的交互,因此不同層軟件的開發者需要熟悉或在不同程度掌握系統軟硬件的知識,如BSP的開發者要熟悉硬件總體設計、機制以及嵌入式操作系統的基本屬性與交互接口,驅動軟件開發者需要熟悉具體硬件的邏輯、資源及特定的驅動程序設計方法等。
嵌入式軟件設計結構被基本地劃分為基于裸機的軟件和基于嵌入式操作系統的軟件。隨著多核高性能硬件、網絡組件、智能硬件以及實時、可靠等應用需求的發展,嵌入式軟件的體系結構不斷演化,逐步形成了網絡化軟件架構、基于嵌入式中間件的軟件架構以及基于虛擬機管理程序的嵌入式軟件結構等。與此同時,軟硬件緊密耦合使得嵌入式軟件的機制更為靈活,設計者可通過拓展軟件邏輯來彌補硬件的缺陷或優化系統性能。例如,可以通過在嵌入式文件系統中部署磨損均衡等機制來提高Flash的使用壽命,在軟件邏輯中增加濾波邏輯來消除硬件中可能無法避免的抖動及毛刺信號,又或者在軟件中通過智能的軟件判斷來消除錯誤或降低系統功耗等。嵌入式軟件體系的諸多演化將使得嵌入式軟件組件以及軟件的設計方法也將隨之發生改變,相關知識需要不斷更新。
2.2.3 設計與開發方法
嵌入式系統的設計首先要考慮軟硬件界面的劃分,是一個軟硬件協同的規劃和設計過程,而嵌入式硬件和軟件的設計方法各有不同且又密切聯系。嵌入式硬件設計的內容主要取決于體系結構、數字電路設計等先修課程,而并非自成一體。其共性基礎是數字電路設計技術,在具體系統設計中還可能會使用到模擬電路、高頻電路、電磁兼容、低功耗等設計技術。嵌入式軟件的設計具有相對獨立性和完整性,開發過程一般包括交叉編譯、遠程調試、交叉編譯以及Monitor代理、JTAG調試接口等相關的軟硬件原理和機制,設計方法也不斷演化和豐富。另外,隨著傳統軟件工程方法日益受到挑戰,模型驅動開發(MDD)等新的嵌入式軟件設計方法不斷發展,并在近年來被越來越多地關注和應用。這些都應該是新型嵌入式系統知識體系的組成部分。
嵌入式系統的功能和性能驗證具有軟硬件融合特性以及運行時特性。“軟硬件融合”意味著軟件功能只有通過在目標硬件上的一體化調試、測試和驗證才能證明其正確性;“運行時”特性則表示調試、測試等驗證操作不應對系統的正常運行過程造成干擾。這在使用了中斷機制或具有實時性約束的嵌入式系統中尤其突出。另外,對于信息物理系統還可能需要進行基于場景的仿真驗證。
綜上所述,只有在不斷完善和清晰梳理知識脈絡的基礎上,突出各個知識點的嵌入式特性與原理,并以系統化的方式來綜合分析這些知識點之間的內在關聯,才能構建出一個立體的、多維融合的知識體系。
3 構建多維度的立體知識體系
采用多維度的方式來構建立體的嵌入式系統知識體系,將有效地穿透各個知識點,結合材料、物理等基礎知識,促進整個知識體系的融會貫通。這既有助于學習者系統、深入地掌握相關原理和機制,也能訓練學生從多個視角分析問題的綜合能力和多維度思維。
3.1 基于計算機技術脈絡梳理知識結構
拋開具體的應用功能,各類嵌入式系統本質上首先是各種各樣的以數字處理單元為核心的計算裝置,具有多樣、完整的計算架構。因此,在梳理嵌入式系統知識架構的基礎上,根據上述諸多“嵌入式”特性對知識點進行擴展、深化和完善才可以構造出符合嵌入式系統技術特征的知識體系。經過多年的教學探索和總結,我們提出如圖1所示的“嵌入式系統”課程知識體系框架[5]。
圖1中,緒論部分以討論嵌入式系統的基本概念和內涵為主題,從基礎研究、技術形態、核心內涵及演化歷程等方面分析了嵌入式系統知識體系的總體結構、組成和特點。第二章梳理了嵌入式硬件相關的基礎知識,重點是與后續內容密切相關的電路符號、器件以及硬件子系統組成、典型硬件形式、硬件設計基本方法等。該章內容有助于建立起對硬件的基本認識,以及提升初學者閱讀電路原理圖以及設計硬件電路的能力,是開展后續學習的重要基礎。第三、四章分別分析了嵌入式處理器子系統和存儲子系統的架構、原理與特性,探討共性原理和個體特性。之后,圍繞最小計算系統的設計和擴展方法,在第五、六章重點闡述電源、復位、時鐘等外圍電路以及典型接口與總線的特性、機理和設計方式。至此,嵌入式硬件部分的知識構成已比較完整,以此為基礎可以過渡到嵌入式軟件的相關內容。第七章對嵌入式軟件的經典體系架構及衍生結構進行總結和分析,并結合嵌入式系統的啟動過程重點討論Boot Loader、BSP、虛擬機監控程序等基礎軟件組件。第八、九章分別分析和討論嵌入式操作系統共性模型與機制、具體實現,以及圖形庫、文件系統、數據庫等典型的嵌入式軟件組件。第十章以軟件與硬件、宏觀與微觀、系統/工具軟件與應用軟件相結合的維度,以方法與實例結合的方式,闡述嵌入式應用軟件的基本結構、典型設計機制等內容。最后,結合嵌入式系統的開發特點,對典型的調試、測試、仿真等方法進行論述,補齊本知識體系的最后一塊拼圖。
3.2 從共性模型到具體對象的漸進式教學
針對上述特點和問題,除第一章之外,筆者在內容安排上嘗試了盡可能從各知識點的共性模型入手,逐步過渡到具體原理和技術,同時采用了理論與實例相結合的內容組織方法。
3.2.1 總結嵌入式系統的硬件形式
緊扣IEEE Std 1003.13?-2003給出的嵌入式系統定義,將嵌入式系統的形式歸納為3種基本形態,即嵌入通用計算機型、基于領域標準模塊集成的嵌入式硬件以及面向具體應用設計的專用嵌入式應用。這3種硬件的專用性、設計成本、適用性都依次增強,集成度、性能等也不斷提升。在歸納這些特性的基礎上,以典型的工業控制計算機、單板計算機以及智能手機嵌入式硬件為具體示例來分析這些不同類型嵌入式系統的硬件架構與設計特點。
3.2.2 梳理硬件子系統模型和特性
化整為零,以模塊化的方式分解大系統,有助于清晰、深入地討論每一個知識板塊。嵌入式系統硬件中的處理器子系統、存儲子系統、I/O子系統及時鐘子系統等各具特點,需要采用不同的方式進行討論。例如,對嵌入式子系統的討論要重點圍繞嵌入式處理器展開,進而要從處理器的微架構、指令集、寄存器資源、I/O、功耗等角度共性地描述不同類型嵌入式處理器的基本模型。基于此,可以進一步將這些模型、機制映射到ARM、MIPS、PowerPC等典型處理器體系結構以及代表性的處理器芯片實現,分析這些模型、機制在具體芯片實現中的設計方式及其外部特性。首先應討論如何建立存儲子系統的分級存儲體系以及基于片內存儲資源和片內、片外存儲資源相結合的典型存儲結構。之后,可以從嵌入式系統啟動、數據存儲和訪問特性的角度來分析和討論該子系統的體系與特點。另外,嵌入式系統的I/O是非常多元的,組織內容時應該從I/O結構、寄存器等共性機制著手,而時鐘子系統的討論則可從單時鐘電路、多時鐘電路逐步進展到可配置的時鐘樹機制等。
3.2.3 歸納嵌入式軟件體系與結構
將嵌入式軟件結構劃分為裸機軟件和基于嵌入式操作系統的嵌入式軟件是合理的,但這種方式仍然過于簡單。受不同因素的影響,嵌入式軟件體系不斷演化和豐富。例如,考慮軟件的可移植性就形成了可移植的嵌入式軟件結構;又如,在整合特定領域共性軟件服務的基礎上,形成了基于軟件中間件的嵌入式軟件結構等。近年來,隨著多核處理器及嵌入式虛擬化技術的發展,具有隔離安全特性的分區式嵌入式軟件體系也被越來越多地采用,嵌入式軟件設計開始朝著分層和分區的復雜結構發展。因此,歸納這些經典的、新興的嵌入式應用軟件結構也就成為梳理嵌入式軟件體系的重要方面。在嵌入式應用軟件設計方面,課程內容中既要討論輪詢、帶中斷的輪詢等典型軟件結構的原理和特性,也要討論典型的實現形式,如一次執行、無限循環、中斷等。
3.2.4 提煉EOS內核中的共性機制
操作系統的發展歷程本身就是一部解決計算需求和問題的歷史。嵌入式操作系統的發展也不例外,其源自通用操作系統技術,又密切結合了嵌入式系統應用的需求。類似于嵌入式處理器,嵌入式操作系統的種類豐富多樣,在體系、機制、功能、性能等方面各具特點。為了便于學習者全面地理解、掌握其主要原理和技術,課程內容中就應該歸納和提煉不同操作系統的共性特征,而不是以某個具體EOS作為唯一的學習對象。經歸納,EOS部分的內容主要可歸類為架構模型和服務機制兩個主要方面。EOS架構模型主要包括微內核/超微內核架構、功能模型、衍生模型及主流的開發平臺框架,而服務機制則包括內核、任務及任務狀態、任務調度與管理、中斷與異常、實時服務、任務間通信與協同、存儲管理等機制。在此基礎上,后續課程內容就可以“由簡至繁”地選擇一組典型的嵌入式操作系統進行分析,實現理論原理與技術實現的呼應與融合。
3.3 多角度、多層次的知識原理綜合探討
嵌入式系統的諸多知識點之間都存在著密切、有機的聯系,以多角度、多層次綜合的方式對相關的知識點進行單點縱深穿透和多點橫向關聯對于提高課程質量將是非常有意義的,這對于研究型專業人才的思維和能力培養尤為重要。在之前模塊化、模型化的基礎上,進一步基于“從宏觀特性到微觀機制、從理論原理到具體設計以及軟件與硬件相結合”的指導思想進行內容梳理,可以深度發掘各個知識點的內涵及其延伸。例如,對時鐘電路機制的討論可以簡要地從正弦波振蕩電路以及RC、LC、石英晶體振蕩電路的原理和結構入手。在闡明相關物理原理的基礎上,進一步分析和討論復雜系統中的多時鐘電路、處理器時鐘樹以及時鐘的配置、管理等機制。對存儲器子系統部分,首先要闡述各類存儲器的內部機制、外部接口和訪問特性,進而簡要闡明不同類型存儲元的微電路結構,如E2PROM采用的FLOTOX管、Flash采用的新型隧道氧化層MOS管、FRAM采用的PZT型CMOS管等。透過對這些微電路的物理結構、半導體材料屬性以及熱電子、能量勢壘等物理效應的分析,將能更為清晰地分析存儲器機制與特性。以Flash為例,微電路特性決定了存儲元的訪問速度會隨著擦寫次數的增加而降低,存儲元隧道二氧化硅層中陷落的電子越來越多,其擦除周期越來越長,且在數十萬次擦寫后最終失效。因此,Flash中的各個存儲元都應該被均勻地擦寫。考慮這一特征,傳統的磁盤型文件系統也不再適合于Flash存儲介質,因此,就需要設計具有磨損均衡和位糾錯能力的訪問軟件或文件系統。
以前后臺或多任務嵌入式軟件中的數據共享問題為例進行分析[5-6]。中斷服務程序打斷正在訪問共享數據的后臺任務進行共享變量的寫入操作,將會導致共享數據被破壞進而引起系統的邏輯錯誤,這稱之為數據共享問題。顯然,只要保證后臺任務能夠不被中斷地、“一次性”地完成共享數據的訪問,就能夠避免或解決數據共享問題。然而,當我們從微觀、硬件或系統軟件等多維度綜合分析各種解決方案時,一些在形式上看似可行的方案卻又行不通。這或者因為數據寬度大于寄存器寬度,或者因為一條高級語言代碼對應于多條匯編指令,或者因為開關中斷時可能存在邏輯漏洞,又或者因為編譯器的優化功能刪除了解決問題的有效代碼等[6]。因此,嵌入式系統中的數據共享與硬件體系、中斷機制、編譯器等密切相關,要徹底地解決類似問題,設計中就需要從硬件結構、微觀特性、算法邏輯、工具軟件等多個角度來進行綜合考慮。這也說明以采用多維度的方式進行學習和討論嵌入式系統技術是非常必要的。
3.4 發展歷程中的經典示例與他山之石
嵌入式系統技術領域的技術以及設計、實現系統的途徑豐富多樣,通常不會出現類似于通用計算機領域中WINTEL架構的技術壟斷。這為嵌入式系統技術及其應用領域的拓展提供了非常廣闊的創新空間。實際上,在計算技術體系的發展中創造和創新一直層出不窮,也涌現出諸多勵志的事例。例如,鐵電存儲器的概念是由MIT的研究生Dudley Allen Buck在其碩士論文中率先提出的。瑞典梅拉達倫大學的博士生Adam Dunkels自行設計了LwIP(輕量互聯網協議)、μIP(微型互聯網協議),已演化為著名的物聯網操作系統Contiki。20世紀90年代末,清華大學在研制國內第一臺產品化虛擬軸機床數控系統時,因為無法找到適合其嵌入式Linux操作系統的圖形庫,而自行設計、開發了MiniGUI,現在MiniGUI已成為被廣泛使用的著名嵌入式圖形庫系統。在知識體系中穿插地引入這些經典事例,一方面會有助于潤色課程內容,讓知識體系更為飽滿和生動。另一方面,也有利于學習者了解技術背后的歷史和來龍去脈,讓學習者從這些事例閱讀中汲取精神的營養,受到激勵和鼓舞,進而以創新的思維和積極的態度去迎接挑戰。
4 結 語
筆者所提出的多維融合知識體系適合于計算機科學與技術、物聯網工程等相關專業本科生或研究生的培養體系。多年的教學實踐和反饋分析表明,采用上述知識體系和教學模式可以有效地促進學生對相關知識的掌握并提高課程的整體教學質量。下一步將在不斷完善課程內容的基礎上,繼續對教學模式和方法進行探索和優化。
基金項目: 2016年度西北工業大學教學與考核模式改革課題項目(校教字[2016]485號);2016年度西北工業大學專項教材計劃項目(校教字[2016]216號)。
作者簡介:張凱龍,男,工學博士,法國國立巴黎高等礦業學校(MINES ParisTech )博士后,副教授,中國計算機學會嵌入式系統專委會常務委員、系統軟件專委會委員,研究方向為機器人與實時智能系統、自適應嵌入實時計算等技術,主講“嵌入式(計算機)系統”“Real-Time Intelligent System Design”等課程,kl.zhang@nwpu.edu.cn。
參考文獻:
[1]王蘇峰, 寧洪, 陸洪毅, 等. 嵌入式系統課程體系及其創新實踐的探索[J]. 計算機教育, 2010(7): 45-48.
[2]張凱龍, 周興社, 張彥春, 等.“嵌入式計算”課程的教學探索與思考[J]. 計算機教育, 2009(4): 65-67.
[3]韓德強, 孫燕英. 北京工業大學嵌入式系統精品課程建設[J]. 計算機教育, 2006(8): 12-14.
[4]蔣銀珍, 王宜懷. 計算機專業的嵌入式系統課程教學探討[J]. 計算機教育, 2011(18): 46-48.
[5]張凱龍. 嵌入式系統體系、原理與設計[M]. 北京: 清華大學出版社, 2017: 1, 448-458.
[6]西蒙. 嵌入式系統軟件教程[M]. 陳向群, 等譯. 北京: 機械工業出版社, 2005: 49-68.
(編輯:彭遠紅)