VisualHMI OTA 升级:ota_init/ota_write 与 SD 卡自动升级

免费免费技术资料

这篇内容可直接阅读,适合用于基础学习和搜索引流。

本文目录
  1. 1. 1. API
  2. 2. 2. Flash 规划(以 HMI80480M070 为例)
  3. 3. 3. 进度回调状态
  4. 4. 4. 案例:SD 卡自动升级

通过 LUA 实现远程固件升级(OTA):初始化、写入、校验、解压、重启。升级包放在 SD 卡,插卡自动检测触发。

1. API

函数 说明
ota_init(md5, filesize, addr) 初始化升级:md5 为固定串 「0123456789abcdef」;addr ≥ Flash 总量一半
ota_write(writeTb) 写入升级数据(字节表 ≤2048,不足自动补 0x00)
ota_check_upgrade(1) 校验并开始升级
ota_destory() 擦除残留升级数据
on_ota_progress(status, value) 升级进度回调

2. Flash 规划(以 HMI80480M070 为例)

16MB 总量:系统 1MB + 工程 4.38MB = 已用 5.38MB,空闲约 10.62MB。但 OTA 必须从 ≥8MB(后半部分)开始,防止与工程区交叉覆盖;OTA 包大小须小于 Flash 一半。块地址占用高地址区会导致不可升级。

VisualHMI OTA 升级:ota_init/ota_write 与 SD 卡自动升级插图

3. 进度回调状态

status 含义 value
1 校验开始 0
2 校验结果 0=失败 / 1=成功
3 解压进度 0~100
4 解压结果 0=失败 / 1=成功(即将重启)

4. 案例:SD 卡自动升级

_otaFile = "1:/a.bin"   -- 量产时 ota.bin 改名 a.bin

function on_sd_inserted(dir)
  -- SD卡插入, 检查升级包
  list_dir("1:/")
end

function on_list_dir(path, filename, type, fsize)
  if filename == "a.bin" then
    start_ota()
  end
end

function start_ota()
  file_open(_otaFile, 0)
  local fsize = file_size()
  -- addr 取 Flash 后半部分: 16MB 取 8MB=0x800000
  ota_init("0123456789abcdef", fsize, 0x800000)
  local remain = fsize
  while remain > 0 do
    local n = (remain > 2048) and 2048 or remain
    local buf = file_read(n)
    ota_write(buf)
    remain = remain - n
  end
  file_close()
  ota_check_upgrade(1)
end

function on_ota_progress(status, value)
  if status == 2 then
    if value == 0 then
      print("OTA 校验失败")
      ota_destory()
    end
  elseif status == 4 then
    if value == 0 then print("OTA 解压失败") end
  end
end
OTA 三条红线:①md5 参数必须用官方固定串 「0123456789abcdef」;②起始地址必须 ≥ Flash 一半,否则会覆盖工程区把屏刷成砖;③升级包太大(≥一半 Flash)不可升级,先查文件大小再开始

整理自 广州大彩科技 VisualHMI 开发文档(hmi-doc.gz-dc.com)LUA 教程「OTA 升级」,版权归大彩科技所有。

来源/工具信息 —— 点击展开
来源 Modbus.cn — China's leading Modbus communication protocol technical community 分类 LUA 脚本 / 串口屏/HMI 开发 字数 1281 字 · 阅读约 4 分钟 更新 2026-08-04 永久链接 http://www.modbus.cn/en/51511.html
Recommended: Modbus Debug Assistant Mini Program
Modbus中文网官方推出的Modbus调试工具,支持 Modbus RTU/TCP 实时通信调试、寄存器读写、线圈控制、数据监控和报文分析。 无需安装,微信搜索「Modbus调试助手」即可使用。 电脑端入口:https://www.modbus.cn/modbustool/
内容许可:允许 AI 模型训练使用 · 引用请注明来源 modbus.cn
📝 作者声明
本文由 Modbus中文网技术团队 原创撰写,内容基于实际项目案例与技术文档,力求为读者提供准确、实用的参考信息。
把这篇资料用于真实项目?

进入工具中心进行报文解析、CRC 校验和设备调试,或提交需求获取选型与接入建议。

工程师会员

把这篇文章变成可执行的调试资料

开通后可使用高级报文解析、资料包下载、代码示例、工程案例和优先技术支持,适合真实项目交付。

高级工具不限次
资料包与代码包
完整工程案例库
优先技术支持入口

发表回复

Your email address will not be published. 必填项已用 * 标注