嵌入式操作系統與物聯網演進之路

物聯網是新一代信息技術的重要組成部分,回顧其發展,其中不得不提的必然是嵌入式系統。傳統的嵌入式系統與互聯網的發展衍生出物聯網,而在如今的物聯網熱潮之下,嵌入式系統也面臨著全新的機遇與挑戰。那麼,兩者的碰撞融合究竟會帶來怎樣的火花?對於傳統的嵌入式開發者,我們應該如何改變應對新格局?在此我們採訪了著名的嵌入式系統專家何小慶,跟他一起探索嵌入式操作系統與物聯網演進之路。

以下為採訪實錄:

CSDN:請您介紹一下自己以及目前所做的事情?

何小慶:我於 1991 年北航計算機專業研究生畢業,之後在研究所做科研式項目,到 1995 年,開始從事嵌入式相關的工作,並創建了北京麥克泰軟體技術有限公司。2009年之後,在北航出版社旗下的《單片機與嵌入式系統應用》雜誌方面擔任副主編,現在是編委會副主任,後來也在北航的電子信息學院和軟體學院授課。目前我一方面負責企業中的部分工作,另一方面從事雜誌和教學工作。

CSDN:在您這麼多年的從業過程中,您如何提升自己的技能?

何小慶:第一點,與時俱進。開發者身處 IT 產業之中,而我們知曉如今的 IT 產業最大的一個挑戰的就是技術的日益變更,更新速度很快。嵌入式和物聯網行業實際上也一樣,雖然沒有如 IT 產業的變化這麼快,但是想要成為一名優秀的開發者,必須得與時代共同進步學習。因為短則十年前,你掌握的技術知識,在如今的項目可能都不會使用了。

第二點,技術與產業應用結合。因為嵌入式系統本身跟物聯網系統一樣,它是面向於產業應用背景的,平時所說的物聯網概念,只有將其放在比智能交通、智能家居這些產業中,才會發揮作用,更好地體現出來。因此必須要把你的技術和產業應用結合起來,這樣作為工程師,才能將最大的價值發揮出來。

物聯網與嵌入式系統的碰撞融合

CSDN:與早年相比,嵌入式操作系統最大的不同是什麼?

何小慶:嵌入式操作系統因為物聯網技術和應用之後,又重新被很多人關注起來,同時嵌入式系統也發生了一些變化,主要有兩個方面:

今天的嵌入式操作系統要關注物聯網的底層技術,比如感測器的節點,以及一些我們稱之為小型的通訊網關,這些節點在以前是不適用嵌入式操作系統的。但是現在因為物聯網要具備聯網的特點,,所以嵌入式操作系統就要往這個方面去深入發展,即往下。

其次嵌入式操作系統是要往上走。嵌入式操作系統的用武之地,一個是網關,還有一種是帶有人機界面的設備,因為手機流行以後,大家都希望有一個非常好用的人機界面的操作方式;再往上發展即我們所說的雲計算和人工智慧,最典型的無人駕駛車,在這個裡面大量的使用了嵌入式系統和嵌入計算技術。

向下的嵌入式操作系統裡面主要是實時的操作系統,如我們所說的 RTOS,應用的機會就會很大;向上的話,如 Linux 應用的機會就會很多,開源是主流。

CSDN:您認為嵌入式開發的學習應該怎麼如何開始和深入?

何小慶:軟硬結合是嵌入式系統的一個最大的特色。正如程序員學習 Java 編程需要有個 PC ,或者智能手機,智能手機可以說是嵌入式設備也可以說不是,它是計算機平台的。而物聯網和嵌入式系統開發真的不太一樣,想要開始嵌入式和物聯網的開發,個人的建議是,首先需要有一塊開發板,如 STM32,這個是最流行的,價格也很便宜,或者找個樹莓派,然後再找到相應的一些開源的軟體、編程工具,或者是 Linux 操作系統,然後就可以開始學習了。

逐漸深入的話,大家可以按照物聯網的一些應用場景來學習。因為物聯網的話,至少要有感測器,如溫度感測器、濕度感測器,然後結合開發板,將感測器加進來,其次再去找一個通訊模塊,比如說藍牙、WiFi,和開發板連起來,或者有了如樹莓派這樣的開發板,已經有了 WiFi 了,那就不需要了。大家可以試著做一下這種應用,把數據採集下來,然後進行數據的處理,再發到的智能手機或者雲端,智能手機一般是比較容易的。

CSDN:如今物聯網與雲計算的技術應用越來越廣泛,嵌入式系統行業如何面對這樣的機遇?

何小慶:如今的物聯網後端有雲計算,也開始有大數據,在此之後,就是人工智慧,這些對嵌入式系統的影響已經逐漸都展開了。從中國來講,我們也算是倡導物聯網最早的國家之一了。這些對嵌入式系統絕對是個機遇,因為就是物聯網這扇門開放之後,物聯網的發展就會越來越寬。而最初嵌入式系統是個單品,比如大家可見的控制器,它的程序是固定的寫好的,按照程序員的要求,它經過編程設置好了,那麼嵌入式系統從單品到後來發展成一個系統,就相對複雜一點,那個時候我們很多嵌入式系統是要通過 PC 把消息系統的數據展示出來,或者我們可以實現一個分散式的控制系統。物聯網之後,嵌入式系統最大的變化就是將系統再往上面發展,即以服務的模式去發展,其體現出來就是曾經在 PC 上展示出來的數據,現在展示到雲端和智能手機上了。嵌入式系統面臨的機遇,就是我們要把原來的單品,變成系統,而且這個系統將來面向服務的。

CSDN:您認為物聯網的發展經歷了哪幾個階段?

何小慶:我對於物聯網發展階段的理解,非常贊同英國格拉斯格大學 Duncan 博士看法,他把物聯網比喻成是一棵樹,認為物聯網發展可以分為三個階段:第一個階段是個打基礎的階段;第二個階段是培養的階段;第三個階段是收穫的階段。各個國家物聯網發展的進程肯定會不大一樣,我認為中國目前是在培養的階段,,但是距離我們可以有收穫的階段也應該很快了,現在樹上可能已經結了一些果子了。

CSDN:ARM、谷歌、微軟、華為、阿里、慶科等國內外公司紛紛推出物聯網操作系統,在這個諸侯爭霸時代也暗示最終只有少數會成為主流,您認為一個好的物聯網系統應該具備哪些特性?

何小慶:最後能剩下的操作系統也就只有少數的幾個,因為不需要那麼多,如手機和 PC 系統一樣。那麼關於一個物聯網操作系統需要具備以下技術特徵:

管理物的能力:從嵌入式系統視角看,「物」是網路上發送和接受信息的一個個嵌入式計算小設備(或稱為深嵌入式系統),比如家庭或者工業現場的智能感測器。現在嵌入式系統設計的一個共識就是降低功耗,常見的方法是系統儘可能快地執行,然後立即進入睡眠模式。現在的處理器核心架構,在低性能狀態下,可以做到基本上不消耗任何電力。

可伸縮和擴展性的架構:隨著 32 位 MCU 的價格下降,Linux 又無法支持沒有 MMU 的 MCU,RTOS 理所當然地成為運行在 MCU 的物聯網 OS 的首選,原因是基於 RTOS 的設計運行更靈活和可擴展的軟體運行在這些系統中。

泛在互聯網功能:支持物聯網常用的無線和有線通信功能,比如支持GPRS/3G/HSPA/4G 等公共網路的無線通信功能,同時要支持 ZigBee/NFC/RFID/WiFi/Bluetooth 等近場通信功能,還要支持 Ethernet/CAN/USB 有線網路功能,以及廣受關注的窄帶通信技術NB-IoT 和LoRa。在這些不同的物理和鏈路層介面之上的協議之間要能夠相互轉換,能夠把從一種協議獲取到的數據報文,轉換成為另外一種協議的報文發送出去,最後要能夠遷移到互聯網協議。

系統的安全性:物聯網設備中很大一部分是使用 MCU 和資源有限的微處理器,與大型設備相比,這些小型設備更容易保護,不易受同類型威脅的攻擊,更安全。

雲計算後台:物聯網設備區別於傳統的設備的標誌就是這些設備將產生海量的數據,如何管理和處理這些數據是擺在物聯網企業面前的一個難題,雲計算無疑是解決這個難題的最有效的技術手段。選擇支持物聯網系統的雲計算平台需要考慮一下的技術因素:

支持雲計算和物聯網協議(Websocket、RESTful、MQTT 和 CoAP 等)。

靈活的標準和設備管理方式。

支持安全的遠程固件升級。

Web/移動應用開發的能力。

高效和可靠數據存儲能力。

先進的編程語言:用於傳統的嵌入式系統的編程語言多數是 C 和 C++。因為物聯網設備的特點,互聯網編程技術將進入物聯網設備,優化後的互聯網編程語言可以低功耗的 MCU 上運行,比如 Java、Javascript 和 Python。需要注意的是, Java 總是運行在操作系統之上,所以你的選擇不是 C/C++ 或 Java 兩者之一,而是 C/C++ 和 Java 都會使用。

但是物聯網操作系統就是具備了以上的六個特徵,也未必會有人用,所以怎麼能做得好?我認為做好一個物聯網操作系統,生態環境建設的要放在一個重要的位置上,一定要讓人能夠去願意去用它。另外現在的物聯網操作系統中有一個很大的問題是,搭建的生態的環境還不夠豐富,大家還沒有意識到或有迫切性認為,現在要開發一個物聯網的項目,就一定要需要用一個物聯網的操作系統,需求不太強烈。因此一個好的物聯網操作系統一定要去打造生態環境,讓更多的人了解繼而使用。

CSDN:隨著設備在醫療、航空、交通等重要領域的應用,安全、隱私和可靠性成為嵌入式系統最重要的問題,對從業者來說,在這些領域,有哪些特殊的規則和標準需要遵循?

何小慶:安全現在非常的重要,也受到更多人的關注。物聯網前段時間也發生由於黑客操縱木馬機制,導致物聯網的設備域名無法解析。「安全」這次詞英文有兩種:security 和 safety,security 更多的是指信息安全,比如說物聯網安全,safety 是與安全和可靠性相關。以上這兩種安全對於我們目前這個領域的從業人員都要關心。現在在一些重要的行業中已經有相關的功能標準,那麼從業人員可以去學習和遵循。如在軌道交通上用的比較多的 IEC 61508;在汽車工業上用的比較多的為 ISO 26262,這些標準都定義了你所開發的軟體,包括整個系統、功能模塊,應該遵循的規範。作為開發工程師,想要把控好安全的問題,可以從編程開始。嵌入式一般是用 C/C++ 語言來編程,那可以先去學習 MISRAC,學會如何書寫的更安全可靠 C 語言代碼。

CSDN:作為開發者,想要物聯網開發,首先要學嵌入式嗎?對於入門級開發者,常見的誤區有哪些?

何小慶:「想要物聯網開發,首先要學習嵌入式」這個觀點是正確的,嵌入式是物聯網開發的基礎,現在各大高校的自動化、計算機、電子信息等這些專業中,都有嵌入式的課程。也有不少學校開設了物聯網專業,其中也有大量的嵌入式的課程。但是並不是所有的從事物聯網系統開發應用的人都要懂嵌入式,因為物聯網是一個系統,它有感測器、網關,即為就是我們計算的部分,它後面有手機 App、伺服器,假如你正好是只是從事手機 App 開發的,或者伺服器端開發的,那就不需要深入了解嵌入式系統的知識,你只要知道嵌入式的設備是如何跟你的手機和伺服器進行通訊的,比如藍牙通訊協議,你只要知道這些通訊協議基本原理就可以。

CSDN:如果傳統的嵌入式工程師想要拓展轉型物聯網方向,需要掌握哪些技能?

何小慶:從自身這些年從事一些物聯網的項目和教學的經驗總結起來,我認為想要轉型至少應該具備以下三個方面的技能:

無線通訊。因為原來的嵌入式系統是個單品,通訊可能就是個串口,這個是有線的。而現在物聯網多數都是無線的,所以開發者必須要掌握一種無線通訊的技術,比如藍牙、WiFi 等,在嵌入式系統編程學會如何能夠通過這種無線通訊協議把你的數據給送出去。

手機編程技術。以前的嵌入式系統的開發者只關心在設備端編程,比如 MCU 的編程,現在嵌入式系統一定要會一種手機的編程技術,比如 Android 編程。你不一定是個 Java 的編程專家,但是你應該能夠看懂手機端編程的代碼,對它可以進行一些小的修改。因為現在很多物聯網的設備,它是與手機進行通訊的,比如智能家居的一些產品。

感測器的介面驅動和演算法。傳統的嵌入式系統工程師不太涉及到這個領域,現在每個物聯網的設備幾乎都帶著感測器,那麼這種感測器的使用、驅動程序以及一些簡單的演算法該怎麼編寫。這些嵌入式的工程師應該要掌握這一點。

CSDN:關於嵌入式物聯網行業的未來發展,您什麼期待?

何小慶:回到物聯網的打基礎、培養、收穫的三個階段來講,中國目前是在一個培養階段,培養階段最大的好處就是百花齊放,百家爭鳴,機會很多。對於這些從事於這個領域的工程技術人員,無論是創客還是傳統行業,都有機會,所以我是希望年輕的工程技術人員可以結合自己的現在所學、所用、所做,同時藉助於物聯網這個參天大樹,找尋發展機會和發展空間。

本文由(物聯網 物聯網解決方案服務商-深圳北航物聯網技術研究院 專業服務於物聯網公司)編輯整理,如有侵權請聯繫本站。


推薦閱讀:

micropython入門教程

TAG:嵌入式開發 | 嵌入式設計 |