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