Fanie Duvenhage
摘要:嵌入式系統(tǒng)工程師們在花大量時間試圖找到最適合應(yīng)用的完美器件。然而令他們失望的是,現(xiàn)有器件總是缺少其他器件所具備的一項或多項重要功能,因而在設(shè)計時總是要權(quán)衡利弊而無法實現(xiàn)完美。絕大多數(shù)情況下,完美器件只是一個夢想。
關(guān)鍵詞:嵌入式開發(fā);處理器;MCU;編譯器
對于處理器和單片機,選擇標準變得更加抽象和復(fù)雜。由于單片機可編程,正常的電氣參數(shù)選擇標準必須要考慮器件執(zhí)行某項具體任務(wù)時的速度和效率。從表面上看,單片機性能取決于處理器內(nèi)核,但事實上并非完全如此。處理器性能的確與處理器內(nèi)核息息相關(guān),但同時它還取決于其他因素,包括集成度、支持處理器內(nèi)核的外設(shè)、采用的開發(fā)工具、要執(zhí)行的任務(wù)、工程師發(fā)揮特定單片機性能的技巧以及系統(tǒng)成本,等等。圖1中的幾個示例顯示了在不改變處理器內(nèi)核的前提下,采用編譯器技術(shù)所帶來的不同效果。
因此對于單片機而言,工程師心目中理想的器件不僅需要具有正確的電氣特性和集成外設(shè),還要有一個處理器能在規(guī)定時間內(nèi)執(zhí)行應(yīng)用程序中最復(fù)雜的計算。工程師熟悉的單一最佳開發(fā)工具平臺必須能支持這個器件,這樣工程師既能夠更快地熟悉器件,又能夠更快地學(xué)習(xí)如何充分利用開發(fā)工具。最后,這個器件應(yīng)該符合工程師負責的所有應(yīng)用的成本目標。遺憾的是,這種理想的器件是不切實際的。
持續(xù)變化的需求
一個典型項目會因多種因素變得復(fù)雜化,比如開發(fā)進度表、可用資源以及開發(fā)前項目的確定程度等。所有工程師都熟知“需求漂移”這個術(shù)語,也非常明白營銷部門其實并不清楚需求變化對剩余的設(shè)計工作會產(chǎn)生什么影響。
需要進行大量的工作來避免在項目開始后出現(xiàn)過多變化。問題通常都會歸咎于缺乏預(yù)見和規(guī)劃,因此會花更多時間制定更完善、更詳細的規(guī)范,來描述硬件和軟件需求。這就產(chǎn)生了全面的項目計劃,需要在項目進展過程中進行跟蹤。
計劃和追蹤對于項目的按時完成極為重要,但是在這個不斷變化的世界里、不太可能預(yù)測到所有實際可能出現(xiàn)的變化:競爭對手以更低的價格推出功能優(yōu)異的競爭產(chǎn)品:上年度產(chǎn)品遇到生產(chǎn)問題需要立即處理,從當前項目中撤走工程資源:經(jīng)濟危機席卷全球、優(yōu)先級已經(jīng)從“若有更好”的功能轉(zhuǎn)變?yōu)槌杀緝?yōu)先。諸如此類的例子數(shù)不勝數(shù),惟一不變的事實是需求在不斷變化。
適應(yīng)變化
與其減少變化,不如來適應(yīng)不斷發(fā)生的變化。這樣就形成了開發(fā)平臺向能支持更加靈活的可編程器件轉(zhuǎn)變的趨勢。硬件變化必須更新印刷電路板(PCB)或更換元器件,與之相反,軟件變化一般能夠更快、更容易地實現(xiàn)。而且,軟件在產(chǎn)品發(fā)布后還能進行功能升級或修正,并能通過事后對應(yīng)用程序進行定制實現(xiàn)產(chǎn)品的多樣化。
但是,要獲得靈活性就必然要付出代價。可編程解決方案通常比等效的功能固定硬件解決方案更加昂貴。為了更快地上市、解決生產(chǎn)過程中發(fā)現(xiàn)的問題以及系統(tǒng)現(xiàn)場升級,通常值得付出額外的物料清單(BOM)成本。然而,與日俱增的開發(fā)環(huán)境復(fù)雜性常常被忽視了、或者至少是被低估了。例如,TechInsights最近一項研究表明,當前開發(fā)趨勢不僅要在單個設(shè)計中采用多個處理器,而且要在同一設(shè)計中采用多個不同的處理器。
這加重了嵌入式系統(tǒng)工程師的負擔,他們必須熟悉可編程器件的開發(fā)流程,還要精通多種單片機和處理器及其相關(guān)開發(fā)環(huán)境。
既能執(zhí)行所有任務(wù)又能得到單一開發(fā)環(huán)境支持的低成本單器件理想解決方案并不現(xiàn)實。更實際的做法是,至少標準化一些能夠滿足設(shè)計人員大多數(shù)需求的器件。由于通常關(guān)注的焦點都是單片機的處理器內(nèi)核,因此對單個處理器內(nèi)核進行標準化就成了最接近單器件理想的選擇。使用標準內(nèi)核可使應(yīng)用在不同供應(yīng)商的器件之間輕松轉(zhuǎn)換,這種想法進一步增強了內(nèi)核標準化的說服力。遺憾的是,選擇單片機所涉及的因素遠不止一個處理器內(nèi)核這么簡單,必須要對整個開發(fā)生態(tài)環(huán)境有更全面的認識。
完整的開發(fā)平臺
根據(jù)有限的需求來標準化特定處理器內(nèi)核是一種不錯的策略,但幾乎所有單片機供應(yīng)商或處理器內(nèi)核開發(fā)商都提供一系列的處理器架構(gòu)。事實證明,沒有一個獨立架構(gòu)能滿足所有要求,特別是在考慮成本的情況下。事實上,根據(jù)對工程師的調(diào)查,開發(fā)工具在選擇標準中排名最高。芯片性能在選擇標準中排名第二。盡管處理器內(nèi)核是一個重要因素,但卻不是惟一的因素,有時甚至不是主要因素。成本因素在重要性上排位第三,它與器件性能不可兼顧,引發(fā)了傳統(tǒng)的成本與性能取舍之爭,這是任何單一器件或處理器內(nèi)核都無法調(diào)和的矛盾。
除軟件環(huán)境、性能及成本這些顯而易見的選擇標準外,外設(shè)、操作系統(tǒng)支持、可用代碼資源、硬件工具及功耗等其他一些標準緊隨其次,重要性不分先后。
問題的關(guān)鍵不是選擇某種單一器件或特定處理器內(nèi)核,而是在僅熟悉一個或少數(shù)幾個開發(fā)環(huán)境的條件限制下進行選擇,從而縮短學(xué)習(xí)周期。擁有能夠發(fā)揮某種器件優(yōu)勢的工程技巧和能力是獲得優(yōu)化設(shè)計的主導(dǎo)因素、因此在某個特定開發(fā)生態(tài)系統(tǒng)中成為專家,將會獲得更佳的結(jié)果。
因此,標準化的重點應(yīng)關(guān)注完整的生態(tài)系統(tǒng),而不僅是處理器架構(gòu)。進一步來說,開發(fā)人員應(yīng)考慮這個生態(tài)系統(tǒng)內(nèi)所支持的產(chǎn)品范圍,以及能否在不影響整個生態(tài)系統(tǒng)的情況下更換元器件,比如編譯器、器件或處理器內(nèi)核、外設(shè)、軟件庫等等。
無論是為應(yīng)用中的主流32位單片機編寫軟件,還是為執(zhí)行系統(tǒng)基本電源管理的小型8位外設(shè)單片機編寫軟件,開發(fā)環(huán)境都應(yīng)保持相同。如果當前16位單片機需要升級為性能更高的32位單片機,器件外設(shè)的差異不能太大。
選擇器件需要考慮的另一個因素是,出現(xiàn)新產(chǎn)品后能否重復(fù)使用現(xiàn)有代碼。約有90%的工程師會重復(fù)使用以前的代碼,其中大部分代碼均為內(nèi)部開發(fā)。大多數(shù)工程師使用c或C++,進行嵌入式開發(fā),這使固件從8位升為32位或者從32位降至16位單片機的過程總是異常困難,如果最初開發(fā)代碼時并未考慮器件間的轉(zhuǎn)換,問題就更加突出。因此、包括庫、硬件工具和器件系列在內(nèi)的開發(fā)生態(tài)系統(tǒng)應(yīng)該盡量實現(xiàn)這種無縫轉(zhuǎn)換。
其他選擇標準包括是否提供與整個器件系列保持大體一致的優(yōu)質(zhì)文檔。是否提供單人解決同一系列所有器件問題的支持,并始終通過此人向設(shè)計團隊傳遞客戶需求的變化,也是一個需要考慮的因素。
總結(jié)
變化是永恒的。應(yīng)對變化的最好策略是迎接變化并做好規(guī)劃。標準化有助于降低和適應(yīng)需求變化帶來的影響。不過,單片機平臺上的標準化不應(yīng)該只限于處理器內(nèi)核。換句話說,標準化的不應(yīng)該只是處理器內(nèi)核,而是整個開發(fā)生態(tài)系統(tǒng)。選擇標準還應(yīng)包括以下因素:
·軟件開發(fā)環(huán)境;
·開發(fā)生態(tài)環(huán)境中兼容器件的范圍,包括性能和成本構(gòu)成;
·不同產(chǎn)品外設(shè)之間的兼容性;
·在生態(tài)系統(tǒng)中支持器件的硬件開發(fā)工具;
·文檔一致性;
·所提供的支持以及與支持聯(lián)絡(luò)人建立良好的關(guān)系;
·最重要的是,能否在生態(tài)系統(tǒng)內(nèi)部轉(zhuǎn)移以適應(yīng)變化并重復(fù)使用現(xiàn)有代碼和IP。