1. 程式人生 > >如何在MCU上應用AliOS Things?

如何在MCU上應用AliOS Things?

640?wx_fmt=jpeg

隨著物聯網裝置的普及,物聯網作業系統也成了廣大開發者熱烈討論的話題之一,很多的組織和廠商都推出了在物聯網節點上的基礎軟體——物聯網作業系統,如伺服器巨頭Alibaba推出的AliOS Things,Amazon公司的Amazon FreeRTOS,再如開源社群領袖Linux基金會推出的Zephyr,以及在國內知名度很高的RT-Thread等等。

這些物聯網作業系統各具優勢,小編參與過AliOS Things的開發,今天就講講AliOS Things的基本架構。


在恩智浦MCU上使用AliOS Things

討論AliOS Things之前,先來看看恩智浦在這上面做了哪些工作,有哪些產品可以支援這一物聯網作業系統。

恩智浦的工程師和廣大開發者,在AliOS Things上已經完成了大量的平臺移植工作。在AliOS Things的GITHUB上,已經有數十款MCU通過了AliOS Things的認證測試,並獲得了裝置認證。

下面是已經獲得認證的部分恩智浦MCU的列表:

MCU系列

產品型號 (RAM/Flash容量 KB)

LPC

LPC54102 (104 / 512)

LPC54101 (104 / 512 或 104 / 256)

LPC54113 (192 / 256 或 96 /128)

LPC54114 (192 / 256)

LPC54605 (136 /256 或 200 / 512)

LPC54606 (136 /256 或 200 / 512)

LPC54607 (136 /256 或 200 / 512)

LPC54616 (136 /256 或 200 / 512)

LPC54618 (200 / 512)

LPC54628 (200 / 512)

LPC54005 (360 / 無片上快閃記憶體)

LPC54016 (360 / 無片上快閃記憶體)

LPC54018 (360 / 無片上快閃記憶體)

Kinetis

MKL17Z32  (8 / 32)

MKL17Z64  (16 / 64)

MKL17Z128 (32 / 128)

MKL17Z256 (32 / 256)

MKL27Z32  (8 / 32)

MKL27Z64 (16 / 64)

MKL27Z128 (32 / 128)

MKL27Z256 (32 / 256)

MKL33Z128 (16 / 128)

MKL33Z256 (32 / 256)

MKL43Z128 (16 / 128)

MKL43Z256 (32 / 256)

i.MX RT

MIMXRT1052 (512 / 無片上快閃記憶體)

MIMXRT1051 (512 / 無片上快閃記憶體)

MIMXRT1021 (256 / 無片上快閃記憶體)

從這個表裡可以看出,很多恩智浦主流的MCU產品都已經支援了AliOS Things。另一個要點是,表中可以看到這些MCU的儲存容量跨度很大,最小隻有8KB RAM和32KB Flash,這說明AliOS Things可以適應非常廣泛的MCU配置,適應性很強。

下面就詳細看看AliOS Things的內部模組和功能配置。


AliOS Things是什麼?

AliOS Things是阿里巴巴推出的物聯網裝置端軟體框架,物聯網裝置可以通過AliOS Things裝置框架接入阿里雲,使用雲伺服器提供的相關物聯網裝置服務。

640?wx_fmt=png

AliOS Things軟體框架是基於APACHE2.0協議的開源軟體,專案地址為

https://github.com/alibaba/AliOS-Things

AliOS Things軟體架構可以從下到上分為四層,硬體和硬體抽象層、AOS作業系統層、應用框架層和應用層,下層元件為上層業務邏輯的實現提供支撐機制。

下圖是AliOS Things的整體框圖:

640?wx_fmt=png


1. 硬體和硬體抽象層

物聯網節點應用的多樣性,導致物聯網硬體的巨大差異。

物聯網節點裝置上的感測器、通訊模組、微控制器的核心架構,外設元件等都不相同,物聯網作業系統在不同硬體平臺的可移植性,是其成功與否的一大挑戰。

為了增加物聯網作業系統在不同硬體平臺的可移植性,AliOS Things對物聯網硬體提供了3組不同層級的硬體介面,包括微控制器核心架構模組(圖中的CPU模組),片上系統片上外設模組(圖中的HAL模組),和基於電路板的模組(圖中的BSP模組)。

在Github的專案中,CPU相關原始碼位於/AliOS-Things/platform/arch目錄,HAL相關原始碼位於/AliOS-Things/platform/mcu目錄,API定義檔案為/kernel/hal/include/hal/hal.h,BSP相關原始碼位於/AliOS-Things/board目錄。


2. AOS作業系統層

AOS作業系統層主要由核心元件(Kernel)、網路協議棧(Protocol Stack)和安全元件構成。

核心元件

Rhino是一個實時作業系統核心。和其他作業系統核心類似,Rhino提供了作業系統的基本功能,如多工管理、任務間通訊、記憶體管理等。核心也支援軟體定時器及功耗管理。如果讀者希望對Rhino核心有更多的瞭解,可以參考AliOS Things百科

https://github.com/alibaba/AliOS-Things/wiki/AliOS-Things-FreeRTOS-Porting-Guide.zh,文章介紹了更多關於Rhino核心的移植、效能、程式碼尺寸等資訊。

VFS是一個虛擬檔案系統,提供了裝置檔案介面。類似於Linux系統,除了儲存在儲存器上的檔案外,硬體裝置(如感測器、麥克風等)也可以通過VFS裝置介面訪問。

YLoop是一個用於程序間通訊的非同步事件框架,提供了在任務中接收/處理/釋出系統訊息、定時器訊息、使用者訊息、IO訊息(感測器、WiFi)的機制。Yloop機制廣泛的用於AliOS Things的裝置框架層和應用程式中。

Key-Value Pair(KV)鍵值對,提供了鍵值對在Flash或EEPROM上的增加、刪除、修改、查詢等介面。上層業務可以通過鍵值對介面,完成對硬體裝置資料(Sensor校準引數)或使用者資料(WiFi SSID)的管理。

除此以外,核心元件還提供了POSIX相容介面和低功耗的支援。

核心元件的相關原始碼位於/AliOS-Things/kernel目錄。

網路協議棧(Protocol Stack)

AliOS Things網路協議棧包括IP和非IP裝置的網路協議。對於IP網路,協議棧既提供基於LWIP的支援,也提供了MCU + Wi-Fi模組或Wi-Fi片上系統的支援。對於非IP網路,協議棧包括藍芽、LoRa WAN、zigbee等。

在物聯網節點中使用的Wi-Fi模組並非統一規格。在匯流排連線方式上,Wi-Fi模組的介面可能支援UART/SPI/SDIO的一種或幾種;在訪問方式上,有的Wi-Fi模組使用基於AT命令的控制方式,有的Wi-Fi模組使用裸Socket形式的API。

套接字適配層SAL(Socket Adapter Layer)旨在抽象Wi-Fi模組的差別,以提供應用層網路服務或者網路應用程式的可移植性,向上層提供BSD Socket介面。

對於裝置組網,AliOS Things網路協議棧還提供基於不同平臺的uMesh庫。

網路協議棧相關原始碼在/AliOS-Things/network目錄。

安全元件

AliOS Things對於安全的支援要有以下方面:

  1. 基於mbed tls提供TLS支援,用於建立伺服器和IoT節點的安全可信通訊連線。

  2. 提供軟體密碼學引擎

  3. 提供安全儲存的介面

  4. 提供基於ID2的預置可信根和相關認證機制

  5. 提供可信執行環境TEE的例子

安全相關原始碼位於/AliOS-Things/security目錄。


3. 應用框架(中介軟體)

應用框架包括韌體升級框架、感測器採集框架、物聯網通訊協議、語音服務、Java Script直譯器和工具。

Linkkit中介軟體支援各種適用於物聯網的應用層協議,包括MQTT、CoAP、ALink、HTTP、HTTP2等。

uData提供了感測器採集框架,在uData框架中,感測器資料表示成為感測器型別,感測器資料和時間戳的例項。

Tiny Engine是一個Java Script指令碼直譯器,為實現最終應用的跨硬體平臺的執行能力。

韌體升級FOTA,基於網路的韌體升級在物聯網終端節點非常普及。物聯網裝置韌體存放在AliCloud中,AliCloud管理入網裝置和對應的韌體版本。在物聯網裝置和AliCloud建立可信安全連線後,物聯網裝置通過MQTT升級主題訂閱,或者Alink相關協議實現待升級韌體的下載。在物聯網應用中,由於網路的不穩定,實現韌體升級通常需要實現“雙備份”升級方式,物聯網裝置的Flash一般會劃分有獨立的儲存升級檔案的區域,這也要求物聯網節點裝置比傳統裝置需要更多的儲存空間。

此外,AliOS Things還提供了語音雲服務介面LinkVoice,物聯網終端節點可以上傳語音資料,使用阿里雲的諸如語音識別等的雲服務。

AliOSThings應用框架及中介軟體相關原始碼位於/AliOS-Things/middleware目錄。


4. 應用例項

AliOS Things提供了各種應用例項,指導開發者如何使用AliOS Things提供的各種機制,以完成物聯網裝置和AliCloud之間的互聯通訊。

通過BUILD系統和交叉編譯工具鏈,這些應用可以在支援AliOS Things的硬體平臺上執行。

AliOS Things應用例項的原始碼位於/AliOS-Things/app目錄。

結束語

恩智浦長期致力於物聯網,以及在AliOS Things平臺下的開發和移植工作。如果您心意的MCU不在列表中,請讓我們知道,我們有足夠的經驗和知識,可以幫助您進行平臺的移植和裝置認證。

640?

1.2018年第11期《微控制器與嵌入式系統應用》電子刊新鮮出爐!

2.翻臉如翻書!聯電宣佈暫停與晉華合作

3.對於邊緣計算,其實嵌入式系統一點兒都不陌生!

4.邊緣計算對嵌入式系統實現物聯網應用的影響,究竟有多大?

5.你的應用適合選擇哪個Linux版本?這裡有答案。。。

6.在北京當 Python 程式設計師,能買起房嗎?

640?wx_fmt=gif

免責宣告:本文系網路轉載,版權歸原作者所有。如涉及作品版權問題,請與我們聯絡,我們將根據您提供的版權證明材料確認版權並支付稿酬或者刪除內容。