天天看點

嵌入式開發需要的不僅僅是處理器

       摘要:嵌入式系統工程師們在花大量時間試圖找到最适合應用的完美器件。然而令他們失望的是,現有器件總是缺少其他器件所具備的一項或多項重要功能,因而在設計時總是要權衡利弊而無法實作完美。絕大多數情況下,完美器件隻是一個夢想。

  關鍵詞:嵌入式開發;處理器;MCU;編譯器

  對于處理器和單片機,選擇标準變得更加抽象和複雜。由于單片機可程式設計,正常的電氣參數選擇标準必須要考慮器件執行某項具體任務時的速度和效率。從表面上看,單片機性能取決于處理器核心,但事實上并非完全如此。處理器性能的确與處理器核心息息相關,但同時它還取決于其他因素,包括內建度、支援處理器核心的外設、采用的開發工具、要執行的任務、工程師發揮特定單片機性能的技巧以及系統成本,等等。圖 1 中的幾個示例顯示了在不改變處理器核心的前提下,采用編譯器技術所帶來的不同效果。

嵌入式開發需要的不僅僅是處理器

  是以對于單片機而言,工程師心目中理想的器件不僅需要具有正确的電氣特性和內建外設,還要有一個處理器能在規定時間内執行應用程式中最複雜的計算。工程師熟悉的單一最佳開發工具平台必須能支援這個器件,這樣工程師既能夠更快地熟悉器件,又能夠更快地學習如何充分利用開發工具。最後,這個器件應該  符合工程師負責的所有應用的成本目标。遺憾的是,這種理想的器件是不切實際的。

  持續變化的需求

  一個典型項目會因多種因素變得複雜化,比如開發進度表、可用資源以及開發前項目的确定程度等。所有工程師都熟知“需求漂移”這個術語,也非常明白營銷部門其實并不清楚需求變化對剩餘的設計工作會産生什麼影響。 

       需要進行大量的工作來避免在項目開始後出現過多變化。問題通常都會歸咎于缺乏預見和規劃,是以會花更多時間制定更完善、更詳細的規範,來描述硬體和軟體需求。這就産生了全面的項目計劃,需要在項目 進展過程中進行跟蹤。

  計劃和追蹤對于項目的按時完成極為重要,但是在這個不斷變化的世界裡,不太可能預測到所有實際可能出現的變化:競争對手以更低的價格推出功能優異的競争産品;上年度産品遇到生産問題需要立即處理,從目前項目中撤走工程資源;經濟危機席卷全球,優先級已經從“若有更好”的功能轉變為成本優先。諸如此類的例子數不勝數,惟一不變的事實是需求在不斷變化。

       适應變化

  與其減少變化,不如來适應不斷發生的變化。這樣就形成了開發平台向能支援更加靈活的可程式設計器件轉變的趨勢。硬體變化必須更新印刷電路闆(PCB)或更換元器件,與之相反,軟體變化一般能夠更快、更容易地實作。而且,軟體在産品釋出後還能進行功能更新或修正,并能通過事後對應用程式進行定制實作産品的多樣化。

  但是,要獲得靈活性就必然要付出代價。可程式設計解決方案通常比等效的功能固定硬體解決方案更加昂貴。為了更快地上市、解決生産過程中發現的問題以及系統現場更新,通常值得付出額外的物料清單(BOM)成本。然而,與日俱增的開發環境複雜性常常被忽視了,或者至少是被低估了。例如,TechInsights* 最近一項研究表明,目前開發趨勢不僅要在單個設計中采用多個處理器,而且要在同一設計中采用多個不同的處理器。

  這加重了嵌入式系統工程師的負擔,他們必須熟悉可程式設計器件的開發流程,還要精通多種單片機和處理器及其相關開發環境。

       既能執行所有任務又能得到單一開發環境支援的低成本單器件理想解決方案并不現實。更實際的做法是,至少标準化一些能夠滿足設計人員大多數需求的器件。由于通常關注的焦點都是單片機的處理器核心,是以對單個處理器核心進行标準化就成了最接近單器件理想的選擇。使用标準核心可使應用在不同供應商的器件之間輕松轉換,這種想法進一步增強了核心标準化的說服力。遺憾的是,選擇單片機所涉及的因素遠不止一個處理器核心這麼簡單,必須要對整個開發生态環境有更全面的認識。

嵌入式開發需要的不僅僅是處理器

       完整的開發平台

  根據有限的需求來标準化特定處理器核心是一種不錯的政策,但幾乎所有單片機供應商或處理器核心開發商都提供一系列的處理器架構。事實證明,沒有一個獨立架構能滿足所有要求,特别是在考慮成本的情況下。事實上,根據對工程師的調查,開發工具在選擇标準中排名最高。晶片性能在選擇标準中排名第二。盡管處理器核心是一個重要因素,但卻不是惟一的因素,有時甚至不是主要因素。成本因素在重要性上排位第三,它與器件性能不可兼顧,引發了傳統的成本與性能取舍之争,這是任何單一器件或處理器核心都無法調和的沖突。

嵌入式開發需要的不僅僅是處理器

  除軟體環境、性能及成本這些顯而易見的選擇标準外,外設、作業系統支援、可用代碼資源、硬體工具及功耗等其他一些标準緊随其次,重要性不分先後。

  問題的關鍵不是選擇某種單一器件或特定處理器核心,而是在僅熟悉一個或少數幾個開發環境的條件限制下進行選擇,進而縮短學習周期。擁有能夠發揮某種器件優勢的工程技巧和能力是獲得優化設計的主導因素,是以在某個特定開發生态系統中成為專家,将會獲得更佳的結果。

  是以,标準化的重點應關注完整的生态系統,而不僅是處理器架構。進一步來說,開發人員應考慮這個生态系統内所支援的産品範圍,以及能否在不影響整個生态系統的情況下更換元器件,比如編譯器、器件或處理器核心、外設、軟體庫等等。

  無論是為應用中的主流 32 位單片機編寫軟體,還是為執行系統基本電源管理的小型 8 位外設單片機編寫軟體,開發環境都應保持相同。如果目前 16 位單片機需要更新為性能更高的 32 位單片機,器件外設的差異不能太大。

  選擇器件需要考慮的另一個因素是,出現新産品後能否重複使用現有代碼。約有 90% 的工程師會重複使用以前的代碼,其中大部分代碼均為内部開發。大多數工程師使用 C 或 C++ 進行嵌入式開發,這使固件從 8 位升為 32 位或者從 32 位降至 16 位單片機的過程總是異常困難,如果最初開發代碼時并未考慮器件間的轉換,問題就更加突出。是以,包括庫、硬體工具和器件系列在内的開發生态系統應該盡量實作這種無縫轉換。

  其他選擇标準包括是否提供與整個器件系列保持大體一緻的優質文檔。是否提供單人解決同一系列所有器件問題的支援,并始終通過此人向設計團隊傳遞客戶需求的變化,也是一個需要考慮的因素。

        總結

        變化是永恒的。應對變化的最好政策是迎接變化并做好規劃。标準化有助于降低和适應需求變化帶來的影響。不過,單片機平台上的标準化不應該隻限于處理器核心。換句話說,标準化的不應該隻是處理器核心,而是整個開發生态系統。選擇标準還應包括以下因素:

  ● 軟體開發環境;

  ● 開發生态環境中相容器件的範圍,包括性能和成本構成;

  ● 不同産品外設之間的相容性;

  ● 在生态系統中支援器件的硬體開發工具;

  ● 文檔一緻性;

  ● 所提供的支援以及與支援聯絡人建立良好的關系;

  ● 最重要的是,能否在生态系統内部轉移以适應變化并重複使用現有代碼和 IP。

  • 2011-04-21            

    注:源自原百度部落格“至美心"

繼續閱讀