AIOT OS設計思考

一個好的AIOT 操作系統設計一定是符合使用場景的設計,比如說使用場景,硬件場景等。那麼其實就比較難去判別,我這邊只是提出一些觀點,供大家參考。可能是其中的一個模塊,或是多個模塊一起組合,才能合力形成一個系統。

本文中以FreeRTOS爲基礎作爲擴展。

1 完善的log系統

一個軟件系統,不管是應用軟件,或是操作系統,必須具備完善的log系統。完善的log系統對應應用開發,調試及產品運營具有重要意義。

1.1 log系統基本要求:

1)可分模塊輸出log;

2)可配置的log輸出等級,通常的等級定義爲:debug,info,warning,error,critical

3)支持多進程log輸出

4)可定義的log格式化輸出

5)可定製的log size rotation或是time rotation

1.2 log系統中級要求:

1)異常log過濾

2)基於log信息可以定位到問題,或是能夠追蹤到現場

3)系統調試過程中的綜合log輸出,包括但不限於cpu使用率,溫度,內存使用率,內存帶寬佔用等。

1.3 log系統高級要求:

1)有匹配的雲端後臺

2)匹配的分析工具

3)上報雲端後臺的策略

4)error及Critical log時候的通知及響應策略

2 完善的系統調試工具

1)如cpu使用率,內存使用率,process運行情況,帶寬佔用情況等。

2)系統內模塊調試工具,類似Android的procrank,dumpsys之類

3)內存泄露分析方法

4)可能的cli命令工具

5)系統信息獲取,包括但不限制於:MAC地址,設備唯一標識,IP地址,BLE MAC地址等。

3 可配置的模塊

因AIOT面對的需求千差萬別,採用的硬件系統也有很大的差異,所以對應模塊的需求也有很大的不同。FreeRTOS應該說是最簡潔的一個系統,只是提供了task調度,定時器,內存管理(可配置)等有限的功能,使其很快得到了很大的推廣。

在AIOT中常見的模塊有:

1)IIC讀寫模塊

2)SPI讀寫模塊

4 較爲豐富的網絡協議支持

4.1 抽象的網絡接口層,比如ble,NB,ZigBee,WIFI,Ethnet‘

4.2 通用的物聯網協議支持:

4.2.1 面向TCP協議的MQTT(WIFI,Ethenet)

MQTT(Message Queuing Telemetry Transport)是一個客戶端服務端架構的發佈/訂閱模式的消息傳輸協議。它的設計思想是輕巧、開放、簡單、規範,易於實現。這些特點使得它對很多場景來說都是很好的選擇,特別是對於受限的環境如機器與機器的通信(M2M)以及物聯網環境(IoT)。

客戶端

1.發佈應用消息給其它相關的客戶端。

2.訂閱以請求接受相關的應用消息

3.取消訂閱以移除接受應用消息的請求。

4.從服務端斷開連接。

服務端

1.接受來自客戶端的網絡連接

2.接受客戶端發佈的應用消息

3.處理客戶端的訂閱和取消訂閱請求。

4.轉發應用消息給符合條件的客戶端訂閱。

MQTT vs HTTPS:

吞吐量:93倍

發送數據電量消耗: 1/11

接收數據電量消耗:1/170

連接保持電量消耗:1/2

網絡開銷:1/8

支持的平臺:

---百度IoT hub套件:https://blog.csdn.net/putiancaijunyu/article/details/78906492

---阿里雲物聯網套件:https://blog.csdn.net/putiancaijunyu/article/details/78920810

4.2.2 面向UDP協議的COAP(底層通信協議NB)

4.2.2 面向TCP協議的HTTP/HTTPS(WIFI,Ethenet)

---百度IoT hub套件:https://blog.csdn.net/putiancaijunyu/article/details/78906492

---阿里雲物聯網套件:https://blog.csdn.net/putiancaijunyu/article/details/78920810

5 可裁剪的AI框架支持

1)Arm NN,是基於CMSIS的。

http://arm-software.github.io/CMSIS_5/NN/html/index.html

2)NCNN,騰訊推出的基於cpu優化的深度學習神經網絡框架(linux,Android)

3)數據收集功能

比如,我們之前做的智能手環,特別開發一個功能用於收集運動過程中的傳感器數據(存儲空間有限,採用BLE實時傳輸,Android app接收並存儲到手機上)

6 升級模式支持

必須考慮後面的系統升級及迭代。可以參考Android的recovery模式。

7 產線模式支持

必要的產線模式支持。

需要明確產線上的職責,就是測試硬件,因此怎麼設計一套軟件系統來測試硬件是非常重要的事情。一般整個產線軟件的開發同產品的開發是同時進行的。

產線模式需要關注如下幾點:

1)結合產線工位的安排,排序測試項目

2)儘量降低產線的時間,提高生產效率,降低成本;

3)高低溫壓力測試(全負荷運行即設計軟件使CPU使用率100%,關閉watchdog等)

4)

8 完善的文檔支持

1)系統移植文檔;

2)硬件依賴文檔;

3)系統api使用文檔;

4)系統工具使用文檔;

5)系統定位及目標用戶說明;

9 異常處理

1)watchdog機制(軟件watchdog和硬件watchdog)

2)內存回收機制

3)故障預測,升級應對及告警等

4)系統狀態上報

10 認證和安全機制

1)芯片基本的安全;

2)數據加密安全;

3)設備級別的認證。

4)SSL傳輸安全

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章