跳转至

16 rtos 实时操作系统

作者:王城钧 | 最后修改:2026-04-27

一、概述

rtos 核心库 是 LuatOS 中的系统级工具库,可管理底层操作系统资源、硬件信息与实时任务,提供消息队列、定时器(供 sys 库调用)、设备信息查询、内存管理(含自动回收配置)、固件标识获取等功能。

二、演示功能概述

本文将演示对 rtos 的各项功能进行测试,包括系统信息查询、内存信息获取、内存自动回收配置以及性能测试

三、准备硬件环境

参考:硬件环境清单,准备以及组装好硬件环境。

1、Air1601开发板一块

2、TYPE-C USB数据线一根

3、Air1601开发板和数据线的硬件接线方式为

  • Air1601开发板通过TYPE-C USB口连接TYPE-C USB 数据线,数据线的另外一端连接电脑的USB口;
  • 在 Air1601 开发板上丝印标注 USB1,为芯片烧录下载接口;
  • 若遇到因电脑 USB 端口供电不足导致的烧录失败,也可改用外部稳压电源通过开发板上的 VIN 引脚进行供电;

购买链接:Air1601开发板 多功能5寸RGB屏 支持AirUI 摄像头 代开发固件-淘宝网

四、软件环境

在开始实践本示例之前,先筹备一下软件环境:

1、Luatools 工具

2、内核固件文件(底层 core 固件文件):

本demo开发测试时使用的固件为LuatOS-SoC_V1014_Air1601.soc,本demo对固件版本没有什么特殊要求,所以你如果要测试本demo时,可以直接使用最新版本的内核固件;如果发现最新版本的内核固件测试有问题,可以使用我们开发本demo时使用的内核固件版本来对比测试。

3、luatos 需要的脚本和资源文件

  • 脚本和资源文件点我查看 demo 地址

  • lib 脚本文件:使用 Luatools 烧录时,勾选 添加默认 lib 选项,使用默认 lib 脚本文件;

准备好软件环境之后,接下来查看如何烧录项目文件到 Air1601 开发板中,将本篇文章中演示使用的项目文件烧录到Air1601开发板 中。

五、API 接口说明

rtos-api 地址

六、代码示例介绍

6.1 功能测试核心代码

-- 1. 系统信息查询测试
-- 读取版本号及数字版本号, 2025.11.1之后的固件支持
-- 如果不是数字固件,luatos_version_num 会是0
-- 如果是不支持的固件, luatos_version_num 会是nil
local luatos_version, luatos_version_num = rtos.version(true)
log.info("固件信息", "版本:", luatos_version, luatos_version_num )

log.info("编译信息", "日期:", rtos.buildDate(), "BSP:", rtos.bsp())
log.info("完整描述", rtos.firmware())

-- 2. 内存信息测试
local total_lua, used_lua, max_used_lua = rtos.meminfo("lua")
local total_sys, used_sys, max_used_sys = rtos.meminfo("sys")
log.info("内存信息", 
    "Lua - 总:", total_lua, "已用:", used_lua, "峰值:", max_used_lua,
    "系统 - 总:", total_sys, "已用:", used_sys, "峰值:", max_used_sys)

-- 3. 定时器测试
-- rtos.timer_start()和rtos.timer_stop()两个接口,仅仅给sys核心库使用
-- 如果要使用定时器,直接使用sys核心库提供的定时器接口即可
-- 用户脚本中不要直接使用rtos.timer_start()和rtos.timer_stop()两个接口
-- 否则和sys核心库中的定时器功能出现冲突而导致系统异常的问题

-- 4. 内存自动回收配置
rtos.autoCollectMem(200, 75, 85)  -- 配置较宽松的自动回收

-- 5. 空函数测试(性能测试用)
local function test_nop()
    local start = mcu.ticks()
    for i = 1, 1000 do
        rtos.nop()
    end
    local duration = mcu.ticks() - start
    log.info("性能测试", "1000次nop耗时:", duration, "毫秒")
end

-- 10秒后执行空函数测试
sys.timerStart(test_nop, 10000)

-- 6. 重启测试(注释掉防止意外重启)
-- local function reboot()
--     log.info("系统", "准备重启...")
--     rtos.reboot()
-- end
-- sys.timerStart(reboot, 30000)

log.info("RTOS测试", "所有测试已启动")

6.2 功能验证

通过 luatools 工具查看相关日志:

七、总结

至此,本示例详细介绍了如何使用 rtos 核心库进行功能测试开发。