一,該功能實現的系統架構
從上至下,最上層為系統級應用層,在雲服務平台上實現,比如 智慧家居、智慧交通、車聯網等等。一般通過PC、手機、端設備與用戶進行交互,實現配置、監控、管理等功能。
雲平台現在有阿里雲、騰訊雲、華為雲、亞馬遜雲等。
端設備通過 無線4G/5G/LoRa/NB-IOT/eLTE-IOT及有線的方式家庭網關企業網關與雲平台連接。
端設備通過固定的協議,LWM2M、CoAP、MQTT(基於TCP,UDP的協議)與雲平台通信,端設備一般用於采集目標數據,或者執行目標操作。一般有完整的軟件機構層次,統一的應用層協議,方便與各大平台連接。
下圖為基於liteos的端設備架構
最上層為系統應用組件,例如GUI框架,傳感器框架,OTA差分升級。
應用層接口支持CMSIS,POSIX,通行協議棧(LwM2M,CoAP,MQTT)。
文件系統支持vfs,littlefs,spiffs。
內核增強主要包括C++支持,低功耗,調測。
基礎內核實現系統基本功能,IPC通信,軟件定時器,內存任務管理,異常管理,中斷管理。
硬件抽象層
硬件內核支持 ARM-M,ARM-A,ARM-64,RISC-V。
二、LiteOS 使用介紹
支持LINUX下以及WINDOWS下的編譯,配置項目工程使用了make menuconfig工具。
liteos啟動流程圖
內存管理支持兩種方式,靜態內存和動態內存的方式,支持內存的初始化,分配及釋放。
軟件定時器是基於系統Tick時鍾中斷且由軟件來模擬的定時器。LiteOS支持創建、啟動,停止,刪除,獲取TICK,配置等對軟件定時器的操作。
Liteos支持對中斷函數的創建、配置、刪除。支持中斷共享,中斷嵌套,支持獨立中斷棧,支持中斷優先級配置等。
Liteos支持異常接管,屬於一種調測手段。
Liteos支持多任務,搶占式調度,時間片輪詢。支持配置任務優先級設置。
任務狀態示意圖
為了配合任務機制的運行,Liteos還支持隊列,信號量,互斥鎖,自旋鎖。
隊列用於任務間數據交互的支持。
信號量用於任務事件發生在任務之間同步使用。
自旋鎖、互斥鎖通常用於對共用內存數據的保護。
詳細Liteos的使用間接請參考華為Liteos開發文檔。
liteos 應用入口在targets\…\Src\main.c的main函數中,在任務調度函數(LOS_Start)運行前,初始化應用任務(create_work_tasks)即可。
單次與循環任務寫法
initParam.pfnTaskEntry = (TSK_ENTRY_FUNC)TestTask1;ret = LOS_TaskCreate(&g_taskLoId, &initParam); //在main函數中創建任務
UIN32 testTask1(VOID)
{
UCHAR i = 5;
Single Task(); //此處任務運行一次
while(1)
{
Cyclic Tasks(); //此處任務無限次數運行
}
while(i –)
{
Multiple Tasks(); //此處任務運行 i次
}
}
中斷寫法
ret = LOS_HwiCreate(_VECTOR,0,0(VOID(*)(uintptr_t)) osInterruptHandler,0);
STATIC VOID osInterruptHandler(VOID);
{
//中斷服務處理函數
}