LiteOS是華為於2015年5月面向IoT領域釋出的輕量級物聯網作業系統。LiteOS可以支援 ARM64、ARM Cortex-A、ARM Cortex-M0,Cortex-M3,Cortex-M4,Cortex-M7 等晶片架構,幾乎涵蓋了目前所有主流的嵌入式晶片架構。
LiteOS架構(圖片來自於https://gitee.com/LiteOS/LiteOS)
上圖是官網所給出的架構圖,主要包括如下幾個部分:元件、應用介面層、檔案系統、增加核心、基礎核心、硬體抽象層、CPU架構。在這裡不對LiteOS的核心、檔案系統方面做介紹,將把重點放在它的網路連線能力上面。在架構圖中,可以看到應用介面層包括應用相關協議棧,其中主要有LwM2M、CoAP、MQTT、DTLS、LwIP。
(1) LwM2M:輕量級物聯網裝置管理協議
LwM2M,即Lightweight M2M,輕量級M2M,是由開放移動聯盟(OMA)提出的一種輕量級的物聯網裝置管理協議,它為物聯網裝置的管理和應用建立了一套標準。關於L2M2M的更多詳細內容,可以參考https://omaspecworks.org/。
(2) CoAP:資源受限的Web傳輸協議
CoAP(Constrained Application Protocol),是針對資源受限的物聯網裝置所提出的Web傳輸協議。由於很多低成本物聯網終端的處理能力、儲存能力、傳輸能力都有限,在這一類裝置上使用HTTP協議不合適,所以提出了CoAP。關於CoAP的詳細內容,可以參考http://coap.technology/。
(3) MQTT:訊息佇列遙測傳輸協議
MQTT(Message Queuing Telemetry Transport),即訊息佇列遙測傳輸協議,是基於釋出/訂閱的訊息協議。與CoAP類似,也是為硬體能力受限的裝置所提出。關於MQTT的詳細內容,可以參考http://mqtt.p2hp.com/。
(4) DTLS: 資料報傳輸層安全協議
DTLS(Datagram Transport Layer Security),即資料報傳輸層安全協議。由於TLS不能用來保證UDP傳輸的資料安全,因此Datagram TLS在現有的TLS協議架構上擴充套件使之支援UDP。關於DTLS的詳細內容,可以參考https://datatracker.ietf.org/doc/html/rfc6347。
(5) LwIP: 輕量級IP協議
LwIP(Light Weight Internet Protoco1),即輕量級IP協議,是瑞士計算機科學院(Swedish Institute of Computer Science)Adam Dunkels等人開發的一套用於資源受限的嵌入式裝置的開源TCP/IP協議棧。關於LwIP的詳細內容,可以參考http://lwip.nongnu.org/。
除了應用層的協議棧,LiteOS的框架圖中並沒有看到關於底層連線相關的協議。那它又是透過什麼方式來實現底層連線和傳輸的呢?
主要是透過LiteOS的硬體抽象層來實現。LiteOS針對不同的目標開發版提供了不同的硬體抽象層,其中包括支援板載各種裝置的驅動。以STM32F7xx的HAL層程式碼為例,可以看到有如下的驅動支援,包括ADC、DAC、CAN bus、Ethernet、Flash、I2C、irDA、SPI、UART、USB等。詳細的驅動資訊可以參考如下連線:
https://gitee.com/LiteOS/LiteOS/tree/master/targets/bsp/drivers/STM32F7xx_HAL_Driver/Src
如果物聯網裝置是透過乙太網的方式接入網路,那透過乙太網->LwIP->DTLS->CoAP的鏈路可以完成。那如果物聯網裝置是透過其他無線的方式接入網路,比如,常用的Wifi、藍芽、Zigbee、NB-iot等無線協議接入,鏈路是怎麼樣的呢?
縱觀LiteOS所開源的框架圖和原始碼,並沒有看到無線協議相關的資訊。從實現的角度來講,比較可行的方式是透過掛載相關無線通訊模組,模組透過板載序列匯流排與主機板連線。