99热99这里只有精品6国产,亚洲中文字幕在线天天更新,在线观看亚洲精品国产福利片 ,久久久久综合网

歡迎加入QQ討論群258996829
麥子學院 頭像
蘋果6袋
6
麥子學院

一文理清散亂的物聯(lián)網(wǎng)里開發(fā)者必須關注的技術!

發(fā)布時間:2017-06-16 16:24  回復:0  查看:2246   最后回復:2017-06-16 16:24  

本文和大家分享的主要是物聯(lián)網(wǎng)開發(fā)中必須關注的一些技術,一起來看看吧,希望對大家有所幫助。

  不管是從商業(yè)模式導出的業(yè)務模型,還是從技術發(fā)展的角度看,文本都傾向于將物聯(lián)網(wǎng)技術構架看作是互聯(lián)網(wǎng)技術構架的延展。而與這個觀念對立的,是傳統(tǒng)嵌入式軟件開發(fā)的視角。

  在互聯(lián)網(wǎng)技術基礎上長出來的物聯(lián)網(wǎng)構架

  簡單來說,目前的互聯(lián)網(wǎng)技術構架主流是大前端與后端兩個世界:大前端包括 Web JavaScript 技術、Android iOS 技術,著眼于解決用戶交互;后端包括數(shù)據(jù)庫、服務構架、運維等,著眼于解決存儲、業(yè)務邏輯、安全與效率等。當然,現(xiàn)在前后端技術爭相更新,比如業(yè)務邏輯前置化、微服務構架、JavaScript 全棧化等新的解決方案也開始模糊前后端的差異。而物聯(lián)網(wǎng)設備端的引入,著實讓這些技術有點難以歸類,從業(yè)務性質上物聯(lián)網(wǎng)是另外一種前端或是前端的延伸,比如共享單車應用中,自行車端的應用顯然是跟人交互的另一個業(yè)務場景,也在為后端源源不斷地提供著數(shù)據(jù),但是自行車又不像網(wǎng)頁或者 App 完全是在解決可視化 UI 的事情。而且,現(xiàn)在的設備端開發(fā)技術跟前端技術太不像了,由于目前設備端的開發(fā)技術都還偏底層,一般來說計算資源如處理能力、本地存儲都非常有限,反而像后端一樣要考慮資源效率。

  那么,我們只好為物聯(lián)網(wǎng)單獨命名一個端,不如我們暫時就叫它設備端。

一文理清散亂的物聯(lián)網(wǎng)里開發(fā)者必須關注的技術! 

1 整體架構圖

  新后端

  MQTT

  新后端核心問題在于加入了面向設備的接入服務,實際上在這里,除類似視頻對講或是安防監(jiān)控的多媒體實時通道外,這個接入服務已經(jīng)基本事實化為 MQTT。

  消息隊列遙感傳輸協(xié)議是在 TCP/IP 協(xié)議之上使用的,基于發(fā)布/訂閱的輕量級消息協(xié)議,目前為 ISO 標準(ISO/IEC PRF 20922)。它被設計用于輕量級和低帶寬的遠程連接,發(fā)布/訂閱消息傳遞模式需要消息代理,消息代理負責根據(jù)消息的主題向需要的端發(fā)布消息。

  如果需要連接的設備沒有超過 10 萬臺,使用 8GB 內存的云主機跑 Mosquitto 就可以;如果設備量是幾十萬臺,可以考慮 Mosquitto 做集群負載均衡;如果設備量是大幾十萬臺乃至百萬臺以上,那你需要專業(yè)的團隊或專門的投入來維護這件事情,這個細節(jié)就不在本文討論范圍了。

  OTA

  固件組件在線升級是必須要做的事情,MQTT 傳大文件不靠譜,所以一般傳過去一個帶 Token URL,設備端去下載就好,HTTP 或者 HTTPS 都可以。業(yè)務比較簡單,設備端幾十萬以內沒有什么特別的地方。

  數(shù)據(jù)存儲與服務

  Mosquitto 作為 MQTT 的引擎,需要后端按照業(yè)務邏輯去調用,這里按照業(yè)務需求寫好后端邏輯即可。在各種后端語言中調用 Mosquitto 都非常簡單。

  設備端

  設備端是物聯(lián)網(wǎng)領域最五花八門并且正在發(fā)展中的地方。其他領域,后端或者前端,經(jīng)過十幾年的發(fā)展,已經(jīng)出現(xiàn)每個細節(jié)的主流技術,基本沒有碎片化的情況,但是在設備端,開發(fā)技術的碎片化是應用發(fā)展還不到位的充分表現(xiàn)。舉例講,選用不同的芯片,就要用不同的操作系統(tǒng),不同的 C 庫封裝,各家 IDE 也不盡相同,編譯工具鏈更是從芯片原廠給出。開發(fā)起來呢,寄存器、內存分配、硬件中斷都要深入進去。這就是傳統(tǒng)嵌入式開發(fā)的現(xiàn)狀,也是物聯(lián)網(wǎng)設備端開發(fā)的現(xiàn)狀。

  到目前為止,真正生產環(huán)境中用到的語言就是 C/C++,極個別會在設備端用到 Python,基本沒有其他語言。操作系統(tǒng)超過 50 種,主流的也有 10 種以上,其中嵌入式 Linux 份額并不大,各種實時操作系統(tǒng)各具特色,各有一片天地。

  簡單總結一下相對于物聯(lián)網(wǎng)開發(fā),傳統(tǒng)嵌入式開發(fā)的方式主要有以下幾個問題:

  1. 需要考慮中斷、寄存器、內存分配等過于底層的工作;

  2. 編譯、燒寫、觀察、借助調試設備進行調試的開發(fā)生命周期;

  3. 不同 SoC 和系統(tǒng)的差異過大;

  4. 缺乏代碼復用與開源的習慣;

  5. 開發(fā)者在開發(fā)環(huán)境和固件編譯上花費的時間過多。

  所以我們看到設備端的開發(fā)是基于芯片選型完成的。當設備端產品面臨一個需求時,現(xiàn)有的流程是判斷產品的各項技術參數(shù),從而確定一個芯片,進而使用這個芯片的一整套開發(fā)技術。這也是早期嵌入式場景使用的芯片自生技術特性所決定:計算資源(CPU 主頻、存儲)、外圍接口、使用溫度、通訊協(xié)議等核心參數(shù)的不同導致芯片碎片化,芯片碎片化導致嵌入式開發(fā)碎片化。

  目前這個領域的大趨勢是:物聯(lián)網(wǎng)芯片有望走向趨同,物聯(lián)網(wǎng)開發(fā)環(huán)境與技術有望趨同。

  物聯(lián)網(wǎng)芯片

  早期由于成本所限,物聯(lián)網(wǎng)領域使用的芯片總是表現(xiàn)得非常缺資源,很難找到一個各方面(計算資源、外圍接口、使用溫度、通訊協(xié)議等)都比較合適的芯片去適應普遍的場景。隨著半導體門檻逐步降低,中國半導體制造業(yè)逐步成型,芯片資源開始走向富余,其中的代表芯片是 MTK MT7697、MT7688 和樂鑫的 ESP32。

  MT7697 主要參數(shù)為:ARM Cortex M4 CPU,帶浮點單元,最大主頻 192Mhz,內存為 256KB SRAM,可配置 4MB 以上的存儲空間,芯片內嵌 WiFi BLE 4.2,有足夠的外圍接口,并能夠適應工業(yè)級的使用溫度。

  MT7688 主要參數(shù)為:MIPS 580Mhz CPU,內存最大支持 256MB,可配置 16GB 級別的存儲空間,芯片內嵌 WiFi,接口除模擬接口之外數(shù)字接口豐富,價格在幾十元人民幣,功耗較高不適于電池長期使用。但是非常有優(yōu)勢的是其提供的 Linux 開發(fā)環(huán)境,能夠讓開發(fā)者有一種在普通 x86 機器上使用 linux CLI 的體驗,Node.jsMySQL、OpenCV、Nginx 等等在阿里云上怎么用,在這個幾十塊的物聯(lián)網(wǎng)小模塊上也怎么用。穩(wěn)定性超強,幾年不死機也是正常的。

  ESP32 的主要參數(shù)為:Tensilica LX6 CP,主頻 240 MHz,內存為 520KB SRAM,可配置 4MB 以上的存儲空間,芯片內嵌 WiFi 和藍牙以及 BLE,有足夠的外圍接口,并能夠適應工業(yè)級的使用溫度。

  這幾顆芯片共同的特征是計算資源和通訊能力以及接口資源相對于傳統(tǒng) MCU 來說有足夠的富余,并保持在同樣的價位。因此,在這類芯片上,有足夠的資源做抽象化的封裝和開發(fā)框架實施。我們看到除了這幾顆芯片原廠提供的傳統(tǒng)嵌入式開發(fā)包之外,社區(qū)和其他廠商已經(jīng)在這幾顆芯片上加快了新開發(fā)技術的實現(xiàn)。

  開發(fā)技術

  物聯(lián)網(wǎng)設備端開發(fā)技術目前有兩個比較大的發(fā)展方向,一是統(tǒng)一化的物聯(lián)網(wǎng)操作系統(tǒng),二是統(tǒng)一化的物聯(lián)網(wǎng)開發(fā)框架。他們共同的目的是形成軟件定義物聯(lián)網(wǎng),與傳統(tǒng)從芯片選型開始的,著陸于原廠 SDK 中完成應用開發(fā),與需求和產品設計匯合的流程完全相反,希望從需求和產品設計入手,通過公開統(tǒng)一的軟件構架完成開發(fā),再根據(jù)開發(fā)使用到的資源去落地芯片和外圍設備。這樣做的好處主要在于提高開發(fā)效率和形成可以復用的應用代碼。

  操作系統(tǒng)

  雖然市場上存在的設備端操作系統(tǒng)有數(shù)十種之多,但是我們看到活躍的,明顯向軟件定義物聯(lián)網(wǎng)方向發(fā)展的有三家:

  · Zephyr

  Zephyr Linux 基金會于 2016 2 月發(fā)布的物聯(lián)網(wǎng)操作系統(tǒng),背后主要的支持力量來自于 ARM Linaro,具有目前嵌入式小型實時操作系統(tǒng)的普遍特征,比如:輕量到 KB 級的最小系統(tǒng)內存占用,支持多種芯片構架:從 ARM Cortex-M、Intel x86、ARC(DSP 內核)、NIOS IIFPGA 軟核)到開源的 RISC V 等,跟 Linux 一樣的模塊化內核組織方式,如圖 2 所示。

  Zephyr 目前已經(jīng)升級到 V1.7 版本,逐步向一個可以用到生產環(huán)境的系統(tǒng)靠攏了。Zephyr 最大的特色并不在于其完備性而在于其開發(fā)理念完全來自于軟件定義物聯(lián)網(wǎng),并且有很好的資源支持,在未來應該會有自己的位置。

一文理清散亂的物聯(lián)網(wǎng)里開發(fā)者必須關注的技術! 

Zephyr 物聯(lián)網(wǎng)操作系統(tǒng)

  · RTthread

  RTthread 是純國產的小型操作系統(tǒng),植根于中國的各種使用場景,10 年來已經(jīng)確立了自己的地位,在很多行業(yè)有自己的一席之地,目前社區(qū)非常活躍,核心團隊以創(chuàng)業(yè)公司的形式推進,非常專注。技術上的特征作為一個成熟的系統(tǒng),沒有什么可以吐槽的地方。Zephyr 有的技術優(yōu)勢 RTT 都有,而且 RTT 在生產環(huán)境的裝機量較為可觀。

  · 華為 LiteOS

  華為是全球范圍內物聯(lián)網(wǎng)技術的根源廠商之一,LiteOS 是一個華為內部很多產品都在用的系統(tǒng),目前也以開源的形式在全力推廣。LiteOS 最大的優(yōu)勢在于華為很多根源技術將利用 LiteOS 進行輸出,目前最大的例子就是即將全面商用的 NB-IoT 技術,設備端的開發(fā)包將會用 LiteOS 輸出。

  以上幾個系統(tǒng)一致的特點包括小型化、芯片適應范圍廣、通信協(xié)議適配比較廣泛等,他們也都是開源的系統(tǒng),研發(fā)或推動力量比較活躍。有可能在物聯(lián)網(wǎng)領域里的類似 Linux 地位的主流操作系統(tǒng)會是其中某個,也或許會一直都存在下去但是在技術上越來越趨同。

  開發(fā)框架

  首先解釋一下開發(fā)框架,開發(fā)框架可以小到是一個細節(jié)的工具,也可以大到規(guī)定開發(fā)的全部邊界。最典型的例子是 Android,純粹操作系統(tǒng)意義上,Android Linux 的一個分支,但是從 App 開發(fā)角度,除 NDK 之外,沒有任何與 Linux 打交道的地方,所以也把 Android 叫做操作系統(tǒng)。再廣泛地看,Android 除了面向手機應用的開發(fā)框架,還準備了 Google play 這樣的應用分發(fā)渠道,這是開發(fā)者生態(tài)建設。同理,我們看 Node.js 在后端的種種開發(fā)模式,也是將所有后端資源都封裝到 JavaScript 里,開發(fā)時可以隨時 npm install 各種包來 require,解決了代碼復用問題。

  因此我的觀點是,開發(fā)框架以及背后的代碼復用和開發(fā)者生態(tài)才是真正的操作系統(tǒng)。

  目前在物聯(lián)網(wǎng)領域,正在嘗試向生產環(huán)境演進的開發(fā)框架基本都基于 JavaScript,而在小型實時操作系統(tǒng)上使用的 JavaScript runtime 目前也基本集中到了 JerryScript 上。JerryScript 是三星開發(fā)和開源的一個小資源占用的引擎,內存需要 64KB,存儲需要 200KB 即可,能夠實現(xiàn)完整的事件驅動,符合 ECMAScript 5.1。

  如同前文所說,開發(fā)框架或是操作系統(tǒng)在當下需要包括以代碼復用為目的的開發(fā)者生態(tài),甚至需要包括應用分發(fā),所以我們看到在 JerryScript 的基礎上,有兩家做這類工作的團隊值得關注:

  · WRTnode

  WRTnode 是一個北京的開源硬件團隊,提供從開發(fā)到硬件交付的全流程服務。他們最近開放的 node.system noyun.io 即是著眼于實現(xiàn)物聯(lián)網(wǎng) JavaScript 的開發(fā)框架和開發(fā)者生態(tài)。在 WRTnode 的實現(xiàn)里,設備端的 JavaScript 開發(fā)已經(jīng)變得像 cloud9.io 一樣全案在線開發(fā),為開發(fā)者屏蔽了嵌入式開發(fā)的繁瑣編譯燒寫工作。

  · Ruff

  Ruff 是位于上海的創(chuàng)業(yè)公司,2015 年開始一直在演進基于物聯(lián)網(wǎng)設備端 JavaScript 的開發(fā)者生態(tài),提供了較為可行的代碼復用框架。目前他們已經(jīng)開始服務商業(yè)客戶,為物聯(lián)網(wǎng)應用的快速實現(xiàn)提供了可能。

  同時,Zephyr 和華為 LiteOS 也都有各自的 JavaScript runtime 發(fā)布計劃。

  以上我們看到了設備端開發(fā)的一些新的發(fā)展,目前這些新的設備端開發(fā)技術,已經(jīng)逐步面向交付轉移了。有理由相信經(jīng)過一段時間的發(fā)展,面向效率的商業(yè)模式驅動下的物聯(lián)網(wǎng)開發(fā)技術將迎來一大波更新,從而導向物聯(lián)網(wǎng)應用的真正大發(fā)展。



來源:CSDN

您還未登錄,請先登錄

熱門帖子

最新帖子

?