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