很明顯,無論是對現有設備進行擴展還是從零開始設計新型設備或系統,使用嵌入式Linux都能夠帶來最理想的物聯網生態系統構建速度。嵌入式Linux與桌面Linux共享同一套源代碼庫,但其同時匹配不同的用戶界面工具及其它高層組件。
下面,我們將共同探討幾類常見情況。
通常,極低功率應用(例如傳感器)能夠憑借一次性電池甚至自身供能機制運行數個月之久。這意味著任何Linux在其上運行時都將帶來無法承載的負荷。其低功率特性意味著我們無法直接使用IP連接,必須配合互聯網網關。網關能夠通過低功率協議對接傳感器,再將其轉換為IP。根據具體協議需求,Linux完全有能力提供現有協議支持或者與之類似的方案。
下面來看配合CR2032按鈕電池運行的無線聯網室外溫度計或者“智能燈泡”。這種智能燈泡看起來似乎并不屬于低功率應用,但具體情況仍取決于其并未亮起時的運作方式。如果使用純Linux方案,則意味著燈泡熄滅時系統無法或者需要很長時間來完成引導(至少用戶無法接受第一次點亮燈泡時等待10到20秒)。
如果在以上實例中直接運行IEEE 802.11(WiFi)方案,則電池壽命將變得非常有限。因此,我們需要在燈泡中使用低功率聯網協議,例如使用簡單的2.4 GHz信號系統或者藍牙低功耗連接。嵌入式Linux網關能夠將低功耗無線鏈路轉換為WiFI,甚至以太網來實現互聯網接入。正因為如此,目前市面上的多數設備皆采用Linux網關及低功耗無線協議。
另外,嵌入式Linux亦在眾多非物聯網設備當中有所作為。設計人員往往很難在裸機/RTOS(實時操作系統)方法與系統芯片配合Linux這兩類選項中作出選擇。裸機選項能夠有效降低材料成本,但卻不利于上市時間、開發成本與支持成本等因素。嵌入式Linux能夠更快完成調整并供更為廣泛的用戶群體以低成本方式利用多種工程技術及開發工具完成任務。另外,規模龐大的Linux用戶群亦有助于擴大測試覆蓋面并簡化技術支持。
物聯網設備的主要需求為連通性,且通常表現為IP形式。這種聯網的能力往往通過Web服務器實現。裸機/RTOS雖然也能夠提供IP連接,但卻易于引發錯誤及合規違反問題。例如,很多RTOS并不會將IP堆棧用戶與IP堆棧本身進行隔離。互聯網連接可能需要處理低速或者擁塞鏈路。另外,當堆棧與其它代碼混合時,緩沖區處理問題也可能變得模糊且難以調試。相比之下,嵌入式Linux能夠實現硬件分離并廣泛使用各類IP堆棧。即使單純從成本角度考慮,嵌入式Linux在加快上市時間、降低技術支持與開發成本方面亦能夠有效抵消裸機/RTOS的前期優勢。
另一類常見用例為對現有物聯網設計進行功能添加。單純從討論角度出發,這意味著我們需要向設備添加讀取設備狀態、配置與控制機制甚至是網絡瀏覽器。這意味著我們需要找到粘接機制對合并IP堆棧、Web服務器與設備軟件。
對于已采用裸機設置的現有設備,以上討論則適用于改進其互聯網連接類情況。這時,調整設備以使用嵌入式Linux往往是最簡單的實現方式。對于嵌入式Linux設備,向其中添加IP連接只需要通過內核選項啟用IP堆棧。大家還需要添加一些軟件包以配置系統,同時引入Web服務器。在這方面,大家需要編寫軟件粘接代碼以服務于Web請求。我們可以利用簡單的shell腳本、Python以及JavaScript等方式完成這項任務。添加物聯網功能對于產品的上市時間非常關鍵,因此大家可以將各個步驟并行推進,從而有效加快開發速度。
對于嵌入式Linux設備與物聯網連接而言,安全性無疑是一大關注重點。物聯網服務通常會直接暴露在危險和未經過濾的互聯網之上。雖然相關內容完全可以另寫一篇文章,但這里我們可以給出一些總結性意見,即利用多項原生嵌入式Linux功能——包括多用戶、SELinux以及容器——控制并緩解這種風險。而Linux擁有的龐大社區亦將帶來安全可靠的修復能力。
總而言之,嵌入式Linux能夠顯著加快物聯網方案的開發速度,簡化功能擴展并為物聯網生態系統提供IP網關服務。另外,Linux生態系統中的大量驅動程序與功能庫,乃至開源代碼也將成為構建物聯網項目時,極為強大的儲備資源。
原文標題:How embedded Linux accelerates IoT development,原文作者:Hunyue Yau
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】