日本孕妇疯狂做爰xxⅹ高潮,黑人大鷄巴A片,农村大炕弄老女人,三级视频,成熟老妇女视频

八喜|八喜官網專注網站建設|網站設計|網站推廣|網站軟件制作公司|中山SEO|中山網絡公司|中山網頁制作
抖音小程序
抖音小程序
百度小程序
八喜電腦網絡
微信小程序
八喜電腦網絡
微信公眾號
八喜電腦網絡
APP下載
八喜電腦網絡
手機版
八喜電腦網絡
網站地圖

聯系我們

C

電 話(hua): 0760-22270220

郵 箱(xiang): 267151804@qq.com

網(wang) 址://aspbar.cn

地 址: 中山市小欖鎮民安中路163號民安廣場1幢(chuang)25樓25G

物聯網應用系統軟件開發流程

人氣:245發表時間:2022/7/25 5:53:36
物聯網操作系統幾乎都是在傳統的RTOS(如FreeRTOS、UCOS)添加網絡協議棧發展起來的。由于Linux自身保護網絡協議棧,所以也有操作系統是高度裁剪Linux內核而來,但是由于linux需要跑MMU,所以一般需要高級CPU,也需要M級別的RAM。本文轉載自知乎技術博文(//zhuanlan.zhihu.com/p/23618181),并進行部分刪減修改。

一、操作系統清單(dan)

Brillo (a solution from Google for buildingconnected devices)

mbedOS (ARM mbed, The ARM IoT DevicePlatform)

RIOT (The friendly Operating System for theIoT)

Contiki (an open source operating systemfor the IoT)

Zephyr (a small, scalable real-timeoperating system for use on resource-constrained systems)

Nuttx (a RTOS with an emphasis on standardscompliance and small footprint)

除(chu)了(le)單獨對(dui)(dui)這些OS介紹(shao)外,我(wo)們也會來個(ge)橫向大比(bi)拼。目的是讓項(xiang)目負責(ze)人,產品經理(li)在對(dui)(dui)系(xi)統選型的時候能有個(ge)合理(li)的參考。嵌入式(shi)系(xi)統中,當然(ran)是Linux。但當系(xi)統較小,能力不足以跑Linux的時候,就很容易糾結,特別(bie)是對(dui)(dui)于生態要求很高的應(ying)用(yong)。

二、Brillo

//developers.google.com/brillo/

Brillo: Google’s OS for IoT MPU devices

? Targeted at smarthomes

? Expanding to buildingsand industry

? Supports MPU devicesw/ min 35MB of RAM

Brillo需要跑在(zai)(zai)帶(dai)MMU的(de)AP上(shang)(shang)。其實很顯然,Brillo基于(yu)Android,它(ta)再怎么裁剪,也(ye)是(shi)需要跑在(zai)(zai)Linux,Kernel上(shang)(shang)還要打一(yi)堆patch。只(zhi)是(shi)它(ta)把Android上(shang)(shang)關于(yu)圖形(xing)、JAVA虛擬機(ji)及Framework統統裁減掉。只(zhi)保留了C/C++運行環境,Binder IPC,SSL等網絡必須組件。這也(ye)就(jiu)意味著在(zai)(zai)Brillo上(shang)(shang)開發APP其實是(shi)Native的(de),而(er)且驅動程(cheng)序都由Android的(de)那套(tao)HAL來做(zuo)抽象,所以應用(yong)程(cheng)序是(shi)直接和HAL、Lib來打交道。

Brillo 架構框(kuang)圖(tu)

物聯網操作系統比較

 

看(kan)似(si)Google放了(le)(le)個(ge)IoT的(de)(de)(de)操作系統(tong)出來,實(shi)際Google目前專注(zhu)于應(ying)用場景中功能相對強(qiang)大的(de)(de)(de)節(jie)點,或者邊界節(jie)點Border Router這樣的(de)(de)(de)角色。最重要的(de)(de)(de)是Google利用Weave打通(tong)了(le)(le)設(she)備節(jie)點到Google云(yun)(yun)端(duan)的(de)(de)(de)通(tong)道。Google實(shi)際上是用了(le)(le)最小的(de)(de)(de)代價(jia),實(shi)現了(le)(le)移動設(she)備平臺Android、物(wu)聯網節(jie)點和自己的(de)(de)(de)云(yun)(yun)端(duan)的(de)(de)(de)互聯互通(tong)。至于那(nei)些跑不了(le)(le)Brillo的(de)(de)(de)節(jie)點怎么(me)互聯互通(tong),Google交給其他人去(qu)考慮了(le)(le),反正(zheng)Brillo也支持6LowPan, Thread之類的(de)(de)(de)協議。如(ru)果你寫過Android HAL/Service,那(nei)么(me)開發(fa)Brillo App易如(ru)反掌,直接調用Device HAL去(qu)操作設(she)備;調用WeaveAPI去(qu)做(zuo)通(tong)訊。

int ret =hw_get_module(LIGHTS_HARDWARE_MODULE_ID, &module);

if (ret || !module)

err(1, "Failed to load %s", LIGHTS_HARDWARE_MODULE_ID);

ret =module->methods->open(module,

LIGHT_ID_NOTIFICATIONS,

reinterpret_cast<structhw_device_t**>(&light_device));

if (ret || !light_device)

err(1, "Failed to open %s", LIGHT_ID_NOTIFICATIONS);

以(yi)(yi)上(shang)代碼調用(yong)HAL統一接口打開一個(ge)LIGHT設(she)備,是(shi)(shi)不是(shi)(shi)很熟(shu)悉(xi)?然后起個(ge)Daemon,利用(yong)Weave API來(lai)接收從網絡上(shang)來(lai)的(de)(de)XMPP請(qing)求,對設(she)備進行配置或者(zhe)狀態(tai)監測。在云端和(he)移(yi)動(dong)端,可以(yi)(yi)使(shi)用(yong)網頁(ye)版的(de)(de)Weave Developers Console和(he)Weave App來(lai)控制監測設(she)備。

Brillo可(ke)以在資源較少(shao)的(de)(de)MPU上(shang)跑,35MB內(nei)存就行(xing),老的(de)(de)ARM9估計(ji)也(ye)可(ke)以。它(ta)可(ke)建(jian)立很(hen)多低(di)成(cheng)本的(de)(de)設(she)備(bei)節(jie)點,用來和智能設(she)備(bei)、云(yun)端通訊,或者(zhe)作為PAN內(nei)設(she)備(bei)對(dui)外的(de)(de)橋梁(liang)Border router。Brillo可(ke)玩性(xing)應(ying)該很(hen)高,家里的(de)(de)PC機,路(lu)由器(qi)都可(ke)以拿來跑,生態(tai)系(xi)統強大。但致命缺點是,我們在天(tian)朝啊(a),你懂(dong)得。相信國內(nei)的(de)(de)BAT之類,會考慮移(yi)植,改造,變異。就如對(dui)Android一般。

二(er)、mbedOS

2.1 簡介(jie)

mbed是ARM自己(ji)建(jian)立的(de)IoT解(jie)決方案平臺

The ARM mbed IoT Device Platform providesthe operating system, cloud services, tools and developer ecosystem to make thecreation and deployment of commercial, standards-based IoT solutions possibleat scale.

它被ARM分成三大部(bu)分

mbed Cloud

mbed Device Connector

mbed Client

ARM居然也自己(ji)搞了(le)個(ge)Cloud,可以通過“mbed DeviceConnector”來訪問(wen)連接到云(yun)端(duan)的(de)設備。并提供網(wang)頁版(ban)的(de)Connector來管理(li)設備,用戶可以通過RESTful API over HTTP來寫自己(ji)的(de)APP。

“mbed Client”的(de)定義是這樣的(de):

a library that connects devices to mbedDevice Connector Service

看似比較奇怪,其(qi)實(shi)就是一套可以移植(zhi)到各種操作(zuo)系統上的(de),能夠(gou)和mbed Device Connector Service通訊(xun)的(de),跑在硬件(jian)設備上的(de)軟件(jian)庫。它使(shi)用基于UDP的(de)CoAP協議來通訊(xun),使(shi)用mbedTLS來實(shi)現(xian)連接(jie),兼容(rong)LWM2M。

2.2 mbed Client 架構

物聯網操作系統比較

 

說到這里,我們(men)的(de)主角mbedOS該登場了(le)。ARM為了(le)在基于(yu)(yu)ARM Cortex-M內核(he)的(de)硬(ying)件平臺(tai)(tai)上(shang)實現對設(she)備的(de)操作,及通(tong)(tong)(tong)過(guo)Device Connector訪問云端(duan),它必須有(you)一套可(ke)以(yi)支(zhi)持(chi)mbedClient的(de)軟件解決(jue)方案。mbedOS既是(shi)基于(yu)(yu)RTOS內核(he),并(bing)提供各種ARM SoC硬(ying)件平臺(tai)(tai)驅動(dong)和BSP的(de)操作系統,在此(ci)之上(shang),實現整個mbedClient庫。在PAN的(de)物聯區域內,設(she)備與設(she)備的(de)通(tong)(tong)(tong)訊(xun)都可(ke)以(yi)使用mbedOS提供的(de)方案來解決(jue),它支(zhi)持(chi)NFC,RFID,BLE,6LowPAN甚至是(shi)Thread。在設(she)備與云端(duan)的(de)通(tong)(tong)(tong)訊(xun)上(shang),mbedOS既支(zhi)持(chi)以(yi)太網,WiFi,也支(zhi)持(chi)3G。跑mbedOS的(de)設(she)備既可(ke)以(yi)是(shi)設(she)備節點,也可(ke)以(yi)是(shi)邊界路由器(比(bi)如6LowPAN轉IPv6),也可(ke)以(yi)和智能設(she)備通(tong)(tong)(tong)過(guo)BLE通(tong)(tong)(tong)訊(xun)。mbed Device Connector又可(ke)以(yi)使用CoAP協議在設(she)備端(duan)和云端(duan)通(tong)(tong)(tong)訊(xun)。

2.3 mbedOS對(dui)于網絡(luo)的支持可謂(wei)很強大

LWIP IPv4/v6, TCP/UDP

mbed BLE stack

6LowPAN (host, router, border router)

Thread (ED, router, border router)

BSD socket API

除此之(zhi)外,它還支持

文件系統:cfstore,flash-journal等

C++的驅動接口,及驅動抽象(xiang)層HAL

幾乎(hu)所(suo)有(you)使用ARM CortexM核的大(da)廠硬件平臺。廣度可以,但深度有(you)待提高

也就是說mbed把每一(yi)類(lei)(lei)驅動(dong)都抽象成一(yi)個基(ji)類(lei)(lei),真正做(zuo)驅動(dong)移植(zhi)的時候(hou),從(cong)這個類(lei)(lei)派(pai)生(sheng)出來,然后實現相應(ying)的HAL函數。使得用戶在實例化該驅動(dong)派(pai)生(sheng)類(lei)(lei)后,能夠調(diao)用相應(ying)的類(lei)(lei)接口,從(cong)而訪問實際的設備(bei)驅動(dong)程(cheng)序。比如AnalogIn::read(),是返(fan)回ADC的采(cai)樣結果。

2.4 mbed生態(tai)

ARM提供在線(xian)(xian)IDE,可(ke)以(yi)在線(xian)(xian)快速編譯

線(xian)下的開發環境也簡(jian)單易用, mbed cli類似(si)于android的repo

github上的例(li)子很多(duo),參考(kao)性強

社區相(xiang)對比較活躍

合作伙伴眾多

ARM搞起了云(yun)和(he)RTOS,令人聯(lian)想(xiang)到之(zhi)前的Linaro,看似前景(jing)不錯。而且據說國內的BAT也(ye)(ye)有在(zai)使用mbed做產(chan)品,其實就把mbed Cloud換自(zi)己的云(yun),改(gai)造下(xia)DeviceConnector即可。本人也(ye)(ye)正在(zai)研究mbed,之(zhi)后會寫些使用心得。

三(san)、RIOT

//github.com/RIOT-OS/RIOT

3.1 簡介(jie)

The friendly Operating System for theInternet of Things

RIOT官方的口號:)

if your tiny IoT device can’t run Linux,use RIOT

RIOT是面向開發(fa)者的(de)(de),開源的(de)(de),適合物聯網的(de)(de)操作系統。它的(de)(de)背后(hou)沒有某個公(gong)司的(de)(de)支持,而是由社區驅動。

他的(de)一些特(te)性(xing):

標(biao)準的C/C++編程

標準(zhun)的gcc編(bian)譯環境

可以(yi)跑在8位,16位和32位的嵌入式系(xi)統(tong)上

部分(fen)的(de)POSIX接口(kou)兼(jian)容(以(yi)后(hou)的(de)目標是全兼(jian)容)

支持(chi)在Linux/Unix的(de)虛(xu)擬(ni)機(ji)上運(yun)行(xing)

實時性,快速的中斷響應(~50 clockcycles)

微內(nei)核(he),組件都可以動(dong)態加載,并且通過message來實現服務

極小開(kai)銷的多線程(cheng)支持(chi)(&lt; 25 bytesper thread)

豐富(fu)的網絡(luo)支持:6LoWPAN,IPv6,RPL,CoAP and CBOR

高精度的(de)定時(shi)器

豐富的工具 (System shell, SHA-256, Bloom filters, …)

3.2 RIOT 架構框圖(tu)

物聯網操作系統比較

 

RIOT的(de)(de)CPU的(de)(de)IP驅(qu)動(dong)基本都有一(yi)套統一(yi)接(jie)口(kou),但是沒(mei)有抽象層,被放(fang)(fang)在源代碼(ma)的(de)(de)cpu\periph中(zhong)。這意味著在做新的(de)(de)平臺支(zhi)持時(shi),你要注意驅(qu)動(dong)的(de)(de)接(jie)口(kou)要和(he)API文檔(dang)里的(de)(de)一(yi)致(zhi),比如ADC的(de)(de)adc_init(), adc_read()。源代碼(ma)的(de)(de)drivers則放(fang)(fang)著板級(ji)的(de)(de)驅(qu)動(dong),比如NXP的(de)(de)MMA8541,利用i2c統一(yi)接(jie)口(kou)來訪問。

由于是微(wei)內核(microkernel)的(de)(de)實現,所有(you)的(de)(de)系統(tong)服(fu)務包括時(shi)鐘(zhong)、網絡協(xie)議棧、網絡服(fu)務等,都是通(tong)過(guo)創(chuang)建獨立的(de)(de)線程來實現。在線程中(zhong)都有(you)event_loop來接收服(fu)務請求,處理并(bing)發送服(fu)務結果(guo)。RIOT中(zhong)最關鍵的(de)(de)是GNRC(Generic network stack)網絡協(xie)議棧,它實現了(le)從MAC層(ceng)一直到(dao)傳輸(shu)層(ceng)的(de)(de)各(ge)種協(xie)議,如6LowPan,IPv4/v6,RPL,TCP/UDP。并(bing)且這(zhe)(zhe)些(xie)不同的(de)(de)協(xie)議棧之間通(tong)過(guo)netapi統(tong)一接口(kou)開放給用戶。對(dui)于應(ying)(ying)用層(ceng)來說,GNRC提(ti)供了(le)conn和socket兩種API。在方面(mian),貌似(si)802.15.4這(zhe)(zhe)層(ceng)沒有(you)加入AES的(de)(de)支持,只(zhi)提(ti)供tinyDTLS在應(ying)(ying)用層(ceng)給用戶使用。由于RIOT的(de)(de)POSIX的(de)(de)部分兼容(rong)性,及提(ti)供BSD socket的(de)(de)接口(kou),很多應(ying)(ying)用都可以方便的(de)(de)移(yi)植過(guo)來,在pkg/你能(neng)找到(dao)例如libcoap,openwsn這(zhe)(zhe)樣(yang)的(de)(de)應(ying)(ying)用。

RIOT最早(zao)是由柏(bo)林自由大學開發(fa)(fa)的,目前由社區維護,貌(mao)似歐(ou)洲開發(fa)(fa)者(zhe)居多。從devel maillist里來看,感覺社區活(huo)躍程度一(yi)般。每兩(liang)周(zhou)都有(you)一(yi)個Virtual meeting,都還是大學在牽頭。

總之,一個(ge)很有想法的微內核,加上開發環境相對于之前熟悉Linux的開發者來(lai)講(jiang)很友好。應該是個(ge)潛(qian)力(li)股。

四、Contiki

//www.contiki-os.org/

4.1 簡介

以下是維(wei)基百(bai)科對Contiki的(de)介紹:

Contiki is an operating system fornetworked, memory-constrained systems with a focus on low-power wirelessInternet of Things devices. Extant uses for Contiki include systems for streetlighting, sound monitoring for smart cities, radiation monitoring, and alarms

可以看得出來(lai),原來(lai)Contiki是為智能城市(shi)而誕生的(de)。支持(chi)的(de)平(ping)臺(tai)(tai)有限(xian),基(ji)本是內部(bu)集成CC24xx/25xx,MC1322x之類Radio的(de)SensorTag平(ping)臺(tai)(tai),或者一(yi)個很小(xiao)的(de)MCU加上這些Radio模塊的(de)平(ping)臺(tai)(tai)。從它(ta)所支持(chi)的(de)平(ping)臺(tai)(tai)也能看出,Contiki更加專注于(yu)小(xiao)型傳感器節點(dian)。它(ta)更與PAN內的(de)節點(dian)通(tong)訊,當(dang)然他(ta)也有傳統(tong)的(de)IPv4/v6,TCP/UDP支持(chi),使得利(li)用(yong)CoAP可以用(yong)來(lai)和云端通(tong)訊。

4.2 Contiki的(de)特性(xing):

完整的網絡支持,HTTP,UDP/TCP,以及低功耗(hao)協(xie)議6lowpan,RPL和CoAP。整個(ge)IPv6協(xie)議棧(zhan)都是(shi)有思科(ke)貢獻

專門為小(xiao)內存(cun)設備設計的(de)內存(cun)管理(li)器

小巧的估算功耗(hao)的工具

豐富的實例

支持外部Flash的Coffee flash文件系(xi)統

Protothreads,事件驅動及多線(xian)程的編(bian)程模型

Cooja網絡模擬器(qi)

Rime協議棧,比(bi)IPv6更輕量級(ji)的網(wang)絡(luo)層

Contiki也是個微內核(he)(microkernel),所有的(de)系(xi)統(tong)服務都(dou)是通(tong)過啟線(xian)程(cheng)完(wan)成,Protothreads線(xian)程(cheng)整合了線(xian)程(cheng)間事件通(tong)訊,使得編寫系(xi)統(tong)服務非(fei)常容(rong)易。驅動(dong)程(cheng)序(xu)方面(mian),Contiki沒有統(tong)一(yi)的(de)驅動(dong)程(cheng)序(xu)框架,驅動(dong)都(dou)是各家MCU自(zi)帶開發包提供,這樣(yang)的(de)好處是能夠保證生成的(de)二進制(zhi)代碼夠小。

Contiki有個很有特(te)色(se)的模擬器,Cooja Network Simulator,可(ke)以(yi)(yi)運行很多例(li)子,并且可(ke)以(yi)(yi)監(jian)控整個網絡的包及節點狀(zhuang)態。這樣(yang)可(ke)以(yi)(yi)讓用戶在沒有充足硬件設備的條件下做開發。

Contiki社(she)區基本依靠maillist討論問題(ti),github做pull request。從maillistarchive里看(kan),社(she)區活躍程(cheng)度很一般。

五、Zephyr

//www.zephyrproject.org/

Zephyr居然是Linux基金(jin)會的(de)合(he)作項(xiang)(xiang)目。應(ying)該(gai)是由INTEL將WindRiver的(de)商用操作系統WindRiverRocket部分開(kai)源后誕生的(de)項(xiang)(xiang)目(今(jin)年才誕生)。目前可用資料不多,而(er)且支持的(de)硬件平(ping)臺較少,ARM的(de)平(ping)臺就沒(mei)幾(ji)個。

Zephyr像極了Linux,它的源代碼目(mu)錄結(jie)構Kconfig使用(yong)(yong)方式,啟(qi)動流程(cheng),Driver Model都可以看(kan)出(chu)來(lai)。用(yong)(yong)戶的應用(yong)(yong)程(cheng)序(xu)是啟(qi)動后(hou)創建(jian)的一(yi)個線程(cheng),用(yong)(yong)戶的main()會在所(suo)有的驅動,組件(jian)及(ji)硬件(jian)板(ban)子初始化后(hou)被調用(yong)(yong),驅動使用(yong)(yong)DEVICE_INIT(),組件(jian)使用(yong)(yong)SYS_INIT()初始化,并(bing)帶有優先等級。驅動都會遵(zun)循統一(yi)的驅動結(jie)構:

struct device {

struct device_config *config;

const void *driver_api;

void *driver_data;

};

所以(yi)驅動要自己定義一(yi)個配置結構,一(yi)套(tao)API的函數指針(zhen),以(yi)及驅動狀態結構。和Linux很像(xiang)。

網絡支持很奇葩,協議棧居然都是(shi)用的Contiki的,Bluetooth還(huan)算比較全。子(zi)系(xi)統方面,文件(jian)系(xi)統、USB都是(shi)很簡(jian)單,很原始的支持。mbedTLS和tinyDTLS被拿了過來(lai)。

總體來講,Zephyr還處于初期,很多東西(xi)都不完善。Owner又是(shi)Intel,希望別重蹈Moblin的覆轍。

六、Nuttx

//www.nuttx.org/

 Nuttx,實時操(cao)作系(xi)統,POSIX接口支持(chi),Loadable內核模塊支持(chi),BSD socket,MMU支持(chi),等(deng)等(deng)。我只能說,長的(de)太像Linux了。Build也是Kconfig,目(mu)錄結構也基本和LinuxKernel一樣(yang)。

ARM的核基本都支持

文件(jian)系(xi)統也(ye)是VFS支撐,大而(er)全。網(wang)絡的(de),NAND MTD的(de),pseudo都支持

自(zi)己的Clib,也可以支持uCLib

網絡協議棧,但是沒有wireless!

有(you)自(zi)己的USB協議棧

我一開始沒打算談(tan)Nuttx,他的無線支持很差,就更別(bie)談(tan)無線互聯了(le)。但是BAT居然有人用它做云OS。估(gu)計是團(tuan)隊(dui)實(shi)在太熟(shu)悉Linux了(le),跑(pao)不(bu)了(le)Linux也(ye)要(yao)找個(ge)類似的開發環境。有了(le)BAT的支持,Nuttx估(gu)計可以發達了(le)。

七、大比拼

這里(li)用一(yi)張比較簡單的表(biao)來對比這些操作系統和生態

物聯網操作系統比較

 

除了Brillo以外,其他都(dou)是RTOS有很小的(de)(de)內(nei)(nei)核(he)。程(cheng)序所占的(de)(de)內(nei)(nei)存(cun)和代(dai)碼大小取決(jue)你需(xu)要(yao)的(de)(de)硬件平臺的(de)(de)驅動多少,需(xu)要(yao)什么樣的(de)(de)協議棧等等的(de)(de)功能。

八、結尾

最(zui)近行業趨勢有所(suo)變化,除了(le)互(hu)聯網(wang)依然(ran)火(huo)熱外,大(da)家的(de)(de)(de)焦點無(wu)疑都從手機投向了(le)汽車、工(gong)業、物聯網(wang)。大(da)家都希望能夠使用(yong)物聯網(wang)和(he)(he)互(hu)聯網(wang)將(jiang)傳統行業中的(de)(de)(de)產(chan)品實現(xian)互(hu)聯互(hu)通,實現(xian)信息共享、提高生活(huo)、生產(chan)效率(lv)和(he)(he)質(zhi)量。我們所(suo)工(gong)作(zuo)在的(de)(de)(de)半導體行業中,除了(le)給市(shi)場提供更符合需求(qiu)的(de)(de)(de)處(chu)(chu)理(li)(li)器以外,我們還需要(yao)提供基于自(zi)己處(chu)(chu)理(li)(li)器的(de)(de)(de)軟硬(ying)件解(jie)決方(fang)案。操(cao)作(zuo)系統作(zuo)為應用(yong)的(de)(de)(de)基礎(chu)、基石(shi),顯得非常(chang)的(de)(de)(de)重要(yao)。本文只(zhi)是粗劣的(de)(de)(de)介紹和(he)(he)對比(bi)了(le)這些物聯網(wang)的(de)(de)(de)操(cao)作(zuo)系統,希望能對讀者有所(suo)幫助。

此(ci)文(wen)關鍵(jian)字(zi): 物聯網應用系統軟件開發