從RTOS 到 IoT OS
作者 / 沈建華 華東師范大學(xué) 計算機科學(xué)與軟件工程學(xué)院(上海 200062)
本文引用地址:http://www.ex-cimer.com/article/201802/376162.htm*本文源于“嵌入式系統(tǒng)聯(lián)誼會主題討論會(總第22次)——物聯(lián)網(wǎng)操作系統(tǒng)現(xiàn)狀與發(fā)展前景研討會”上的報告。此會議主辦方:嵌入式系統(tǒng)聯(lián)誼會,時間:2017年11月12日,地點:北京航空航天大學(xué)。
沈建華,副教授,網(wǎng)絡(luò)研究所副所長,研究方向:物聯(lián)網(wǎng)技術(shù)、嵌入式OS、嵌入式軟件設(shè)計與優(yōu)化、MCU/DSP應(yīng)用系統(tǒng)等工作。
摘要:結(jié)合作者多年嵌入式系統(tǒng)和物聯(lián)網(wǎng)應(yīng)用開發(fā)與實踐,探討了物聯(lián)網(wǎng)給嵌入式系統(tǒng)帶來的影響,物聯(lián)網(wǎng)操作系統(tǒng)的技術(shù)、產(chǎn)品化發(fā)展思路和建議,以及我國在物聯(lián)網(wǎng)操作系統(tǒng)方面的機遇和挑戰(zhàn)。
1 嵌入式系統(tǒng)與RTOS
很多嵌入式應(yīng)用都是基于微控制器(MCU/單片機)的小系統(tǒng),其中大部分也不使用OS,稍微復(fù)雜一點的應(yīng)用會考慮用一個RTOS,如μC/OS、MDK中的RTX、FreeRTOS等,它們基本上只是一個任務(wù)管理器,也是操作系統(tǒng)內(nèi)核部分。因為早期的嵌入式系統(tǒng),應(yīng)用相對來說比較簡單,主要是采集和控制,涉及到數(shù)據(jù)多一點、要和外部交互的,可能會用一個文件系統(tǒng)(如FAT文件系統(tǒng))或GUI,涉及到網(wǎng)絡(luò)應(yīng)用就加個TCP/IP。很多RTOS是開源的,沒有統(tǒng)一標(biāo)準(zhǔn)的API,應(yīng)用程序要在不同的硬件和RTOS上移植是很困難的,一般都要從底層修改做到應(yīng)用層。MCU有4位機、8位機、16位機、32位機,系統(tǒng)可為有RTOS或無RTOS,RTOS也非常多,開發(fā)也沒有應(yīng)用程序的基本框架,加上應(yīng)用的多樣性,傳統(tǒng)嵌入式系統(tǒng)開發(fā)效率是非常低的。所以很多年前我曾說過:如果說Android開發(fā)是碎片化嚴(yán)重,那嵌入式開發(fā)就是粉末化的。這種情況對應(yīng)到PC機或整個計算機發(fā)展史上去看的話,目前嵌入式系統(tǒng)的開發(fā)就像上世紀(jì)六、七十年代的計算機應(yīng)用開發(fā),每一個新硬件出來,硬件軟件都是不通用、不兼容的,非常散亂。但后來PC和移動應(yīng)用為什么發(fā)展這么快?就是標(biāo)準(zhǔn)化問題。物聯(lián)網(wǎng)給嵌入式系統(tǒng)帶來了巨大的機遇,但開發(fā)平臺、開發(fā)工具的逐步標(biāo)準(zhǔn)化是必經(jīng)之路。
2 物聯(lián)網(wǎng)與IoT OS
嵌入式系統(tǒng)開發(fā)的“散亂”問題,物聯(lián)網(wǎng)有機會來改變。凡是和互聯(lián)網(wǎng)相關(guān)的應(yīng)用,發(fā)展速度都很快。從某種角度上說,物聯(lián)網(wǎng)應(yīng)用系統(tǒng)也可看作是嵌入式系統(tǒng)的網(wǎng)絡(luò)應(yīng)用,因為物聯(lián)網(wǎng)系統(tǒng)中的“物”,基本上都是各種嵌入式設(shè)備。在20多年前有一句話,叫“計算機就是網(wǎng)絡(luò),網(wǎng)絡(luò)就是計算機”,現(xiàn)在來看還是非常正確的。嵌入式系統(tǒng)放到物聯(lián)網(wǎng)背景上來看也是類似的,也許再過個十年二十年,一個不聯(lián)網(wǎng)的嵌入式設(shè)備也沒什么用了。嵌入式小設(shè)備要聯(lián)網(wǎng),還要方便、快速地開發(fā)各種物聯(lián)網(wǎng)應(yīng)用,并考慮很多安全問題、系統(tǒng)效率問題,使用傳統(tǒng)的RTOS加個網(wǎng)絡(luò)協(xié)議棧是不夠的。無論從哪個角度來看,使用一個合適的、相對標(biāo)準(zhǔn)化的物聯(lián)網(wǎng)OS(IoT OS)是更好的選擇。就像移動應(yīng)用開發(fā)會選擇Android系統(tǒng),而不是Linux系統(tǒng)。
大部分物聯(lián)網(wǎng)設(shè)備的“物”,都是基于MCU的小設(shè)備。計算機技術(shù)發(fā)展到今天,針對MCU的RTOS的基本功能、技術(shù)都是成熟的。不同RTOS的內(nèi)核和組件各自有一些小的特點,比如內(nèi)核調(diào)度是用什么算法,任務(wù)堆棧怎么處理,任務(wù)之間的通信方式、支持的任務(wù)狀態(tài)和任務(wù)數(shù)等,但是這些已經(jīng)不重要,因為硬件性能提升很多,應(yīng)用對這些特點基本無感知了。隨著IoT應(yīng)用系統(tǒng)的復(fù)雜化,應(yīng)用更多關(guān)注的是“端到云”整個系統(tǒng)的快速實現(xiàn)和穩(wěn)定,就像現(xiàn)在移動應(yīng)用APP開發(fā)者并不會去關(guān)心Android里面的底層任務(wù)調(diào)度算法一樣。IoT OS更多的要從整體系統(tǒng)架構(gòu)上思考,而不是在某個技術(shù)細節(jié)上。有關(guān)OS內(nèi)核與具體處理器的高效融合技術(shù)等,可以在處理器體系結(jié)構(gòu)中去研究和實現(xiàn),并可作為IoT OS中一個與處理器特征相關(guān)的組件。
基于MCU的物聯(lián)網(wǎng)應(yīng)用需要一個操作系統(tǒng)(IoT OS),它是一個以傳統(tǒng)操作系統(tǒng)(RTOS為主)為基礎(chǔ),針對物聯(lián)網(wǎng)應(yīng)用特征,擴充了必需的連接、安全、應(yīng)用協(xié)議、應(yīng)用框架等組件、軟硬件協(xié)同的功耗管理等組件,同時應(yīng)該支持多種主流的MCU和SoC芯片,以及國內(nèi)外主流云平臺接入?yún)f(xié)議的系統(tǒng)軟件。
IoT OS也一定是一個“端-云”一體化的OS。如果僅局限在“端”這個層面,那它一定不是一個完整的IoT OS。只有“端-云”深度結(jié)合,才能在整個系統(tǒng)層面做到高效、安全。
與IoT OS相關(guān)的開發(fā)工具、編程語言,也會有變革?,F(xiàn)在流行的開發(fā)環(huán)境,例如JS、Java,Python等,都是有時代特征和應(yīng)用特點的,對IoT應(yīng)用開發(fā)都不太合適。所以,整一個Java虛擬機放進MCU,想用Java來開發(fā)基于MCU的物聯(lián)網(wǎng)應(yīng)用或做個Demo驗證,可能更多也是技術(shù)人員的想法,并不具有普遍實際意義。
總之,作為一個IoT OS,技術(shù)重點不是OS內(nèi)核,而是“端-云”一體化的系統(tǒng)架構(gòu)。
4 IoT OS產(chǎn)品化
技術(shù)是無邊界的、是發(fā)散的,技術(shù)必需與應(yīng)用需求(場景)結(jié)合,輸出了產(chǎn)品,技術(shù)才發(fā)揮出價值。IoT OS的用戶是開發(fā)者,要被廣大開發(fā)者所采用IoT OS需要產(chǎn)品化。
第一,要有產(chǎn)品思維,要站在用戶、開發(fā)者的角度考慮問題,盡量保持OS接口的一致性,不斷地完善、抽象、迭代。
第二,對新功能、新技術(shù)要有一個系統(tǒng)性的規(guī)劃,也就是產(chǎn)品定義。做好這個IoT OS的產(chǎn)品定義,需要對物聯(lián)網(wǎng)應(yīng)用開發(fā)方式、開發(fā)者需求、系統(tǒng)架構(gòu)等很多方面有充分的理解,不僅要有豐富的經(jīng)驗,而且要有系統(tǒng)性和前瞻性。
第三,OS產(chǎn)品是用出來的。不要為出一個OS而去開發(fā)一個OS, OS一定是為了適應(yīng)不同時期的應(yīng)用需求,從簡單到復(fù)雜、從不穩(wěn)定到穩(wěn)定,是應(yīng)用拉動技術(shù)、不斷開發(fā)完善出來的。應(yīng)用需求的激增,使大量開發(fā)者尋找易用的開發(fā)環(huán)境,這就是OS的迭代之路。
另外,作為一個產(chǎn)品,外圍的東西也很重要——工具、文檔。這方面我們中國的公司以往受制于現(xiàn)實條件,做的都不好。但是作為一個產(chǎn)品,特別是要推向全球的產(chǎn)品,必須把這些配套外圍做好。
5 IoT OS商業(yè)化
很多OS是科研院所、技術(shù)人員個人所為,可以采用一些免授權(quán)協(xié)議,不太考慮商業(yè)問題。但作為一個企業(yè),不談商務(wù)是不行的。任何一個OS早期是沒有商業(yè)模式的,嵌入式OS的公司也都是很小的公司,更不要說在中國這樣不太認可軟件價值的環(huán)境下。目前,巨頭紛紛入場,IoT發(fā)展快、應(yīng)用離散、產(chǎn)品上市時間要求很高,作為一個企業(yè),首先要生存下去。沒有商業(yè)模式、怎么活下去?所以作為企業(yè),還得想其他的商業(yè)模式。
IoT OS要迭代、收斂的話,也需要生態(tài)支持。需要芯片廠商、IDH、開發(fā)者共同建設(shè),但是這個生態(tài)建設(shè)的過程是非常漫長的。這個過程誰能夠耗得起?要兼顧到公司自己的生存發(fā)展和生態(tài)建設(shè),這對小公司來說是一件非常難以平衡的事情,商業(yè)化的路就更長了。Android到現(xiàn)在可能有一些商業(yè)模式了,畢竟大家都離不開它了。OS商業(yè)化過程漫長、需要很大的投入,肯定不是短期的商業(yè)行為。那么在這個過程當(dāng)中該怎么辦?可能還得借助所謂的互聯(lián)網(wǎng)思維,“羊毛出在豬身上”,在這個點上沒有出口,但總要找到一個出口。
未來的物聯(lián)網(wǎng)系統(tǒng)可能就是:AI +軟件+硬件。
AI是能力,但對絕大部分物聯(lián)網(wǎng)應(yīng)用開發(fā)而言,用好AI就可以了,云平臺公司、芯片公司會提供這種能力。硬件是載體,各種技術(shù)、算法做的再好,終究都離不開硬件。軟件是“粘合劑”,把各種硬件、AI能力整合在一起,實現(xiàn)各種具體IoT應(yīng)用。有一句話叫“軟件定義世界”,軟件是核心競爭力。有了AI、有了硬件,最終用戶的應(yīng)用、服務(wù)都得靠軟件去實現(xiàn)。如何幫助客戶快速開發(fā)IoT應(yīng)用軟件?IoT OS是一個較好的平臺。不斷從各種應(yīng)用中做共性抽象、豐富OS的內(nèi)涵,這才是IoT OS發(fā)展的方向和路徑。只有通過這樣的方式,才可能慢慢形成一個真正的IoT OS。
6 結(jié)論
應(yīng)用拉動技術(shù),技術(shù)推動應(yīng)用發(fā)展。中國在物聯(lián)網(wǎng)OS這個點上是有很大機會的,因為物聯(lián)網(wǎng)時代目前是中國在引領(lǐng),應(yīng)用需求很大,會極大地拉動相關(guān)技術(shù),包括IoT OS的發(fā)展。IoT OS是“端-云”一體化的產(chǎn)品,不斷迭代,市場選擇,最后可能成為事實標(biāo)準(zhǔn)。必需要有用戶思維,OS的用戶是開發(fā)者,所以需要充分了解物聯(lián)網(wǎng)應(yīng)用開發(fā)者的需求和感受。IoT OS商業(yè)化之路漫長,企業(yè)需要用互聯(lián)網(wǎng)思維來考慮商業(yè)模式。
參考文獻:
[1]何小慶.物聯(lián)網(wǎng)操作系統(tǒng)研究與思考[J].電子產(chǎn)品世界,2018(1):27-31
本文來源于《電子產(chǎn)品世界》2018年第3期第30頁,歡迎您寫論文時引用,并注明出處。
評論