物聯網設計無法「一勞永逸」,因為多樣化的感測器和連接解決方案要求新的設計理念。另外,物聯網專案一般被認為具有高性能、低成本和低功耗等特點,而這些特性都和嵌入式軟體作業的某個方面密切相關。

例如,以高性能和低成本的特點而言,這意味著重複利用前項專案的可能性非常有限,軟體工程團隊也不可能因此而按比例擴增。由於無法隨意擴大軟體團隊和提高專案的成本預算,物聯網產品開發人員只能寄望於新一代的工具鏈,協助他們實現更高的軟體生產力。

20161115 Atmel TA31P1 圖1:在異質的物聯網設計中,全方位的軟體工具鏈至關重要 (來源:Atmel)

打造物聯網設計必須善於權衡折衷,一方面也因為其中存在許多可變動元件,設計工程師承擔不起先打造次系統後再觀察是否有效作業的後果。而如果從頭開始設計不僅增加專案成本,也會對於異質的物聯網設計世界帶來更嚴格的上市時間限制。

因此,物聯網設計解決方案——從感測器的資料擷取到雲端的資料分析——都要求必須提早在工程師為物聯網產品進行晶片設計之前先進行設計驗證。因此,無疑地,在處理伴隨以無縫方式連接大量裝置的挑戰而來的複雜過程中,端到端的軟硬體平台和連接解決方案套件至關重要。

本文將討論物聯網設計領域中的主要軟體挑戰,並介紹正確的工具鏈選擇如何有助於因應這些嵌入式設計挑戰。文中主要關注於物聯網軟體生態系統中的三大關鍵領域,以及引導思考如何以高效和高性價比的方式執行軟體作業。

軟體複雜性

在嵌入式設計專案中,「硬體-軟體」任務的比重分配一般是40:60。然而,針對物聯網設計專案,更偏重於軟體生態系統。

為了實現更高性能以及增強連線能力、繪圖顯示和雲端運算等方面的功能,物聯網開發人員正從8位元和16位元微控制器(MCU)轉向32位元元件。

這要求新的軟體運用平台,以便高效率地執行通訊和雲端運算協議堆疊。然後執行諸如即時採樣感測器資料、元件配置、安全密鑰、應用程式以及資料分析等任務。

另外,物聯網設計中有許多軟體涉及TCP/IP等通訊協定堆疊以及SSL、TLS等安全工具庫;這些軟體的編寫必須符合特定的標準。這一類軟體組成在很久以前即已編寫,並經過時間的進展變得日益完善,因此,對於時間緊迫的物聯網開發人員來說,如果還要重新編寫而不善加利用這些現有軟體,實在沒什麼道理。

事實上,從頭開始開發這類軟體可能面臨的風險是發現一些現實中曾經出現過並已解決的問題。

20161115 Atmel TA31P2 圖2:面對物聯網設計的複雜性,建立完整的軟體生態系統至關重要 (來源:Atmel)

提示與技巧:

  • 因應物聯網應用建置更多功能帶來的軟體複雜性,整合式開發環境(IDE)是第一道防線。
  • 當物聯網設計者為其應用增加服務時,與其相關的軟體部份和驅動程式會自動增加至物聯網設計中。舉例來說,如果一位嵌入式開發人員在其設計中增加了一個USB元件,Atmel Software Framework (ASF)會自動將底層的USB驅動程式加入設計中。
  • 透過使用諸如Atmel START這樣的線上軟體配置和部署引擎,能夠進一步加快嵌入式軟體的創建。Atmel START是一種基於網路的工具,讓開發人員能以圖形化的方式選擇和配置軟體元件,並將其整合於所需的硬體和中介軟體等資源中。這種工具完全獨立於作業系統,在使用前也不需要在使用者的PC上進行安裝。此外,它所產生的專案可以成為任何嵌入式IDE的目標,因此具有無與倫比的靈活性。

程式碼規模和密度

對嵌入式設計者來說,同時影響硬體和軟體效率的另一個關鍵挑戰是程式碼的規模和密度。一方面,物聯網系統要求更高的智慧,這將導致更多的軟體和演算法;另一方面,物聯網解決方案還必須具有低成本和低功耗的優點。

物聯網應用很容易就堆積成千上萬行程式碼,因此除了埋頭編寫應用程式碼外還有大量的任務必須完成。程式碼的數量增加意味著需要更多的快閃記憶體(flash)和RAM,進而導致更大且更昂貴的晶片。這不僅增加了物聯網設計的成本,同時也提高了功耗。

在物聯網設計領域,如果執行速度是管理軟體複雜性的關鍵指標,那麼能效將與大量程式碼的使用密切相關。對於新手來說,可以利用感測器網路程式碼將感測器資料移動到物聯網邊緣節點或閘道。

另外,用於乙太網路控制器的TCP/IP協定堆疊通常要佔用50KB到100KB的空間。同樣地,諸如藍牙、Wi-Fi、ZigBee等連接鏈路帶來了由網路管理、認證和加密組成的協定堆疊,所需的記憶體空間將是TCP/IP堆疊的兩倍。

20161115 Atmel TA31P3 圖3:Atmel Data Visualizer可以辨識由程式碼特定部份導致的功耗突波 (來源:Atmel)

提示與技巧:

  • 新一代的微控制器都配備了緊密耦合的記憶體(TCM)功能,可為CPU提供單週期存取,從而提升週邊裝置發出的高優先級延遲關鍵型請求。物聯網開發人員可以校準要求零等待執行性能的程式碼數量,從而將TCM資源指定給這些程式碼區段和資料區塊。
  • 判斷哪一部份的軟體程式消耗太多功率是相當困難的。然而,透過像Atmel Power Probe等工具有助於開發人員快速確定哪一部份的程式碼的能耗較高。
  • 接著,採用像Atmel Data Visualizer外掛程式這一類工具,可以分析物聯網應用的功率使用情況,作為標準除錯過程的一部份。即時的功率測量可以在應用執行期間進行擷取,功耗使用情況也可以輕鬆地與應用程式的來源碼直接關聯。另外,藉由點選功率樣本,該工具可以突顯採樣時執行的程式碼,使其易於針對低功耗應用實現最佳化,它還能以示波器的方式觀察GPIO和UART等訊號。
  • 新一代的高能效微控制器可以分別在工作和閒置期間智慧地通電和斷電,並在睡眠時消耗極低電流。以電池供電的物聯網應用有助於為永不斷電的感測器作業節省大量功耗,其方式是喚醒硬體、執行任務以及回到睡眠模式。

雲端與巨量資料

雲端和巨量資料是物聯網軟體難題中第三個同樣重要的部份。針對雲端通訊的軟體協定堆疊必須完成諸如裝置配置、檔案傳輸以及基於規則的資料分析與回應等任務。

首先也是最重要的,強大的資料分析功能為來自感測器、機器或連接雲端的裝置所產生的資料,發揮著創造實際價值的重要作用。其次,安全功能將透過應用白名單阻止未授權的程式碼,確保經驗證的真實資料連接到雲端。

中、小規模的物聯網系統面臨著獲得且高效率使用軟體工具鏈進行資料擷取、處理和分析的巨大挑戰。此外,它們還要求軟體生態系統能夠因應高度分化的物聯網設計領域。

這也表明了端到端解決方案在物聯網環境中為什麼至關重要,以及正確的工程決策在物聯網軟體生態系統中極其關鍵的原因。業界需要全新的設計工具以因應大量的連網感測器需求,這些工具將有助於中小規模的物聯網設計團隊因應雲端服務不斷增加、從而提高軟體開銷的問題。

提示與技巧:

  • 一般來說,雲端通訊超出了許多物聯網產品開發人員的核心專業知識範疇,因此這些開發人員與基於雲端的物聯網平台供應商展開合作將更有意義。基於雲端的物聯網套件包括商業級嵌入式軟體、用於嵌入式裝置的SDK、物聯網參考設計、裝置和應用API以及高度可擴展的通訊服務。
  • 為了能夠快速部署連網裝置,開發人員提供現成可用的元件連接庫,並使其作為初始技術評估過程的一部份顯得越來越重要。
  • 諸如Atmel等公司與多家端對端雲端解決方案供應商的合作,有助於為開發人員解決這些方面的所有問題。雲端生態系統的合作夥伴們每一家都有自已的特色功能,很容易就能找到滿足特定使用案例和需求的解決方案。

20161115 Atmel TA31P4