||
實時系統的開發挑戰在于平衡響應時間與系統開銷。LuatOS核心庫通過時間片輪轉與優先級混合調度策略,既保證了高實時性任務的即時執行,又為低優先級任務提供了公平調度機會。其事件驅動架構還支持異步處理,降低了系統阻塞風險。
在LuatOS開發中,用于實時操作系統(RTOS)相關功能的核心庫——提供了定時器管理、系統控制、內存監控、路徑配置等底層操作接口,為物聯網設備提供可靠的實時系統基礎支撐。
本文以Air780EPM模組為例,分享RTOS底層操作庫相關內容。
最新資料詳見:https://docs.openluat.com/air780epm/luatos/api/core/rtos
- RTOS底層操作庫API函數 -
1. 系統管理
1)重啟設備:rtos.reboot()
參數:無;
返回值:無。
示例:
2)獲取固件版本號:rtos.version()
參數:無;
返回值:字符串(如 "V0001")。
示例:
3)獲取固件編譯日期:rtos.buildDate()
參數:無;
返回值:字符串(如 "2025-05-06")。
示例:
4)獲取硬件BSP型號:rtos.bsp()
參數:無;
返回值:字符串(如 "Air780EPM")。
示例:
5)返回底層描述信息:rtos.firmware()
參數:無;
返回值:字符串。
示例:
2. 內存管理
1)獲取內存使用信息:rtos.meminfo(type)
參數:
type:內存類型("sys" 系統內存、"lua" Lua 虛擬機內存、"psram" PSRAM 內存)。默認為 "lua"。
返回值:
總內存大。ㄗ止潱;
已使用內存(字節);
歷史最高使用內存(字節)。
示例:
2)配置內存自動收集策略(補充Lua自動垃圾回收機制):
rtos.autoCollectMem(period,warning_level, force_level)
參數:
period:自動收集周期(毫秒),等同于receive調用次數,0~60000。如果是0,則關閉自動收集功能,默認是100;
warning_level:內存使用警戒水位線(百分比),是總luavm內存量的百分比,50~95,內存達到(>=)警戒線時才會開始判斷是否要收集。默認是80;
force_level:內存使用強制收集水位線(百分比),是總luavm 內存量的百分比,50~95,內存達到(>=)強制收集線時會強制收集。默認是90,必須比警戒水位線warning_level大。
注意:內存自動收集配置,是lua本身收集機制的一種補充,不是必要的,而且只在luavm空閑時觸發。
示例:
3. 路徑配置
1)設置自定義Lua腳本搜索路徑rtos.setPaths(pathA, pathB, pathC, pathD)
參數:
pathA~pathD:路徑模板字符串(支持%s占位符)。
返回值:無。
注意:每個路徑長度不超過23字節。
示例:
4. 其他底層交互
1)接收并處理底層消息隊列:rtos.receive(timeout)
參數:
timeout:超時時間,-1表示無限等待。
返回值:
消息ID(若為定時器消息則包含附加信息)。
注意:返回值格式由底層決定,Lua層不保證兼容性。
示例:
2)空操作函數:rtos.nop()
無參數、無返回值、無邏輯;
用途:性能測試或調試時使用。
示例:
今天的內容就分享到這里了~