在我剛開始成為嵌入式開發人員時(當時最高的處理器速度也就500kHz),要做的工作同時包括硬體設計和應用軟體開發(而且是用組合語言)。後來,硬體和軟體開發慢慢地分開,硬體工程師主要解決棘手的高速訊號問題,軟體開發人員則解決諸如記憶體約束(Memory Constraint)和即時性能等事情。

但隨著基於功能強大又便宜,且記憶體資源豐富的處理器開發的現成硬體和軟體平台的逐漸普及,嵌入式開發人員的角色再次發生了改變。

嵌入式應用中總是需要客製化(custom)的硬體和軟體,特別是諸如成本、功耗、性能和外形有嚴格要求的那些應用。但種類廣泛的各種平台正滲透到越來越多的應用領域,在上市時間最為迫切的情況下,借助平台的方法有相當大的吸引力。當核心處理硬體、作業系統驅動程式和使用者介面都變得伸手可及時,設計師所要做的就只是設計應用程式碼。

基本上是這樣。

透過收集各種現成的元件來創建系統有一個問題。就大部分而言,這些元件是彼此獨立開發的,因此很少能保證簡單的隨插即用;相反,幾乎都要花時間在不同元件的整合上面,解決修改一個或多個元件引起的衝突。

這類系統整合要求的技巧與系統設計相比有少許的不同。當你從頭開始設計一個系統時,你所做的實現決策是加快和簡化組裝與對系統進行除錯(debugging)的任務。但當你使用現成的元件時,你首先需要瞭解這些元件是如何工作的,然後才能明白它們在一起為什麼不能工作。理解別人的設計其實是一種很大的挑戰。

幸運的是,一旦你理解了所用的平台,那麼使用這些平台創建下一個系統設計將變得非常容易,這正是開發團隊轉向平台的原因。從頭開始做的全新設計每次都要花相同的精力,而基於平台的設計每次會變得更加容易更加快速。

最近我剛好遇到了改變嵌入式設計師所擔當角色的例子。15年前成立的Witekio公司(原Adeneo Embedded)聚集了一群高階嵌入式開發人員,最近他們的任務發生了變化。他們開始做客製化嵌入式系統開發,為他們的OEM客戶設計連網的系統硬體和軟體,並說明晶片供應商增加對他們元件的作業系統與其他軟體支援。公司的這種方法正是在從設計向系統整合轉型。該公司執行長Yannick Chammings在接受採訪時向我解釋了其中的原因。

「我們對嵌入式市場的觀點是,開發工作將從要求詳細的專業技術向需要系統軟體的整合與優化改變。」Chammings表示:「在先前微控制器(MCU)比較簡單的時代,開發人員自己可以包辦全部事情。到了第二代,他們需要供應商的支援,以及作業系統和使用者介面軟體的專業知識;而到現在,出現了使用者介面、資料收集與管理、雲生態系統等的客製化。」

這家公司的新策略基於以下四個關鍵原則:

˙系統和生態系統正變得越來越複雜和互連; ˙技術和標準的變化越來越快也越來越劇烈; ˙每個連網專案涉及更多的專家、更多種類的參與者和互動; ˙「上市時間」變得越來越短,都希望用快速方便的解決方案。

他們的結論是:高效地整合從硬體到雲端的各種技術和各種軟體層已成為連網/嵌入式專案成功的關鍵。

為了在今天這樣的環境下成功建立嵌入式系統,需要結合掌握廣泛的專業技術(作業系統、板級支援包、微控制器、雲服務等)、高超的系統整合技巧(包括測試和驗證),以及靈活地處理外部合作夥伴提供的IP。大公司自己擁有所有這些技能,但許多開發團隊沒有,因此亟需幫助。

隨著平台的出現,對專業技術的需求已讓位給對系統整合技能的需求。除非開發專案需要的各種優化只能透過客製化設計實現,否則軟硬體平台和商用軟體庫就可以提供系統要求的大多數基本功能,只有應用程式設計需要客製化。系統設計變成系統組裝,而且這種組裝不可避免地要求整合技術。

對於大多數嵌入式開發人員來說,具體的設計知識不再是系統設計成功的唯一或者主要途徑。相反,廣泛而深入地理解可用的構建模組及其互動將成為關鍵,而且要與每個模組背後的技術專家進行溝通交流。專家們會發現他們自己主要負責開發和支援構建模組,而普通技術人員和整合人員才是建置系統的合適人選。