V1.5: OTA下载完成后的result.post改发了就走(不等OK),平台以confirm.post为权威成功信号

This commit is contained in:
helei 2026-08-19 22:07:41 +08:00
parent 1eaaea1867
commit 1a11cfce02
5 changed files with 460 additions and 151 deletions

View File

@ -460,6 +460,17 @@ static int ota_ver_save(uint16_t ver) {
}
/*==== MQTT Publish: OTA进度/结果上报 ====*/
/* 结果上报的"发了就走"版本:不等 OK 不阻塞。用于下载完成后的 result.post(success)
* confirm.post OK+30s */
void air780e_mqtt_result_nowait(const char *header, const char *ota_id, int val) {
if (!header || !ota_id || !ota_id[0]) return;
static char cmd[300];
sprintf(cmd, "AT+MPUB=\"/iot/data/up/%s\",0,0,\"{\\22header\\22:\\22%s\\22,\\22body\\22:{\\22id\\22:\\22%.16s\\22,\\22success\\22:%s}}\"",
MqttInfoStr.ClientID, header, ota_id, val ? "true" : "false");
CAT1_printf("%s", cmd);
log_info("> OTA 结果已发送(不等OK): success=%d", val);
}
int air780e_mqtt_report(const char *header, const char *ota_id, int val) {
if (!header || !ota_id || !ota_id[0]) return -1;
static char cmd[300];
@ -736,8 +747,8 @@ static void air780e_trigger_ota_body(const char *host, int port, const char *pat
log_info("* OTA 下载完成! *");
log_info("* 正在重启进入 BootLoader... *");
log_info("**************************************");
air780e_mqtt_report("iot.ota.result.post", ota_id, 1);
bg_delay(3000); /* 等待 MQTT 结果消息发送完成后再复位 */
air780e_mqtt_result_nowait("iot.ota.result.post", ota_id, 1);
bg_delay(1000); /* 给模组一点发送时间即复位(权威通知由重启后的 confirm.post 承担) */
/* 只把固件信息写入 W25Q64版本号在 APP 确认成功后再写入 EEPROM */
W25Q64_OTA_SetNewInfo(new_ver, file_size, crc16);
reset_log_mark(RSN_OTA_UPDATE);

View File

@ -52,6 +52,7 @@ void air780e_init(void);
void air780e_process(void);
void air780e_trigger_ota(const char *host, int port, const char *path, const char *ota_id, uint16_t new_ver, uint16_t crc16);
int air780e_mqtt_report(const char *header, const char *ota_id, int percent_or_success); /* ·µ»Ø 0=ËÍ´ï */
void air780e_mqtt_result_nowait(const char *header, const char *ota_id, int val); /* 结果上报发了就走不等OK */
int air780e_ota_confirm(void); /* 0=֪ͨÒÑËÍ´ï 1=ÎÞ¹ÒÆð -1=֪ͨδËÍ´ï(ÐèÖØÊÔ) */
uint16_t ota_get_version(void);
void CAT1_printf(const char *fmt, ...);

View File

@ -58,6 +58,11 @@ extern UART_HandleTypeDef huart3;
#define MQTT_USERNAME "766990788193702677"
#define MQTT_PASSWORD "6ae9622b7034326b"
////RTOS版-投料机-无蠕变磅秤-03
//#define MQTT_CLIENT_ID "5791a8579d459290"
//#define MQTT_USERNAME "766990788193702677"
//#define MQTT_PASSWORD "5f6cd7748ec9db35"
#define MQTT_SERVER_IP "58.17.14.95"
#define MQTT_SERVER_PORT 1880
#define MQTT_TOPIC "/iot/data/down/"

View File

@ -1,177 +1,467 @@
[2026-08-07 14:14:16.197]
RX[INFO]
[INFO]
[INFO] * * * * * * * * * * * * * * * * * *
[INFO] * BootLoader *
[INFO] * Flash: 256KB *
[INFO] * * * * * By Helei * * * * * *
[INFO] > Firmware verify OK
[INFO] [BL] Jumping to APP1 @0x08008000...
[INFO] [BL] 上次复位原因: 上电 按键
[INFO] > 固件校验通过
[INFO] [BL] 正在跳转到 APP1 @0x08008000...
[INFO]
[INFO] * * * * * * * * * * * * * * * * * *
[INFO] * Version: 1.0.2 *
[INFO] * 版本: 1.5.8 (RTOS) *
[INFO] * * * * * * * By Helei * * * *
[INFO] > EEPROM probe: wr=0xA5, rd=0xA5
[INFO] > EEPROM read err=0, Magic=0xDEADBEEF, Ver=2
[INFO] EEPROM config valid, Ver=2
[INFO] > Server: 58.17.14.95:1880
[INFO] > Client: 4fbaf68ca378b72b
[INFO] > User : 698227263545354343
[INFO] > Firmware Ver: 2
[INFO] > W25Q64 init OK, ID=0xEF4017
[INFO] SW1:OFF
[INFO] SW2:OFF
[INFO] SW3:OFF
[INFO] SW4:OFF
[INFO] > FEED: init, zero=1.0KG, onceWt=1.0KG
[INFO] > 4G: Init...
[INFO] > 4G: Reset...
[2026-08-07 14:14:23.051]
RX[INFO] > 4G: Reset done
[INFO] > 4G: Net...
[WARN] > AT t/o [r1]: AT
[INFO] > 4G: CGATT attached
[INFO] > 4G: Net OK
[INFO] > EEPROM 探测: 写=0xA5, 读=0xA5
[INFO] > EEPROM 读取 err=0, Magic=0xDEADBEEF, Ver=20
[INFO] EEPROM 配置有效, Ver=20
[INFO] > 服务器: 58.17.14.95:1880
[INFO] > 客户端ID: 5791a8579d459290
[INFO] > 用户名: 766990788193702677
[INFO] > 版本序号: 20
[INFO] > W25Q64 初始化成功, ID=0xEF4017
[INFO] > 历史重启记录(新→旧):
[INFO] [1] 重启原因: 按键复位 运行时间: 0天00小时00分
[INFO] [2] 重启原因: 按键复位 运行时间: 0天00小时00分
[INFO] [3] 重启原因: 按键复位 运行时间: 0天00小时06分
[INFO] [4] 重启原因: 被平台踢下线 运行时间: 0天00小时03分
[INFO] [5] 重启原因: 被平台踢下线 运行时间: 0天00小时03分
[INFO] [6] 重启原因: 被平台踢下线 运行时间: 0天06小时42分
[INFO] [7] 重启原因: 按键复位 运行时间: 0天00小时00分
[INFO] [8] 重启原因: 串口OTA命令 运行时间: 0天01小时05分
[INFO] [9] 重启原因: 卡死看门狗溢出 运行时间: 0天07小时41分
[INFO] [10] 重启原因: 外部断电(法拉电容记录) 运行时间: 0天00小时00分
[INFO] SW1:关
[INFO] SW2:关
[INFO] SW3:关
[INFO] SW4:关
[INFO] > 产品模式: 称重投料(带秤)
[INFO] > GPS 定位: 关闭(GPS0)
[INFO] > FEED: 初始化, 去皮=1.0KG, 单次投料=1.0KG
[INFO] > 电能: HLW8032 就绪 (UART5 PD2)
[INFO] > OLED: 初始化完成
[INFO] > 4G: 初始化...
[INFO] > 4G: 复位...
[INFO] > 4G: 复位完成
[INFO] > 4G: 网络...
[WARN] > AT 超时 [r1]: AT
[INFO] > 4G: ICCID 8986032524791123631
[INFO] > 4G: CGATT 已附着
[INFO] > 4G: 信号 45% (rssi=14)
[INFO] > 4G: 网络 OK
[INFO] > 4G: MQTT...
[INFO] > 4G: MQTT OK
[INFO] > 4G: Ready
[INFO] > 4G: first publish ok
[INFO] SW1:OFF (no restore, feeding safety)
[INFO] SW2:OFF (restore)
[INFO] SW3:OFF (restore)
[INFO] SW4:OFF (restore)
[INFO] > Main: first status report after MQTT ready
[INFO] > 4G: 首次发布成功
[INFO] > BLE: 配置已缓存(Bt1),跳过设置
[INFO] SW1:关(不恢复,投喂安全保护)
[INFO] SW2:关(恢复)
[INFO] SW3:关(恢复)
[INFO] SW4:关(恢复)
[INFO] > Main: MQTT Ready 后首次状态上报
[INFO] > FEED: 首次查询已发送
[INFO] > OTA 已确认MQTT Ready + 首次发布成功 + 延迟9s
[INFO]
[INFO] * * * * * * * * * * * * * * * * * *
[INFO] * BootLoader *
[INFO] * Flash: 256KB *
[INFO] * * * * * By Helei * * * * * *
[INFO] [BL] 上次复位原因: 软件
[INFO] > 固件校验通过
[INFO] [BL] 正在跳转到 APP1 @0x08008000...
[INFO]
[INFO] * * * * * * * * * * * * * * * * * *
[INFO] * 版本: 1.5.6 (RTOS) *
[INFO] * * * * * * * By Helei * * * *
[INFO] > EEPROM 探测: 写=0xA5, 读=0xA5
[INFO] > EEPROM 读取 err=0, Magic=0xDEADBEEF, Ver=20
[INFO] > EEPROM 写入成功
[INFO] > EEPROM 写入完成, Magic=0xDEADBE12
[INFO] > EEPROM 回读校验 err=0, Magic=0xDEADBE12, Ver=0
[INFO] EEPROM 配置已修复, Ver=0
[INFO] > 服务器: 58.17.14.95:1880
[INFO] > 客户端ID: 5791a8579d459290
[INFO] > 用户名: 766990788193702677
[INFO] > 版本序号: 0
[INFO] > W25Q64 初始化成功, ID=0xEF4017
[INFO] > 历史重启记录(新→旧):
[INFO] [1] 重启原因: 软件复位(未标记) 运行时间: 0天00小时00分
[INFO] [2] 重启原因: 按键复位 运行时间: 0天00小时00分
[INFO] [3] 重启原因: 按键复位 运行时间: 0天00小时00分
[INFO] [4] 重启原因: 按键复位 运行时间: 0天00小时06分
[INFO] [5] 重启原因: 被平台踢下线 运行时间: 0天00小时03分
[INFO] [6] 重启原因: 被平台踢下线 运行时间: 0天00小时03分
[INFO] [7] 重启原因: 被平台踢下线 运行时间: 0天06小时42分
[INFO] [8] 重启原因: 按键复位 运行时间: 0天00小时00分
[INFO] [9] 重启原因: 串口OTA命令 运行时间: 0天01小时05分
[INFO] [10] 重启原因: 卡死看门狗溢出 运行时间: 0天07小时41分
[INFO] SW1:关
[INFO] SW2:关
[INFO] SW3:关
[INFO] SW4:关
[INFO] > 产品模式: 称重投料(带秤)
[INFO] > GPS 定位: 关闭(GPS0)
[INFO] > FEED: 初始化, 去皮=1.0KG, 单次投料=1.0KG
[INFO] > 电能: HLW8032 就绪 (UART5 PD2)
[INFO] > OLED: 初始化完成
[INFO] > 4G: 初始化...
[INFO] > 4G: 复位...
[INFO] > 4G: 复位完成
[INFO] > 4G: 网络...
[WARN] > AT 超时 [r1]: AT
[INFO] > 4G: ICCID 8986032524791123631
[INFO] > 4G: CGATT 未附着,重试 3/30
[INFO] > 4G: CGATT 未附着,重试 6/30
[INFO] > 4G: CGATT 未附着,重试 9/30
[INFO] > 4G: CGATT 未附着,重试 12/30
[INFO] > 4G: CGATT 未附着,重试 15/30
[INFO] > 4G: CGATT 未附着,重试 18/30
[INFO] > 4G: CGATT 未附着,重试 21/30
[INFO] > 4G: CGATT 未附着,重试 24/30
[INFO] > 4G: CGATT 未附着,重试 27/30
[INFO] > 4G: CGATT 未附着,重试 30/30
[WARN] > 4G: CGATT 附着超时
[WARN] > 4G: 网络失败,重试 2
[INFO] > 4G: 复位...
[INFO] > 4G: 复位完成
[INFO] > 4G: 网络...
[WARN] > AT 超时 [r1]: AT
[INFO] > 4G: ICCID 8986032524791123631
[INFO] > 4G: PDN 已激活
[INFO] > 4G: 信号 51% (rssi=16)
[INFO] > 4G: 网络 OK
[INFO] > 4G: MQTT...
[INFO]
[INFO] * * * * * * * * * * * * * * * * * *
[INFO] * BootLoader *
[INFO] * Flash: 256KB *
[INFO] * * * * * By Helei * * * * * *
[INFO] [BL] 上次复位原因: 软件
[INFO] > 固件校验通过
[INFO] [BL] 正在跳转到 APP1 @0x08008000...
[INFO]
[INFO] * * * * * * * * * * * * * * * * * *
[INFO] * 版本: 1.5.6 (RTOS) *
[INFO] * * * * * * * By Helei * * * *
[INFO] > EEPROM 探测: 写=0xA5, 读=0xA5
[INFO] > EEPROM 读取 err=0, Magic=0xDEADBE12, Ver=0
[INFO] > EEPROM 写入成功
[INFO] > EEPROM 写入完成, Magic=0xDEADBEEF
[INFO] > EEPROM 回读校验 err=0, Magic=0xDEADBEEF, Ver=0
[INFO] EEPROM 配置已修复, Ver=0
[INFO] > 服务器: 58.17.14.95:1880
[INFO] > 客户端ID: 5791a8579d459290
[INFO] > 用户名: 766990788193702677
[INFO] > 版本序号: 0
[INFO] > W25Q64 初始化成功, ID=0xEF4017
[INFO] > 历史重启记录(新→旧):
[INFO] [1] 重启原因: 软件复位(未标记) 运行时间: 0天00小时00分
[INFO] [2] 重启原因: 软件复位(未标记) 运行时间: 0天00小时00分
[INFO] [3] 重启原因: 按键复位 运行时间: 0天00小时00分
[INFO] [4] 重启原因: 按键复位 运行时间: 0天00小时00分
[INFO] [5] 重启原因: 按键复位 运行时间: 0天00小时06分
[INFO] [6] 重启原因: 被平台踢下线 运行时间: 0天00小时03分
[INFO] [7] 重启原因: 被平台踢下线 运行时间: 0天00小时03分
[INFO] [8] 重启原因: 被平台踢下线 运行时间: 0天06小时42分
[INFO] [9] 重启原因: 按键复位 运行时间: 0天00小时00分
[INFO] [10] 重启原因: 串口OTA命令 运行时间: 0天01小时05分
[INFO] SW1:关
[INFO] SW2:关
[INFO] SW3:关
[INFO] SW4:关
[INFO] > 产品模式: 称重投料(带秤)
[INFO] > GPS 定位: 关闭(GPS0)
[INFO] > FEED: 初始化, 去皮=1.0KG, 单次投料=1.0KG
[INFO] > 电能: HLW8032 就绪 (UART5 PD2)
[INFO] > OLED: 初始化完成
[INFO] > 4G: 初始化...
[INFO] > 4G: 复位...
[INFO] > 4G: 复位完成
[INFO] > 4G: 网络...
[WARN] > AT 超时 [r1]: AT
[INFO] > 4G: ICCID 8986032524791123631
[INFO] > 4G: PDN 已激活
[INFO] > 4G: 信号 51% (rssi=16)
[INFO] > 4G: 网络 OK
[INFO] > 4G: MQTT...
[WARN] > 4G: TCP 连接超时,last[6]:
OK
[2026-08-07 14:14:24.656]
RX[INFO] > MQTT:
+MSUB: "/iot/data/down/4fbaf68ca378b72b",174 byte,{"id":"4fd40dd829a90193","header":"iot.ota.upgrade.post","body":{"crc16":"e8ca","ver":3,"url":"http://58.17.14.95:81/ota/pull/a01732e48ebd9fa6.bin",
[INFO] > OTA cmd!
[INFO] > OTA ver: cur=2, new=3, crc16=0xE8CA
[INFO] > OTA url: http://58.17.14.95:81/ota/pull/a01732e48ebd9fa6.bin
[INFO] > OTA: 58.17.14.95:81/ota/pull/a01732e48ebd9fa6.bin
[INFO] > OTA: in
[INFO] > 4G: Reset...
[WARN] > AT 超时 [r1]: AT+MSUB="/iot/data/down/5791a8579d459290",0
[WARN] > 4G: MSUB 失败,buff[21]:
+CME ERROR: 767
[2026-08-07 14:14:39.404]
RX[INFO] > 4G: Reset done
[INFO] > OTA: Net...
[INFO] > OTA: 2nd AT test
[INFO] > OTA: 2nd AT ok
[WARN] > 4G: MQTT 失败,重试 2
[WARN] > AT 超时 [r1]: AT+MDISCONNECT
[WARN] > AT 超时 [r1]: AT+MIPSTOP
[INFO] > 4G: 复位...
[INFO] > 4G: 复位完成
[INFO] > 4G: 网络...
[WARN] > AT 超时 [r1]: AT
[INFO] > 4G: ICCID 8986032524791123631
[INFO] > 4G: CGATT 已附着
[INFO] > 4G: 信号 45% (rssi=14)
[INFO] > 4G: 网络 OK
[INFO] > 4G: MQTT...
[INFO] > 4G: MQTT OK
[INFO] > 4G: Ready
[INFO] > 4G: 首次发布成功
[INFO] > BLE: 配置已缓存(Bt1),跳过设置
[INFO] SW1:关(不恢复,投喂安全保护)
[INFO] SW2:关(恢复)
[INFO] SW3:关(恢复)
[INFO] SW4:关(恢复)
[INFO] > Main: MQTT Ready 后首次状态上报
[INFO] > FEED: 首次查询已发送
[INFO] > OTA 已确认MQTT Ready + 首次发布成功 + 延迟9s
[INFO] > 运行时间: 0天--00小时--01分钟
[INFO] > 运行时间: 0天--00小时--02分钟
[INFO] > 运行时间: 0天--00小时--03分钟
[INFO] > MQTT:
+MSUB: "/iot/data/down/5791a8579d459290",174 byte,{"id":"f780b84564dd993c","header":"iot.ota.upgrade.post","body":{"crc16":"dcb0","ver":1,"url":"http://58.17.14.95:81/ota/pull/996026e2519054b0.bin",
[INFO] > OTA 升级命令!
[INFO] > OTA 版本: 当前=0, 新版本=1, crc16=0xDCB0
[INFO] > OTA 下载地址: http://58.17.14.95:81/ota/pull/996026e2519054b0.bin
[INFO] > OTA: 58.17.14.95:81/ota/pull/996026e2519054b0.bin
[INFO] > OTA: 进入
[INFO] > 4G: 复位...
[INFO] > 4G: 复位完成
[INFO] > OTA: 网络...
[INFO] > OTA: 第二次 AT 测试
[INFO] > OTA: 第二次 AT 成功
[INFO] > OTA: 等待网络附着...
[INFO] > 4G: CGATT 已附着
[INFO] > SAPBR...
[INFO] > OTA: MQTT ready
[INFO] > HTTP: http://58.17.14.95:81/ota/pull/a01732e48ebd9fa6.bin
[INFO] > OTA: MQTT 就绪
[INFO] > HTTP: http://58.17.14.95:81/ota/pull/996026e2519054b0.bin
[INFO] > HEAD...
[INFO] > Size=40076B
[INFO] > 大小=81156B
[INFO] **************************************
[INFO] * OTA Update Start *
[INFO] * Size: 40076 bytes *
[INFO] * OTA 升级开始 *
[INFO] * 大小: 81156 字节 *
[INFO] **************************************
[INFO] > Erasing W25Q64 new slot...
[INFO] > W25Q64 new slot erased
[INFO] [Download] Start >>>
[INFO] > DL offset=0
[INFO] > [ 7%] 3072/40076B
[INFO] > DL offset=3072
[INFO] > [ 15%] 6144/40076B
[INFO] > DL offset=6144
[INFO] > [ 22%] 9216/40076B
[INFO] > DL offset=9216
[INFO] > [ 30%] 12288/40076B
[INFO] > DL offset=12288
[INFO] > [ 38%] 15360/40076B
[INFO] > DL offset=15360
[INFO] > [ 45%] 18432/40076B
[INFO] > DL offset=18432
[INFO] > [ 53%] 21504/40076B
[INFO] > DL offset=21504
[INFO] > [ 61%] 24576/40076B
[INFO] > DL offset=24576
[INFO] > [ 68%] 27648/40076B
[INFO] > DL offset=27648
[INFO] > [ 76%] 30720/40076B
[INFO] > DL offset=30720
[INFO] > [ 84%] 33792/40076B
[INFO] > DL offset=33792
[INFO] > [ 91%] 36864/40076B
[INFO] > DL offset=36864
[INFO] > [ 99%] 39936/40076B
[INFO] > DL offset=39936
[INFO] > [100%] 40076/40076B
[INFO] > W25Q64 CRC16=0xE8CA (server=0xE8CA)
[INFO] >>> Verify 40076B...
[INFO] [ OK ] Firmware OK!
[INFO] > 正在擦除 W25Q64 新槽位...
[INFO] > W25Q64 新槽位擦除完成
[INFO] [下载] 开始 >>>
[INFO] > DL 偏移=0
[INFO] > [ 3%] 3072/81156B
[INFO] > DL 偏移=3072
[INFO] > [ 7%] 6144/81156B
[INFO] > DL 偏移=6144
[INFO] > [ 11%] 9216/81156B
[INFO] > DL 偏移=9216
[INFO] > [ 15%] 12288/81156B
[INFO] > DL 偏移=12288
[INFO] > [ 18%] 15360/81156B
[INFO] > DL 偏移=15360
[INFO] > [ 22%] 18432/81156B
[INFO] > DL 偏移=18432
[INFO] > [ 26%] 21504/81156B
[INFO] > DL 偏移=21504
[INFO] > [ 30%] 24576/81156B
[INFO] > DL 偏移=24576
[INFO] > [ 34%] 27648/81156B
[INFO] > DL 偏移=27648
[INFO] > [ 37%] 30720/81156B
[INFO] > DL 偏移=30720
[INFO] > [ 41%] 33792/81156B
[INFO] > DL 偏移=33792
[INFO] > [ 45%] 36864/81156B
[INFO] > DL 偏移=36864
[INFO] > [ 49%] 39936/81156B
[INFO] > DL 偏移=39936
[INFO] > [ 52%] 43008/81156B
[INFO] > DL 偏移=43008
[INFO] > [ 56%] 46080/81156B
[INFO] > DL 偏移=46080
[INFO] > [ 60%] 49152/81156B
[INFO] > DL 偏移=49152
[INFO] > [ 64%] 52224/81156B
[INFO] > DL 偏移=52224
[INFO] > [ 68%] 55296/81156B
[INFO] > DL 偏移=55296
[INFO] > [ 71%] 58368/81156B
[INFO] > DL 偏移=58368
[INFO] > [ 75%] 61440/81156B
[INFO] > DL 偏移=61440
[INFO] > [ 79%] 64512/81156B
[INFO] > DL 偏移=64512
[INFO] > [ 83%] 67584/81156B
[INFO] > DL 偏移=67584
[INFO] > [ 87%] 70656/81156B
[INFO] > DL 偏移=70656
[INFO] > [ 90%] 73728/81156B
[INFO] > DL 偏移=73728
[INFO] > [ 94%] 76800/81156B
[INFO] > DL 偏移=76800
[INFO] > [ 98%] 79872/81156B
[INFO] > DL 偏移=79872
[INFO] > [100%] 81156/81156B
[INFO] > W25Q64 CRC16=0xDCB0 (服务器=0xDCB0)
[INFO] >>> 校验 81156B...
[INFO] [ OK ] 固件校验通过!
[INFO] **************************************
[INFO] * OTA Download Complete! *
[INFO] * Rebooting to BootLoader... *
[INFO] * OTA 下载完成! *
[INFO] * 正在重启进入 BootLoader... *
[INFO] **************************************
[INFO] > OTA result reported: success=1
[2026-08-07 14:14:42.945]
RX[INFO]
[WARN] > AT 超时 [r3]: AT+MPUB="/iot/data/up/5791a8579d459290",0,0,"{\22header\22:\22iot.ota.result.post\22,\22body\22:{\22id\22:\22f780b84564dd993c\22,\22success\22:true}}"
[WARN] > AT 超时 [r2]: AT+MPUB="/iot/data/up/5791a8579d459290",0,0,"{\22header\22:\22iot.ota.result.post\22,\22body\22:{\22id\22:\22f780b84564dd993c\22,\22success\22:true}}"
[WARN] > AT 超时 [r1]: AT+MPUB="/iot/data/up/5791a8579d459290",0,0,"{\22header\22:\22iot.ota.result.post\22,\22body\22:{\22id\22:\22f780b84564dd993c\22,\22success\22:true}}"
[WARN] > OTA 结果上报失败(重试 3 次无 OK)
[INFO]
[INFO] * * * * * * * * * * * * * * * * * *
[INFO] * BootLoader *
[INFO] * Flash: 256KB *
[INFO] * * * * * By Helei * * * * * *
[INFO] [BL] New firmware in external: ver=3 size=40076 crc=0xE8CA
[INFO] > Firmware verify OK
[INFO] [BL] Erase backup slot...
[2026-08-07 14:14:44.273]
RX[INFO] [BL] Backup APP1 -> external 0x000000, size=229376
[2026-08-07 14:14:48.794]
RX[INFO] [BL] Backup OK, crc=0x1071
[INFO] [BL] Updating APP1...
[INFO] > Erasing 112 pages from 0x8008000...
[2026-08-07 14:14:52.691]
RX[INFO] > Erase OK (112 pages)
[INFO] [BL] Copy external 0x040000 -> APP1 0x08008000, size=40076
[INFO] > Progress: 16/39 KB (40%)
[INFO] > Progress: 32/39 KB (81%)
[INFO] [ OK ] Copy done
[INFO] > Firmware verify OK
[INFO] [BL] APP1 update OK, crc=0xE8CA, jump
[INFO] [BL] Jumping to APP1 @0x08008000...
[INFO] [BL] 上次复位原因: 软件
[INFO] [BL] 外部 Flash 中有新固件ver=1 size=81156 crc=0xDCB0
[INFO] > 固件校验通过
[INFO] [BL] 擦除备份槽...
[INFO] [BL] 备份 APP1 -> 外部 Flash 0x000000大小=229376
[INFO] [BL] 备份完成crc=0x3567
[INFO] [BL] 正在更新 APP1...
[INFO] > 擦除 112 页,起始地址 0x8008000...
[INFO] > 擦除完成112 页)
[INFO] [BL] 拷贝外部 Flash 0x040000 -> APP1 0x08008000大小=81156
[INFO] > 进度: 16/79 KB (20%)
[INFO] > 进度: 32/79 KB (40%)
[INFO] > 进度: 48/79 KB (60%)
[INFO] > 进度: 64/79 KB (80%)
[INFO] [ OK ] 拷贝完成
[INFO] > 固件校验通过
[INFO] [BL] APP1 更新成功crc=0xDCB0跳转运行
[INFO] [BL] 正在跳转到 APP1 @0x08008000...
[INFO]
[INFO] * * * * * * * * * * * * * * * * * *
[INFO] * Version: 1.0.3 *
[INFO] * 版本: 1.5.6 (RTOS) *
[INFO] * * * * * * * By Helei * * * *
[INFO] > EEPROM probe: wr=0xA5, rd=0xA5
[INFO] > EEPROM read err=0, Magic=0xDEADBEEF, Ver=2
[INFO] EEPROM config valid, Ver=2
[INFO] > Server: 58.17.14.95:1880
[INFO] > Client: 4fbaf68ca378b72b
[INFO] > User : 698227263545354343
[INFO] > Firmware Ver: 2
[INFO] > W25Q64 init OK, ID=0xEF4017
[INFO] SW1:OFF
[INFO] SW2:OFF
[INFO] SW3:OFF
[INFO] SW4:OFF
[INFO] > FEED: init, zero=1.0KG, onceWt=1.0KG
[INFO] > 4G: Init...
[INFO] > 4G: Reset...
[2026-08-07 14:14:59.563]
RX[INFO] > 4G: Reset done
[INFO] > 4G: Net...
[WARN] > AT t/o [r1]: AT
[INFO] > 4G: CGATT attached
[INFO] > 4G: Net OK
[INFO] > EEPROM 探测: 写=0xA5, 读=0xA5
[INFO] > EEPROM 读取 err=0, Magic=0xDEADBEEF, Ver=0
[INFO] EEPROM 配置有效, Ver=0
[INFO] > 服务器: 58.17.14.95:1880
[INFO] > 客户端ID: 5791a8579d459290
[INFO] > 用户名: 766990788193702677
[INFO] > 版本序号: 0
[INFO] > W25Q64 初始化成功, ID=0xEF4017
[INFO] > 历史重启记录(新→旧):
[INFO] [1] 重启原因: OTA升级完成 运行时间: 0天00小时03分
[INFO] [2] 重启原因: 软件复位(未标记) 运行时间: 0天00小时00分
[INFO] [3] 重启原因: 软件复位(未标记) 运行时间: 0天00小时00分
[INFO] [4] 重启原因: 按键复位 运行时间: 0天00小时00分
[INFO] [5] 重启原因: 按键复位 运行时间: 0天00小时00分
[INFO] [6] 重启原因: 按键复位 运行时间: 0天00小时06分
[INFO] [7] 重启原因: 被平台踢下线 运行时间: 0天00小时03分
[INFO] [8] 重启原因: 被平台踢下线 运行时间: 0天00小时03分
[INFO] [9] 重启原因: 被平台踢下线 运行时间: 0天06小时42分
[INFO] [10] 重启原因: 按键复位 运行时间: 0天00小时00分
[INFO] SW1:关
[INFO] SW2:关
[INFO] SW3:关
[INFO] SW4:关
[INFO] > 产品模式: 称重投料(带秤)
[INFO] > GPS 定位: 关闭(GPS0)
[INFO] > FEED: 初始化, 去皮=1.0KG, 单次投料=1.0KG
[INFO] > 电能: HLW8032 就绪 (UART5 PD2)
[INFO] > OLED: 初始化完成
[INFO] > 4G: 初始化...
[INFO] > 4G: 复位...
[INFO] > 4G: 复位完成
[INFO] > 4G: 网络...
[WARN] > AT 超时 [r1]: AT
[INFO] > 4G: ICCID 89860325247911236319
[INFO] > 4G: CGATT 已附着
[INFO] > 4G: 信号 48% (rssi=15)
[INFO] > 4G: 网络 OK
[INFO] > 4G: MQTT...
[INFO] > 4G: MQTT OK
[INFO] > 4G: Ready
[INFO] > 4G: first publish ok
[INFO] SW1:OFF (no restore, feeding safety)
[INFO] SW2:OFF (restore)
[INFO] SW3:OFF (restore)
[INFO] SW4:OFF (restore)
[INFO] > Main: first status report after MQTT ready
[2026-08-07 14:15:03.029]
RX[INFO] > OTA result reported: success=1
[INFO] > EEPROM write OK
[INFO] > OTA ver saved & verified: 3
[INFO] > OTA confirmed (MQTT ready + first publish ok + 3s delay)
[INFO] > 4G: 首次发布成功
[INFO] > BLE: 配置已缓存(Bt1),跳过设置
[INFO] SW1:关(不恢复,投喂安全保护)
[INFO] SW2:关(恢复)
[INFO] SW3:关(恢复)
[INFO] SW4:关(恢复)
[INFO] > Main: MQTT Ready 后首次状态上报
[INFO] > FEED: 首次查询已发送
[INFO]
[INFO] * * * * * * * * * * * * * * * * * *
[INFO] * BootLoader *
[INFO] * Flash: 256KB *
[INFO] * * * * * By Helei * * * * * *
[INFO] [BL] 上次复位原因: IWDG看门狗
[WARN] [BL] APP 卡死(看门狗复位),试错次数=1
[INFO] > 固件校验通过
[INFO] [BL] 正在跳转到 APP1 @0x08008000...
[INFO]
[INFO] * * * * * * * * * * * * * * * * * *
[INFO] * 版本: 1.5.6 (RTOS) *
[INFO] * * * * * * * By Helei * * * *
[INFO] > EEPROM 探测: 写=0xA5, 读=0xA5
[INFO] > EEPROM 读取 err=0, Magic=0xDEADBEEF, Ver=0
[INFO] EEPROM 配置有效, Ver=0
[INFO] > 服务器: 58.17.14.95:1880
[INFO] > 客户端ID: 5791a8579d459290
[INFO] > 用户名: 766990788193702677
[INFO] > 版本序号: 0
[INFO] > W25Q64 初始化成功, ID=0xEF4017
[INFO] > 历史重启记录(新→旧):
[INFO] [1] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00分
[INFO] [2] 重启原因: OTA升级完成 运行时间: 0天00小时03分
[INFO] [3] 重启原因: 软件复位(未标记) 运行时间: 0天00小时00分
[INFO] [4] 重启原因: 软件复位(未标记) 运行时间: 0天00小时00分
[INFO] [5] 重启原因: 按键复位 运行时间: 0天00小时00分
[INFO] [6] 重启原因: 按键复位 运行时间: 0天00小时00分
[INFO] [7] 重启原因: 按键复位 运行时间: 0天00小时06分
[INFO] [8] 重启原因: 被平台踢下线 运行时间: 0天00小时03分
[INFO] [9] 重启原因: 被平台踢下线 运行时间: 0天00小时03分
[INFO] [10] 重启原因: 被平台踢下线 运行时间: 0天06小时42分
[INFO] SW1:关
[INFO] SW2:关
[INFO] SW3:关
[INFO] SW4:关
[INFO] > 产品模式: 称重投料(带秤)
[INFO] > GPS 定位: 关闭(GPS0)
[INFO] > FEED: 初始化, 去皮=1.0KG, 单次投料=1.0KG
[INFO] > 电能: HLW8032 就绪 (UART5 PD2)
[INFO] > OLED: 初始化完成
[INFO] > 4G: 初始化...
[INFO] > 4G: 复位...
[INFO] > 4G: 复位完成
[INFO] > 4G: 网络...
[WARN] > AT 超时 [r1]: AT
[INFO] > 4G: ICCID 89860325247911236319
[INFO] > 4G: CGATT 未附着,重试 3/30
[INFO] > 4G: CGATT 未附着,重试 6/30
[INFO] > 4G: CGATT 未附着,重试 9/30
[INFO] > 4G: CGATT 未附着,重试 12/30
[INFO] > 4G: CGATT 未附着,重试 15/30
[INFO] > 4G: CGATT 未附着,重试 18/30
[INFO] > 4G: CGATT 未附着,重试 21/30
[INFO] > 4G: CGATT 未附着,重试 24/30
[INFO] > 4G: CGATT 未附着,重试 27/30
[INFO] > 4G: CGATT 未附着,重试 30/30
[WARN] > 4G: CGATT 附着超时
[WARN] > 4G: 网络失败,重试 2
[INFO] > 4G: 复位...
[INFO] > 4G: 复位完成
[INFO] > 4G: 网络...
[WARN] > AT 超时 [r1]: AT
[INFO] > 4G: ICCID 89860325247911236319
[INFO] > 4G: PDN 已激活
[INFO] > 4G: 信号 38% (rssi=12)
[INFO] > 4G: 网络 OK
[INFO] > 4G: MQTT...
[INFO] > 4G: MQTT OK
[INFO] > 4G: Ready
[INFO] > 4G: 首次发布成功
[INFO] > BLE: 配置已缓存(Bt1),跳过设置
[INFO] SW1:关(不恢复,投喂安全保护)
[INFO] SW2:关(恢复)
[INFO] SW3:关(恢复)
[INFO] SW4:关(恢复)
[INFO] > Main: MQTT Ready 后首次状态上报
[INFO] > FEED: 首次查询已发送
[INFO] > EEPROM 写入成功
[INFO] > OTA 版本已保存并校验: 1
[INFO] > OTA 确认标志已写入
[INFO] > OTA 结果已上报: success=1
[INFO] > OTA 已确认MQTT Ready + 首次发布成功 + 延迟9s

View File

@ -153,3 +153,5 @@
- PRODUCT_WITH_FEED_SCALE 编译默认值改为 1默认带秤EEPROM 172 空白时生效)
- GPS 定位改运行时可切(与 SCALE 同机制EEPROM(173),蓝牙 GPS 查询 / GPS0 关 / GPS1 开,
切换自动重启生效;原 5 处 #if 编译分支改运行时判断GNSS 初始化/GPS 轮询)
- OTA 通知链理顺:下载完成后的 result.post(success) 改为发了就走不等 OK下载后 MQTT 会话可能僵死,
等 OK 白卡 12s 且发不出);平台以重启后的 confirm.post等 OK+30s 重试必达)为权威成功信号