在過去,嵌入式開發人員和團隊中存在一種趨勢,這種趨勢非常令人不安。這種趨勢包括開發功能性的(最好的)嵌入式系統,但不是為生產環境構建或測試的。
這種“簡單功能”趨勢的主要原因似乎是由于三個因素:示例代碼的利用、倉促的開發周期以及缺乏對構建生產嵌入式系統的理解。
第一個因素,利用示例代碼,實際上是啟動嵌入式軟件開發的關鍵一步。示例代碼有助于啟動和運行嵌入式系統,以及獲得對目標硬件的重要見解。許多微控制器供應商為開發人員提供了非常需要的樣例代碼,說明如何設置外設以及如何與微控制器交互。
但是對于這個示例代碼,有兩個問題是許多開發人員經常不考慮的。第一,示例代碼只是一個例子;它不是用于生產的。它只是關于如何設置和與各種外設交互的指南。然而,開發人員會采用這些代碼,一旦示例代碼被引入系統,它通常會留在系統中。
仔細檢查來自不同微控制器供應商的示例代碼通常會發現一個免責聲明,即所提供的代碼不保證適合任何用途。它甚至不保證用于任何目的,而只是“按原樣”提供僅僅閱讀免責聲明就會讓嵌入式開發人員在考慮采用該代碼時感到不安。軟件的生產者沒有足夠的信心來支持他們的示例,那么是什么讓人們認為示例代碼產品已經可以生產了呢?
導致構建功能性而非生產性嵌入式系統趨勢的第二個因素是倉促的開發周期。開發一個嵌入式系統會給企業帶來巨大的管理費用,這使得企業想在昨天就進入市場。此外,初創企業、小企業和銷售團隊因樂觀地設定生產日期,他們沒有檢查開發一個健壯的生產就緒系統所需的真正努力。在這種情況下,許多工程師要么拒絕與管理層對抗,要么發現他們的擔憂被置若罔聞。最終的結果是為了滿足不切實際的最后期限而偷工減料,這導致設計只包含功能代碼,只在一系列嚴格控制的條件下工作。
導致功能性而非生產性嵌入式系統發布的最后一個因素是缺乏對怎么構建面向生產的嵌入式系統的了解。嵌入式開發人員供不應求,這種情況導致公司用剛從學校畢業的學生或來自不同學科的工程師來填補關鍵職位,如web或應用程序開發。結果是在如何正確設計和實現健壯的嵌入式系統方面存在知識缺口,這些系統不需要每天更新來修補錯誤和修復安全問題。
然而,綠色和跨學科工程師并不是故事的全部,導致人們對生產嵌入式系統的真正含義缺乏了解。訓練有素且經驗豐富的工程師通常會被要求開發原型或概念驗證。為了向管理層演示,工程師們展示了一個基于功能示例代碼的漂亮功能原型。演示效果很好,但該系統僅在受控條件下工作。但由于演示進行得很順利,管理層希望立即交付系統,而不了解要使系統投入生產還需要做很多工作。
嵌入式系統正在進入我們生活的每一個角落。對于在受控條件下運行的一些設備來說,嵌入式開發人員僅使用功能代碼可能是好的。但是,隨著物聯網和自主智能社會的快速發展,發布功能性代碼而不是生產性代碼的危險趨勢是一場遲早會發生的事故。