init: Air780EPM 官方 LuatOS 项目代码基线
- 来源: 合宙 LuatOS 官方仓库 air780epm 模块完整代码 - 路径: luatos/air780epm/module/Air780EPM/demo 含官方 demo(含 mqtt/mqtts/socket/uart 等) - 后续: 基于 demo 开发 UART<->MQTT 数据上报功能
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
--[[
|
||||
@module main
|
||||
@summary LuatOS用户应用脚本文件入口,总体调度应用逻辑
|
||||
@version 001.999.000
|
||||
@date 2025.12.2
|
||||
@author 王城钧
|
||||
@usage
|
||||
1. rtos_app:对rtos核心库的各项功能进行测试,包括系统信息查询、内存信息获取、内存自动回收配置以及性能测试
|
||||
]]
|
||||
|
||||
--[[
|
||||
必须定义PROJECT和VERSION变量,Luatools工具会用到这两个变量,远程升级功能也会用到这两个变量
|
||||
PROJECT:项目名,ascii string类型
|
||||
可以随便定义,只要不使用,就行
|
||||
VERSION:项目版本号,ascii string类型
|
||||
如果使用合宙iot.openluat.com进行远程升级,必须按照"XXX.YYY.ZZZ"三段格式定义:
|
||||
X、Y、Z各表示1位数字,三个X表示的数字可以相同,也可以不同,同理三个Y和三个Z表示的数字也是可以相同,可以不同
|
||||
因为历史原因,YYY这三位数字必须存在,但是没有任何用处,可以一直写为999
|
||||
如果不使用合宙iot.openluat.com进行远程升级,根据自己项目的需求,自定义格式即可
|
||||
]]
|
||||
PROJECT = "rtos_demo"
|
||||
VERSION = "001.999.000"
|
||||
|
||||
-- 在日志中打印项目名和项目版本号
|
||||
log.info("main", PROJECT, VERSION)
|
||||
|
||||
|
||||
|
||||
-- 如果内核固件支持errDump功能,此处进行配置,【强烈建议打开此处的注释】
|
||||
-- 因为此功能模块可以记录并且上传脚本在运行过程中出现的语法错误或者其他自定义的错误信息,可以初步分析一些设备运行异常的问题
|
||||
-- 以下代码是最基本的用法,更复杂的用法可以详细阅读API说明文档
|
||||
-- 启动errDump日志存储并且上传功能,600秒上传一次
|
||||
-- if errDump then
|
||||
-- errDump.config(true, 600)
|
||||
-- end
|
||||
|
||||
|
||||
-- 使用LuatOS开发的任何一个项目,都强烈建议使用远程升级FOTA功能
|
||||
-- 可以使用合宙的iot.openluat.com平台进行远程升级
|
||||
-- 也可以使用客户自己搭建的平台进行远程升级
|
||||
-- 远程升级的详细用法,可以参考fota的demo进行使用
|
||||
|
||||
|
||||
-- 启动一个循环定时器
|
||||
-- 每隔3秒钟打印一次总内存,实时的已使用内存,历史最高的已使用内存情况
|
||||
-- 方便分析内存使用是否有异常
|
||||
-- sys.timerLoopStart(function()
|
||||
-- log.info("mem.lua", rtos.meminfo())
|
||||
-- log.info("mem.sys", rtos.meminfo("sys"))
|
||||
-- end, 3000)
|
||||
|
||||
|
||||
--加载rtos时钟驱动模块
|
||||
require "rtos_app"
|
||||
|
||||
|
||||
-- 启动系统调度(必须放在最后)
|
||||
sys.run()
|
||||
@@ -0,0 +1,54 @@
|
||||
## 功能模块介绍
|
||||
|
||||
1、main.lua:主程序入口;
|
||||
|
||||
2、rtos_app:对rtos核心库的各项功能进行测试,包括系统信息查询、内存信息获取、内存自动回收配置以及性能测试;
|
||||
|
||||
## 演示功能概述
|
||||
|
||||
1、对rtos核心库的各项功能进行测试,包括系统信息查询、内存信息获取、内存自动回收配置以及性能测试
|
||||
|
||||
## 演示硬件环境
|
||||
|
||||
1、Air780EPM开发板一块;
|
||||
|
||||

|
||||
|
||||
2、TYPE-C USB数据线一根
|
||||
|
||||
* Air780EPM开发板通过 TYPE-C USB 口供电;(外部供电/USB供电 拨动开关 拨到 USB供电一端)
|
||||
* TYPE-C USB 数据线直接插到核心板的 TYPE-C USB 座子,另外一端连接电脑 USB 口;
|
||||
|
||||
## 演示软件环境
|
||||
|
||||
1、Luatools下载调试工具
|
||||
|
||||
2、[Air780EPM V2018版本]([固件和应用脚本Demo - luatos@air780epm - 合宙模组资料中心](https://docs.openluat.com/air780epm/luatos/firmware/))(理论上最新版本固件也可以,如果使用最新版本的固件不可以,可以烧录V2018-1固件对比验证)
|
||||
|
||||
## 演示核心步骤
|
||||
|
||||
1、搭建好硬件环境
|
||||
|
||||
2、Luatools烧录内核固件和demo脚本代码
|
||||
|
||||
3、烧录成功后,自动开机运行
|
||||
|
||||
4、可以看到代码运行结果如下:
|
||||
|
||||
日志中如果出现以下类似以下打印则说明rtos功能正常
|
||||
|
||||
```lua
|
||||
[2025-12-08 10:37:40.798][000000000.217] I/user.main rtos_demo 001.000.000
|
||||
[2025-12-08 10:37:40.802][000000000.224] I/user.固件信息 版本: V2018 1
|
||||
[2025-12-08 10:37:40.806][000000000.224] I/user.编译信息 日期: Nov 7 2025 BSP: Air780EPM
|
||||
[2025-12-08 10:37:40.808][000000000.225] I/user.完整描述 LuatOS-SoC_V2018_Air780EPM
|
||||
[2025-12-08 10:37:40.813][000000000.225] I/user.内存信息 Lua - 总: 1048568 已用: 35168 峰值: 35168 系统 - 总: 2375368 已用: 53796 峰值: 59060
|
||||
[2025-12-08 10:37:40.816][000000000.225] D/rtos mem collect param 100,80,90 -> 200,75,85
|
||||
[2025-12-08 10:37:40.821][000000000.226] I/user.RTOS测试 所有测试已启动
|
||||
[2025-12-08 10:37:42.437][000000002.322] D/mobile cid1, state0
|
||||
[2025-12-08 10:37:42.442][000000002.323] D/mobile bearer act 0, result 0
|
||||
[2025-12-08 10:37:42.449][000000002.324] D/mobile NETIF_LINK_ON -> IP_READY
|
||||
[2025-12-08 10:37:42.456][000000002.364] D/mobile TIME_SYNC 0
|
||||
[2025-12-08 10:37:50.317][000000010.242] I/user.性能测试 1000次nop耗时: 16 毫秒
|
||||
|
||||
```
|
||||
@@ -0,0 +1,60 @@
|
||||
--[[
|
||||
@module rtos_app
|
||||
@summary rtos应用模块
|
||||
@version 1.0
|
||||
@date 2025.12.2
|
||||
@author 王城钧
|
||||
@usage
|
||||
本文件为rtos应用模块,核心业务逻辑为:
|
||||
1、对rtos核心库的各项功能进行测试,包括系统信息查询、内存信息获取、内存自动回收配置以及性能测试
|
||||
|
||||
本文件没有对外接口,直接在其他功能模块中require "rtos_app"就可以加载运行;
|
||||
]]
|
||||
|
||||
-- 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测试", "所有测试已启动")
|
||||
Reference in New Issue
Block a user