|
|
@@ -0,0 +1,375 @@
|
|
|
+## 功能模块介绍
|
|
|
+
|
|
|
+1、main.lua:主程序入口;
|
|
|
+
|
|
|
+2、fota_file.lua:介绍了使用文件系统进行FOTA升级功能的实现模块,包括完整的升级流程;
|
|
|
+
|
|
|
+3、fota_uart.lua:介绍了使用串口分段进行FOTA升级功能的实现模块,包括完整的升级流程;
|
|
|
+
|
|
|
+4、main.py:Python脚本工具,用于通过串口分段发送升级包,演示分段升级的流程;
|
|
|
+
|
|
|
+5、fota_uart.bin:演示串口分段升级的升级包文件,升级内容仅升级版本号以及添加几行打印;
|
|
|
+
|
|
|
+## 演示功能概述
|
|
|
+
|
|
|
+FOTA是固件远程升级的简称,用于设备固件的远程更新和维护;
|
|
|
+
|
|
|
+本demo演示的核心功能为:
|
|
|
+
|
|
|
+Air780EPM模块的两种FOTA升级方式:文件系统直接升级和串口分段升级;
|
|
|
+
|
|
|
+分两种不同的应用场景来演示固件升级的实现方法:
|
|
|
+
|
|
|
+1、文件系统直接升级:通过模组文件系统中的文件直接升级,代码演示通过luatools的烧录文件系统功能将升级包文件直接烧录到文件系统然后升级;
|
|
|
+
|
|
|
+2、分段升级:通过串口将升级包文件分多个片段发送,每个片段接收并写入,代码演示使用usb虚拟串口分段写入升级包升级;
|
|
|
+
|
|
|
+适用场景:
|
|
|
+
|
|
|
+ 非标准数据传输 -> 串口、TCP、MQTT等自定义通道升级
|
|
|
+
|
|
|
+ 流程精细控制 -> 需要自定义升级前后处理逻辑
|
|
|
+
|
|
|
+## 演示硬件环境
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+1、Air780EPM V1.3版本开发板一块
|
|
|
+
|
|
|
+2、TYPE-C USB数据线一根 + USB转串口数据线一根,Air780EPM V1.3版本开发板和数据线的硬件接线方式为:
|
|
|
+
|
|
|
+- Air780EPM V1.3版本开发板通过TYPE-C USB口供电;(外部供电/USB供电 拨动开关 拨到 USB供电一端)
|
|
|
+
|
|
|
+- TYPE-C USB数据线直接插到核心板的TYPE-C USB座子,另外一端连接电脑USB口;
|
|
|
+
|
|
|
+## 演示软件环境
|
|
|
+
|
|
|
+1、Luatools下载调试工具
|
|
|
+
|
|
|
+2、[Air780EPM V2016版本固件)](https://docs.openluat.com/air780epm/luatos/firmware/version/)
|
|
|
+
|
|
|
+3、Python 3 环境(用于运行main.py发送升级包)
|
|
|
+
|
|
|
+## 演示操作步骤
|
|
|
+
|
|
|
+### 方式1:文件系统直接升级
|
|
|
+
|
|
|
+1、搭建好演示硬件环境
|
|
|
+
|
|
|
+2、修改demo脚本代码,取消`main.lua`中`require("fota_file")`的注释,注释掉`require("fota_uart")`
|
|
|
+
|
|
|
+3、使用Luatools制作升级包,先把新旧版本分别生成量产文件,然后再制作升级包,工具上栏 luatOS->固件工具->差分包/整包升级包制作,将制作好的升级包放到luatools工具上面的烧录文件系统功能。
|
|
|
+
|
|
|
+4、Luatools烧录内核固件和修改前的demo脚本代码,以及升级包文件。烧录成功后,自动开机运行。
|
|
|
+
|
|
|
+5、可以看到如下日志:
|
|
|
+日志分析如下:
|
|
|
+
|
|
|
+1. 开始升级,读取文件系统目录下的升级包文件/update.bin
|
|
|
+
|
|
|
+2. FOTA初始化 → 底层就绪 → 文件写入 → MD5校验通过
|
|
|
+
|
|
|
+3. 升级完成,版本验证成功
|
|
|
+
|
|
|
+4. 设备自动重启
|
|
|
+
|
|
|
+5. 新版本 1.0.1 正常运行,新增日志确认升级成功
|
|
|
+
|
|
|
+结果:文件系统FOTA升级完全成功,版本从1.0.0升级到1.0.1
|
|
|
+
|
|
|
+```lua
|
|
|
+[2025-10-24 17:56:47.892][000000005.840] D/mobile bearer act 0, result 0
|
|
|
+[2025-10-24 17:56:47.902][000000005.841] D/mobile NETIF_LINK_ON -> IP_READY
|
|
|
+[2025-10-24 17:56:47.911][000000005.890] D/mobile TIME_SYNC 0
|
|
|
+[2025-10-24 17:56:48.203][000000006.204] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 17:56:49.208][000000007.204] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 17:56:50.205][000000008.204] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 17:56:51.205][000000009.205] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 17:56:52.199][000000010.205] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 17:56:52.207][000000010.210] I/user.FOTA_FILE === 开始文件系统升级 ===
|
|
|
+[2025-10-24 17:56:52.217][000000010.210] I/user.FOTA_FILE 初始化FOTA...
|
|
|
+[2025-10-24 17:56:52.224][000000010.226] I/user.FOTA_FILE 等待底层准备...
|
|
|
+[2025-10-24 17:56:52.234][000000010.226] I/user.FOTA_FILE 底层准备就绪
|
|
|
+[2025-10-24 17:56:52.242][000000010.227] I/user.FOTA_FILE 开始读取升级文件: /update.bin
|
|
|
+[2025-10-24 17:56:52.251][000000010.230] I/fota write common data
|
|
|
+[2025-10-24 17:56:52.309][000000010.311] I/fota common data done, now checking 0
|
|
|
+[2025-10-24 17:56:52.317][000000010.312] I/fota common data md5 ok
|
|
|
+[2025-10-24 17:56:52.325][000000010.312] I/fota only common data
|
|
|
+[2025-10-24 17:56:52.358][000000010.362] I/fota fota type 0 ok!, wait reboot
|
|
|
+[2025-10-24 17:56:52.370][000000010.362] I/user.FOTA_FILE 升级文件写入flash中的fota分区结果 true true 0
|
|
|
+[2025-10-24 17:56:52.380][000000010.363] I/user.FOTA_FILE 结束写入fota分区...
|
|
|
+[2025-10-24 17:56:52.389][000000010.363] I/user.FOTA_FILE 写入fota分区状态 结果: true 完成: true
|
|
|
+[2025-10-24 17:56:52.402][000000010.363] I/user.FOTA_FILE 升级成功,准备重启设备
|
|
|
+[2025-10-24 17:56:53.199][000000011.205] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 17:56:54.197][000000012.205] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 17:56:55.575][000000000.000] main_entry 708:SDK base line V017_pb18.002
|
|
|
+[2025-10-24 17:56:55.589][000000000.008] am_service_init 1154:Air780EPM_A11
|
|
|
+[2025-10-24 17:56:55.604][000000000.008] am_get_chip_type 635:6bef6,19,24,c7,0,EC718
|
|
|
+[2025-10-24 17:56:55.618][000000000.049] bsp_user_init_io 312:io volt 3.3v 21
|
|
|
+[2025-10-24 17:56:55.630][000000000.050] BSP_CustomInit 558:hardfault mode init 4
|
|
|
+[2025-10-24 17:56:55.643][000000000.050] Uart_ChangeBR 1338:uart0, 6000000 6028985 26000000 69
|
|
|
+[2025-10-24 17:56:55.654][000000000.072] I/pm poweron: Power/Reset
|
|
|
+[2025-10-24 17:56:55.668][000000000.181] self_info 127:model Air780EPM_A11 imei 862419074066563
|
|
|
+[2025-10-24 17:56:55.682][000000000.181] self_info 129:firmware[1] BASIC
|
|
|
+[2025-10-24 17:56:55.692][000000000.181] self_info 131:zone(kbytes) fs 168 script 256
|
|
|
+[2025-10-24 17:56:55.704][000000000.181] I/main LuatOS@Air780EPM base 25.03 bsp V2016 32bit
|
|
|
+[2025-10-24 17:56:55.720][000000000.181] I/main ROM Build: Oct 9 2025 21:32:15
|
|
|
+[2025-10-24 17:56:55.734][000000000.183] W/pins /luadb/pins_AIR780EPM.json not exist!!
|
|
|
+[2025-10-24 17:56:55.749][000000000.186] D/main loadlibs luavm 1048568 14888 14888
|
|
|
+[2025-10-24 17:56:55.762][000000000.186] D/main loadlibs sys 2375432 53100 58844
|
|
|
+[2025-10-24 17:56:55.772][000000000.186] D/main loadlibs psram 2375432 53184 58844
|
|
|
+[2025-10-24 17:56:56.105][000000001.206] I/user.fota version 1.0.1
|
|
|
+[2025-10-24 17:56:56.118][000000001.206] I/user.fota123456789
|
|
|
+[2025-10-24 17:56:57.105][000000002.206] I/user.fota version 1.0.1
|
|
|
+[2025-10-24 17:56:57.111][000000002.207] I/user.fota123456789
|
|
|
+[2025-10-24 17:56:58.108][000000003.207] I/user.fota version 1.0.1
|
|
|
+[2025-10-24 17:56:58.116][000000003.208] I/user.fota123456789
|
|
|
+```
|
|
|
+
|
|
|
+### 方式2:串口分段升级
|
|
|
+
|
|
|
+1、搭建好演示硬件环境
|
|
|
+
|
|
|
+2、修改demo脚本代码,确保`main.lua`中已注释`require("fota_file")`,取消`require("fota_uart")`的注释
|
|
|
+
|
|
|
+3、使用Luatools制作升级包,先把新旧版本分别生成量产文件,然后再制作升级包,工具上栏 luatOS->固件工具->差分包/整包升级包制作,将制作好的升级包放在main.py同级目录下
|
|
|
+
|
|
|
+4、Luatools烧录内核固件和修改前的demo脚本代码,烧录成功后,自动开机运行。
|
|
|
+
|
|
|
+5、确认设备连接到电脑的串口(虚拟USB串口)
|
|
|
+
|
|
|
+6、按一下核心板上的Powerkey键,然后运行Python脚本发送升级包:
|
|
|
+
|
|
|
+```lua
|
|
|
+ python main.py
|
|
|
+```
|
|
|
+
|
|
|
+7、脚本会自动寻找设备虚拟串口,发送升级命令并传输`fota_uart.bin`文件
|
|
|
+
|
|
|
+8、设备接收并验证升级包,升级成功后会自动重启
|
|
|
+
|
|
|
+9、可以看到如下日志:
|
|
|
+
|
|
|
+串口分段升级日志解读:
|
|
|
+
|
|
|
+1. USB虚拟串口连接,收到#FOTA起始指令
|
|
|
+
|
|
|
+2. 开始分段接收升级包,每次256字节,累计5751字节
|
|
|
+
|
|
|
+3. 所有数据包写入成功,MD5校验通过
|
|
|
+
|
|
|
+4. 升级完成,重启
|
|
|
+
|
|
|
+5. 重启后新版本1.0.2运行,新增日志确认升级成功
|
|
|
+
|
|
|
+结果:串口FOTA升级完全成功,版本从1.0.0升级到1.0.2。
|
|
|
+```lua
|
|
|
+[2025-10-24 19:04:42.229][000000130.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:04:43.235][000000131.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:04:44.239][000000132.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:04:44.896][000000132.888] luat_usb_recv_cb 447:usb serial connected
|
|
|
+[2025-10-24 19:04:44.909][000000132.889] I/user.uart 收到数据 6 累计 6
|
|
|
+[2025-10-24 19:04:44.921][000000132.891] I/user.fota 检测到fota起始标记,进入FOTA状态 #FOTA
|
|
|
+
|
|
|
+[2025-10-24 19:04:45.238][000000133.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:04:45.916][000000133.894] I/user.uart 收到数据 256 累计 262
|
|
|
+[2025-10-24 19:04:45.931][000000133.895] I/user.准备写入fota包 256 累计写入 256
|
|
|
+[2025-10-24 19:04:45.939][000000133.896] I/fota write common data
|
|
|
+[2025-10-24 19:04:45.957][000000133.896] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:04:45.968][000000133.896] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:04:46.227][000000134.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:04:46.929][000000134.906] I/user.uart 收到数据 256 累计 518
|
|
|
+[2025-10-24 19:04:46.942][000000134.907] I/user.准备写入fota包 256 累计写入 512
|
|
|
+[2025-10-24 19:04:46.953][000000134.908] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:04:46.964][000000134.908] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:04:47.227][000000135.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:04:47.940][000000135.917] I/user.uart 收到数据 256 累计 774
|
|
|
+[2025-10-24 19:04:47.950][000000135.918] I/user.准备写入fota包 256 累计写入 768
|
|
|
+[2025-10-24 19:04:47.963][000000135.919] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:04:47.971][000000135.919] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:04:48.238][000000136.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:04:48.956][000000136.933] I/user.uart 收到数据 256 累计 1030
|
|
|
+[2025-10-24 19:04:48.965][000000136.933] I/user.准备写入fota包 256 累计写入 1024
|
|
|
+[2025-10-24 19:04:48.976][000000136.934] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:04:48.986][000000136.934] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:04:49.237][000000137.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:04:49.968][000000137.945] I/user.uart 收到数据 256 累计 1286
|
|
|
+[2025-10-24 19:04:49.977][000000137.946] I/user.准备写入fota包 256 累计写入 1280
|
|
|
+[2025-10-24 19:04:49.987][000000137.946] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:04:49.995][000000137.947] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:04:50.231][000000138.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:04:50.981][000000138.957] I/user.uart 收到数据 256 累计 1542
|
|
|
+[2025-10-24 19:04:50.990][000000138.958] I/user.准备写入fota包 256 累计写入 1536
|
|
|
+[2025-10-24 19:04:51.008][000000138.958] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:04:51.016][000000138.959] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:04:51.229][000000139.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:04:51.992][000000139.969] I/user.uart 收到数据 256 累计 1798
|
|
|
+[2025-10-24 19:04:52.002][000000139.970] I/user.准备写入fota包 256 累计写入 1792
|
|
|
+[2025-10-24 19:04:52.013][000000139.970] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:04:52.020][000000139.971] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:04:52.228][000000140.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:04:53.007][000000140.984] I/user.uart 收到数据 256 累计 2054
|
|
|
+[2025-10-24 19:04:53.019][000000140.985] I/user.准备写入fota包 256 累计写入 2048
|
|
|
+[2025-10-24 19:04:53.029][000000140.985] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:04:53.037][000000140.985] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:04:53.226][000000141.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:04:54.005][000000141.997] I/user.uart 收到数据 256 累计 2310
|
|
|
+[2025-10-24 19:04:54.019][000000141.998] I/user.准备写入fota包 256 累计写入 2304
|
|
|
+[2025-10-24 19:04:54.034][000000141.998] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:04:54.044][000000141.999] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:04:54.225][000000142.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:04:55.022][000000142.998] I/user.uart 收到数据 256 累计 2566
|
|
|
+[2025-10-24 19:04:55.032][000000142.999] I/user.准备写入fota包 256 累计写入 2560
|
|
|
+[2025-10-24 19:04:55.042][000000143.000] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:04:55.050][000000143.000] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:04:55.240][000000143.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:04:56.035][000000144.012] I/user.uart 收到数据 256 累计 2822
|
|
|
+[2025-10-24 19:04:56.044][000000144.013] I/user.准备写入fota包 256 累计写入 2816
|
|
|
+[2025-10-24 19:04:56.054][000000144.013] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:04:56.060][000000144.014] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:04:56.237][000000144.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:04:57.048][000000145.024] I/user.uart 收到数据 256 累计 3078
|
|
|
+[2025-10-24 19:04:57.063][000000145.025] I/user.准备写入fota包 256 累计写入 3072
|
|
|
+[2025-10-24 19:04:57.076][000000145.026] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:04:57.088][000000145.026] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:04:57.235][000000145.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:04:58.057][000000146.034] I/user.uart 收到数据 256 累计 3334
|
|
|
+[2025-10-24 19:04:58.065][000000146.035] I/user.准备写入fota包 256 累计写入 3328
|
|
|
+[2025-10-24 19:04:58.076][000000146.035] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:04:58.085][000000146.035] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:04:58.228][000000146.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:04:59.070][000000147.048] I/user.uart 收到数据 256 累计 3590
|
|
|
+[2025-10-24 19:04:59.079][000000147.049] I/user.准备写入fota包 256 累计写入 3584
|
|
|
+[2025-10-24 19:04:59.085][000000147.049] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:04:59.094][000000147.049] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:04:59.227][000000147.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:05:00.083][000000148.061] I/user.uart 收到数据 256 累计 3846
|
|
|
+[2025-10-24 19:05:00.096][000000148.062] I/user.准备写入fota包 256 累计写入 3840
|
|
|
+[2025-10-24 19:05:00.109][000000148.062] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:05:00.121][000000148.062] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:05:00.240][000000148.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:05:01.093][000000149.070] I/user.uart 收到数据 256 累计 4102
|
|
|
+[2025-10-24 19:05:01.102][000000149.071] I/user.准备写入fota包 256 累计写入 4096
|
|
|
+[2025-10-24 19:05:01.112][000000149.071] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:05:01.119][000000149.071] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:05:01.233][000000149.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:05:02.090][000000150.082] I/user.uart 收到数据 256 累计 4358
|
|
|
+[2025-10-24 19:05:02.102][000000150.083] I/user.准备写入fota包 256 累计写入 4352
|
|
|
+[2025-10-24 19:05:02.136][000000150.116] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:05:02.144][000000150.116] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:05:02.229][000000150.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:05:03.117][000000151.094] I/user.uart 收到数据 256 累计 4614
|
|
|
+[2025-10-24 19:05:03.144][000000151.095] I/user.准备写入fota包 256 累计写入 4608
|
|
|
+[2025-10-24 19:05:03.153][000000151.095] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:05:03.162][000000151.096] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:05:03.226][000000151.216] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:05:04.118][000000152.095] I/user.uart 收到数据 256 累计 4870
|
|
|
+[2025-10-24 19:05:04.128][000000152.096] I/user.准备写入fota包 256 累计写入 4864
|
|
|
+[2025-10-24 19:05:04.138][000000152.097] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:05:04.152][000000152.097] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:05:04.227][000000152.216] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:05:05.133][000000153.108] I/user.uart 收到数据 256 累计 5126
|
|
|
+[2025-10-24 19:05:05.147][000000153.109] I/user.准备写入fota包 256 累计写入 5120
|
|
|
+[2025-10-24 19:05:05.167][000000153.109] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:05:05.179][000000153.110] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:05:05.226][000000153.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:05:06.126][000000154.117] I/user.uart 收到数据 256 累计 5382
|
|
|
+[2025-10-24 19:05:06.138][000000154.118] I/user.准备写入fota包 256 累计写入 5376
|
|
|
+[2025-10-24 19:05:06.150][000000154.119] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:05:06.161][000000154.119] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:05:06.233][000000154.216] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:05:07.155][000000155.132] I/user.uart 收到数据 256 累计 5638
|
|
|
+[2025-10-24 19:05:07.167][000000155.133] I/user.准备写入fota包 256 累计写入 5632
|
|
|
+[2025-10-24 19:05:07.181][000000155.133] D/user.fota.run true false 1
|
|
|
+[2025-10-24 19:05:07.192][000000155.133] I/user.fota 单包写入完成 256 等待下一个包
|
|
|
+[2025-10-24 19:05:07.234][000000155.216] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:05:08.170][000000156.147] I/user.uart 收到数据 113 累计 5751
|
|
|
+[2025-10-24 19:05:08.189][000000156.148] I/user.准备写入fota包 113 累计写入 5745
|
|
|
+[2025-10-24 19:05:08.209][000000156.177] I/fota common data done, now checking 0
|
|
|
+[2025-10-24 19:05:08.232][000000156.179] I/fota common data md5 ok
|
|
|
+[2025-10-24 19:05:08.256][000000156.179] I/fota only common data
|
|
|
+[2025-10-24 19:05:08.268][000000156.213] I/fota fota type 0 ok!, wait reboot
|
|
|
+[2025-10-24 19:05:08.278][000000156.213] D/user.fota.run true true 0
|
|
|
+[2025-10-24 19:05:08.287][000000156.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:05:08.324][000000156.314] I/user.fota 已完成,1s后重启
|
|
|
+[2025-10-24 19:05:09.227][000000157.217] I/user.fota version 1.0.0
|
|
|
+[2025-10-24 19:05:10.822][000000000.000] main_entry 708:SDK base line V017_pb18.002
|
|
|
+[2025-10-24 19:05:10.835][000000000.008] am_service_init 1154:Air780EPM_A11
|
|
|
+[2025-10-24 19:05:10.847][000000000.008] am_get_chip_type 635:6bef6,19,24,c7,0,EC718
|
|
|
+[2025-10-24 19:05:10.858][000000000.051] bsp_user_init_io 312:io volt 3.3v 21
|
|
|
+[2025-10-24 19:05:10.870][000000000.051] BSP_CustomInit 558:hardfault mode init 4
|
|
|
+[2025-10-24 19:05:10.879][000000000.052] Uart_ChangeBR 1338:uart0, 6000000 6028985 26000000 69
|
|
|
+[2025-10-24 19:05:10.894][000000000.073] I/pm poweron: Power/Reset
|
|
|
+[2025-10-24 19:05:10.908][000000000.185] self_info 127:model Air780EPM_A11 imei 862419074066563
|
|
|
+[2025-10-24 19:05:10.920][000000000.186] self_info 129:firmware[1] BASIC
|
|
|
+[2025-10-24 19:05:10.935][000000000.186] self_info 131:zone(kbytes) fs 168 script 256
|
|
|
+[2025-10-24 19:05:10.946][000000000.186] I/main LuatOS@Air780EPM base 25.03 bsp V2016 32bit
|
|
|
+[2025-10-24 19:05:10.956][000000000.186] I/main ROM Build: Oct 9 2025 21:32:15
|
|
|
+[2025-10-24 19:05:10.972][000000000.188] W/pins /luadb/pins_AIR780EPM.json not exist!!
|
|
|
+[2025-10-24 19:05:10.987][000000000.191] D/main loadlibs luavm 1048568 14888 14888
|
|
|
+[2025-10-24 19:05:11.002][000000000.191] D/main loadlibs sys 2375432 53100 58844
|
|
|
+[2025-10-24 19:05:11.018][000000000.191] D/main loadlibs psram 2375432 53184 58844
|
|
|
+[2025-10-24 19:05:11.257][000000001.213] I/user.fota version 1.0.2
|
|
|
+[2025-10-24 19:05:11.273][000000001.213] I/user.fota1111122222222222
|
|
|
+[2025-10-24 19:05:12.083][000000002.214] I/user.fota version 1.0.2
|
|
|
+[2025-10-24 19:05:12.094][000000002.214] I/user.fota1111122222222222
|
|
|
+[2025-10-24 19:05:13.079][000000003.215] I/user.fota version 1.0.2
|
|
|
+[2025-10-24 19:05:13.088][000000003.215] I/user.fota1111122222222222
|
|
|
+
|
|
|
+```
|
|
|
+
|
|
|
+main.py 日志:
|
|
|
+```lua
|
|
|
+D:\gitee_hz\fota>python main.py
|
|
|
+COM59
|
|
|
+设备响应 b'#FOTA RDY\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 256
|
|
|
+设备响应 b'#FOTA NEXT\n'
|
|
|
+发送升级包数据 113
|
|
|
+设备响应 b'#FOTA OK\n'
|
|
|
+发送完毕,退出
|
|
|
+```
|
|
|
+
|
|
|
+
|