跳转至

模块信息(hmeta)

一、模块信息概述

模块信息是合宙每一个模块携带的信息,就像人的身份证一样,这些信息确定了模块的唯一性;

包含设备唯一 id,硬件型号,模组的硬件版本号,固件版本号等;

模块远程升级需要上传模块信息,解决和分析某些问题的时候可能也会需要确认模块信息.

二、演示功能概述

使用 Air780EP 核心板烧录底层固件(LuatOS-SoC_V2002_Air780EP)和 hmeta 例程脚本学习有关模块信息的 api 函数.

三、准备硬件环境

参考:硬件环境清单第二章节内容,准备以及组装好硬件环境。

四、软件环境

“凡事预则立,不预则废。”在详细阐述本功能示例之前,我们需先精心筹备好以下软件环境。

1. Luatools工具

2. 内核固件文件(底层core固件文件):LuatOS-SoC_V2002_Air780EP;参考项目使用的内核固件

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

脚本和资源文件点击此处查看与下载

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

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

五、API 说明

5.1 mcu.unique_id()

获取设备唯一 id.

参数

返回值

返回值类型
解释
string
设备唯一 id

例子

--注意,可能包含不可见字符,如需查看建议 toHex()后打印

sys.taskInit(function()
local unique_id = mcu.unique_id()
log.info("unique_id", unique_id:toHex())
-- 实例输出:unique_id   4A5139383707942E55FF    20
end)


5.2 mobile.imei(index)

获取设备 IMEI

参数

传入值类型
解释
int
编号,默认0. 在支持双卡的模块上才会出现0或1的情况

返回值

返回值类型
解释
string
设备 IMEI

例子

--4G 模组只支持双卡单待/单卡,只有一个 IMEI,可以通过 mobile.imei()直接获取
sys.taskInit(function()
-- 获取 IMEI
log.info("imei", mobile.imei())
-- 实例输出:imei 866374063853768
end)


5.3 hmeta.model()

获取硬件型号

参数

返回值

返回值类型
解释
string
若能识别到,返回硬件型号, 否则会是 nil

例子

sys.taskInit(function()
log.info("hmeta-model", hmeta.model())
-- 实例输出:hmeta-model Air780EP
end)


5.4 rtos.bsp()

获取硬件 bsp 型号

参数

返回值

返回值类型
解释
string
硬件 bsp 型号

例子

sys.taskInit(function()
log.info("rtos.bsp", rtos.bsp())
-- 实例输出:rtos-bsp    EC618
end)


5.5 hmeta.hwver()

获取模组的硬件版本号

参数

返回值

返回值类型
解释
string
若能识别到,返回模组的硬件版本号, 否则会是 nil

例子

sys.taskInit(function()
log.info("hmeta", hmeta.hwver and hmeta.hwver())
-- 实例输出:hmeta   A16
end)


5.6 rtos.version()

获取固件版本号

参数

返回值

返回值类型
解释
string
固件版本号

例子

sys.taskInit(function()
log.info("luatos_version ", rtos.version())
-- 实例输出:luatos_version  V1112
end)

六、功能验证

6.1 例程

参考一下例程部分代码,点此链接查看 hmeta 的 demo 例子

sys.taskInit(function()
    while hmeta do
        -- hmeta识别底层模组类型的
        -- 不同的模组可以使用相同的bsp,但根据封装的不同,根据内部数据仍可识别出具体模块
        log.info("hmeta", hmeta.model(), hmeta.hwver and hmeta.hwver())
        log.info("bsp",   rtos.bsp())

        local unique_id = mcu.unique_id()
        log.info("unique_id", unique_id:toHex())
    -- 实例输出:unique_id  3539333139071F1E4330    20

    log.info("luatos_version ", rtos.version())
    -- 实例输出:luatos_version  V1112
        sys.wait(3000)
    end
    log.info("这个bsp不支持hmeta库哦")
end)

6.2 对应 log

[2024-10-15 15:58:13.598][000000000.009] am_service_init 851:Air780EP_A17
[2024-10-15 15:58:13.600][000000000.028] Uart_BaseInitEx 1049:uart 0 rx cache 256 dma 256
[2024-10-15 15:58:13.603][000000000.268] self_info 122:model Air780EP_A17 imei 868327075469021
[2024-10-15 15:58:13.604][000000000.269] I/pm poweron: Power/Reset
[2024-10-15 15:58:13.605][000000000.269] I/main LuatOS@EC618 base 23.11 bsp V1112 32bit
[2024-10-15 15:58:13.605][000000000.270] I/main ROM Build: Sep  3 2024 15:55:27
[2024-10-15 15:58:13.606][000000000.277] D/main loadlibs luavm 262136 14360 14392
[2024-10-15 15:58:13.607][000000000.277] D/main loadlibs sys   277872 53984 81264
[2024-10-15 15:58:13.607][000000000.315] I/user.hmeta        Air780EP        A17
[2024-10-15 15:58:13.608][000000000.315] I/user.bsp        EC618
[2024-10-15 15:58:13.608][000000000.316] I/user.unique_id        3539333139071F1E4330        20
[2024-10-15 15:58:13.609][000000000.316] I/user.luatos_version         V1112
[2024-10-15 15:58:15.304][000000002.142] soc_cms_proc 1518:NAS Event 6 Reject 7 CellID 3c

七、总结

通过本章学习,你可以学习到模块唯一 ID,模块硬件型号,固件版本,硬件版本的获取方法.

八、常见问题

8.1 模块唯一 ID 文档

mobile.sn()获取 SN,出厂未必有写 SN; 一般用途的唯一 id, 可以用 mobile.imei()代替; 如需要真正的唯一 ID, 使用 mcu.unique_id()

8.2 通过 IMEI 查询模块生产记录

合宙云平台 (openluat.com)

给读者的话

本篇文章由公帅开发;

本篇文章描述的内容,如果有错误、细节缺失、细节不清晰或者其他任何问题,总之就是无法解决您遇到的问题;

请登录合宙技术交流论坛,点击文档找错赢奖金-Air780EP-LuatOS-软件指南-基础服务-模块信息(hmeta)

用截图标注+文字描述的方式跟帖回复,记录清楚您发现的问题;

我们会迅速核实并且修改文档;

同时也会为您累计找错积分,您还可能赢取月度找错奖金!