隨著物聯網設備的普及,物聯網操作系統也成了廣大開發者熱烈討論的話題之一,很多的組織和廠商都推出了在物聯網節點上的基礎軟件——物聯網操作系統,如服務器巨頭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設備框架接入阿里云,使用云服務器提供的相關物聯網設備服務。
AliOS Things軟件框架是基于APACHE2.0協議的開源軟件,項目地址為
https://github.com/alibaba/AliOS-Things
AliOS Things軟件架構可以從下到上分為四層,硬件和硬件抽象層、AOS操作系統層、應用框架層和應用層,下層組件為上層業務邏輯的實現提供支撐機制。
下圖是AliOS Things的整體框圖:
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對于安全的支持要有以下方面:
基于mbed tls提供TLS支持,用于建立服務器和IoT節點的安全可信通信連接。
提供軟件密碼學引擎
提供安全存儲的接口
提供基于ID2的預置可信根和相關認證機制
提供可信執行環境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不在列表中,請讓我們知道,我們有足夠的經驗和知識,可以幫助您進行平臺的移植和設備認證。
1.2018年第11期《單片機與嵌入式系統應用》電子刊新鮮出爐!
2.翻臉如翻書!聯電宣布暫停與晉華合作
3.對于邊緣計算,其實嵌入式系統一點兒都不陌生!
4.邊緣計算對嵌入式系統實現物聯網應用的影響,究竟有多大?
5.你的應用適合選擇哪個Linux版本?這里有答案。。。
免責聲明:本文系網絡轉載,版權歸原作者所有。如涉及作品版權問題,請與我們聯系,我們將根據您提供的版權證明材料確認版權并支付稿酬或者刪除內容。
-
mcu
+關注
關注
146文章
17317瀏覽量
352635 -
物聯網
+關注
關注
2913文章
44923瀏覽量
377004 -
操作系統
+關注
關注
37文章
6892瀏覽量
123742
原文標題:如何在MCU上應用AliOS Things?
文章出處:【微信號:mcuworld,微信公眾號:嵌入式資訊精選】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論