再也沒有比現在更容易創辦一家硬件公司了。被許多人稱為嵌入式運算未來的「物聯網」(IoT),如今被視為一種更可負擔的軟、硬件融合平臺。然而,于此同時,軟件的復雜性又使得物聯網設計過程成為「適者生存」(survival of the fittest)的經典案例。
物聯網設計無法「一勞永逸」,因為多樣化的傳感器和連接解決方案要求新的設計理念。另外,物聯網項目一般被認為具有高性能、低成本和低功耗等特點,而這些特性都和嵌入式軟件作業的某個方面密切相關。
例如,以高性能和低成本的特點而言,這意味著重復利用前項項目的可能性非常有限,軟件工程團隊也不可能因此而按比例擴增。由于無法隨意擴大軟件團隊和提高項目的成本預算,物聯網產品開發人員只能寄望于新一代的工具鏈,協助他們實現更高的軟件生產力。
圖1:在異質的物聯網設計中,全方位的軟件工具鏈至關重要 (來源:Atmel)
打造物聯網設計必須善于權衡折衷,一方面也因為其中存在許多可變動組件,設計工程師承擔不起先打造次系統后再觀察是否有效作業的后果。而如果從頭開始設計不僅增加項目成本,也會對于異質的物聯網設計世界帶來更嚴格的上市時間限制。
因此,物聯網設計解決方案——從傳感器的數據擷取到云端的數據分析——都要求必須提早在工程師為物聯網產品進行芯片設計之前先進行設計驗證。因此,無疑地,在處理伴隨以無縫方式連接大量裝置的挑戰而來的復雜過程中,端到端的軟硬件平臺和連接解決方案套件至關重要。
本文將討論物聯網設計領域中的主要軟件挑戰,并介紹正確的工具鏈選擇如何有助于因應這些嵌入式設計挑戰。文中主要關注于物聯網軟件生態系統中的三大關鍵領域,以及引導思考如何以高效和高性價比的方式執行軟件作業。
軟件復雜性
在嵌入式設計項目中,「硬件-軟件」任務的比重分配一般是40:60。然而,針對物聯網設計項目,更偏重于軟件生態系統。
為了實現更高性能以及增強聯機能力、繪圖顯示和云端運算等方面的功能,物聯網開發人員正從8位和16位微控制器(MCU)轉向32位組件。
這要求新的軟件運用平臺,以便高效率地執行通訊和云端運算協議堆棧。然后執行諸如實時采樣傳感器數據、組件配置、安全密鑰、應用程序以及數據分析等任務。
另外,物聯網設計中有許多軟件涉及TCP/IP等通訊協議堆棧以及SSL、TLS等安全工具庫;這些軟件的編寫必須符合特定的標準。這一類軟件組成在很久以前即已編寫,并經過時間的進展變得日益完善,因此,對于時間緊迫的物聯網開發人員來說,如果還要重新編寫而不善加利用這些現有軟件,實在沒什么道理。
事實上,從頭開始開發這類軟件可能面臨的風險是發現一些現實中曾經出現過并已解決的問題。
圖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堆棧的兩倍。
圖3:Atmel Data Visualizer可以辨識由程序代碼特定部份導致的功耗突波 (來源:Atmel)
提示與技巧:
· 新一代的微控制器都配備了緊密耦合的內存(TCM)功能,可為CPU提供單周期存取,從而提升外圍裝置發出的高優先級延遲關鍵型請求。物聯網開發人員可以校準要求零等待執行性能的程序代碼數量,從而將TCM資源指定給這些程序代碼區段和數據區塊。
· 判斷哪一部份的軟件程序消耗太多功率是相當困難的。然而,透過像Atmel Power Probe等工具有助于開發人員快速確定哪一部份的程序代碼的能耗較高。
· 接著,采用像Atmel Data Visualizer插件這一類工具,可以分析物聯網應用的功率使用情況,作為標準除錯過程的一部份。實時的功率測量可以在應用執行期間進行擷取,功耗使用情況也可以輕松地與應用程序的來源碼直接關聯。另外,藉由點選功率樣本,該工具可以突顯采樣時執行的程序代碼,使其易于針對低功耗應用實現優化,它還能以示波器的方式觀察GPIO和UART等訊號。
· 新一代的高能效微控制器可以分別在工作和閑置期間智慧地通電和斷電,并在睡眠時消耗極低電流。以電池供電的物聯網應用有助于為永不斷電的傳感器作業節省大量功耗,其方式是喚醒硬件、執行任務以及回到睡眠模式。
云端與巨量資料
云端和巨量數據是物聯網軟件難題中第三個同樣重要的部份。針對云端通訊的軟件協議堆棧必須完成諸如裝置配置、文件傳輸以及基于規則的數據分析與響應等任務。
首先也是最重要的,強大的數據分析功能為來自傳感器、機器或連接云端的裝置所產生的數據,發揮著創造實際價值的重要作用。其次,安全功能將透過應用白名單阻止未授權的程序代碼,確保經驗證的真實數據連接到云端。
中、小規模的物聯網系統面臨著獲得且高效率使用軟件工具鏈進行數據擷取、處理和分析的巨大挑戰。此外,它們還要求軟件生態系統能夠因應高度分化的物聯網設計領域。
這也表明了端到端解決方案在物聯網環境中為什么至關重要,以及正確的工程決策在物聯網軟件生態系統中極其關鍵的原因。業界需要全新的設計工具以因應大量的連網傳感器需求,這些工具將有助于中小規模的物聯網設計團隊因應云端服務不斷增加、從而提高軟件開銷的問題。
提示與技巧:
· 一般來說,云端通訊超出了許多物聯網產品開發人員的核心專業知識范疇,因此這些開發人員與基于云端的物聯網平臺供貨商展開合作將更有意義。基于云端的物聯網套件包括商業級嵌入式軟件、用于嵌入式裝置的SDK、物聯網參考設計、裝置和應用API以及高度可擴展的通訊服務。
· 為了能夠快速部署連網裝置,開發人員提供現成可用的組件連接庫,并使其作為初始技術評估過程的一部份顯得越來越重要。
· 諸如Atmel等公司與多家端對端云端解決方案供貨商的合作,有助于為開發人員解決這些方面的所有問題。云端生態系統的合作伙伴們每一家都有自已的特色功能,很容易就能找到滿足特定使用案例和需求的解決方案。
評論
查看更多