diff --git a/V1.5/STM32F103_App1/HardWare/CAR/air780e.c b/V1.5/STM32F103_App1/HardWare/CAR/air780e.c index 48ca7b7..bca9848 100644 --- a/V1.5/STM32F103_App1/HardWare/CAR/air780e.c +++ b/V1.5/STM32F103_App1/HardWare/CAR/air780e.c @@ -768,7 +768,15 @@ int air780e_ota_confirm(void) if (!info.app_confirmed) { /* 本地确认先行(版本号 + 确认标志落盘),防止通知发送失败导致 BL 误判回滚 */ - if (info.new_version > 0) ota_ver_save(info.new_version); + if (info.new_version > 0) { + ota_ver_save(info.new_version); + /* 版本号刚更新,立即补发一次状态 + fwver: + * 否则平台要等下次触发才能看到新版本序号 */ + relayStatueUpdata(); + char vb[24]; + snprintf(vb, sizeof(vb), "%s:%u", FIRMWARE_VERSION_STR, (unsigned)MqttInfoStr.Ver); + NET_publish_version(vb); + } int ok = 0; for (int i = 0; i < 3 && !ok; i++) { W25Q64_OTA_SetConfirmed(); diff --git a/V1.5/STM32F103_App1/HardWare/FEED_SCALE/feed_scale.c b/V1.5/STM32F103_App1/HardWare/FEED_SCALE/feed_scale.c index 5c91ae9..ff2671d 100644 --- a/V1.5/STM32F103_App1/HardWare/FEED_SCALE/feed_scale.c +++ b/V1.5/STM32F103_App1/HardWare/FEED_SCALE/feed_scale.c @@ -135,13 +135,13 @@ static int feed_scale_read_frame(uint8_t *buf, uint16_t max_len) return (int)len; } -/* 上报当前状态到平台: 开关、重量、单次投料量、去皮重量 */ -static void feed_scale_report_weight(const char *header) +/* 上报当前状态到平台: 开关、重量、单次投料量、去皮重量。返回 0=已发出 */ +static int feed_scale_report_weight(const char *header) { (void)header; /* 云平台物模型字段:weight=剩余料重(净重),zero=空载重量(去皮),onceWt=单次投料量 */ /* sw1 与 feeding 均上报继电器 1 状态,平台两个开关都能同步刷新 */ - NET_publish_status( + int rc = NET_publish_status( MqttInfoStr.Relay_State[1] ? 1 : 0, MqttInfoStr.Relay_State[1] ? 1 : 0, MqttInfoStr.Relay_State[2] ? 1 : 0, @@ -154,6 +154,7 @@ static void feed_scale_report_weight(const char *header) (float)last_weight / 10.0f, (float)once_weight / 10.0f, (float)zero_weight / 10.0f); + return rc; } uint8_t g_feed_scale_on = 0; @@ -362,10 +363,13 @@ void feedScaleProcess(void) last_raw_weight = cur_weight; /* 保存原始毛重 */ last_weight = cur_weight > zero_weight ? (cur_weight - zero_weight) : 0; /* 净重 */ if (!first_query_reported) { - /* 首次上电: 查询到一次有效重量后上报平台 */ - first_query_reported = 1; - feed_scale_report_weight("iot.prop.post"); - log_info("> FEED: 首次重量已上报"); + /* 首次上电: 查询到一次有效重量后上报平台。 + * 发布成功才置标志——发布被丢弃(AT忙)时下轮查询继续重试, + * 避免重启后平台重量一直是 0 直到下次碰巧发出去 */ + if (feed_scale_report_weight("iot.prop.post") == 0) { + first_query_reported = 1; + log_info("> FEED: 首次重量已上报"); + } } if (feed_state == FEED_RUNNING) { diff --git a/V1.5/STM32F103_App1/HardWare/NETWORK/network.c b/V1.5/STM32F103_App1/HardWare/NETWORK/network.c index 9f1ddd7..60d88c3 100644 --- a/V1.5/STM32F103_App1/HardWare/NETWORK/network.c +++ b/V1.5/STM32F103_App1/HardWare/NETWORK/network.c @@ -269,11 +269,11 @@ void NET_process(void) } } -void NET_publish_status(int sw1, int feeding, int sw2, int sw3, int sw4, +int NET_publish_status(int sw1, int feeding, int sw2, int sw3, int sw4, float weight_kg, float once_wt_kg, float zero_kg) { - if (g_net_tx_busy) { log_info("> NET: 状态上报被丢弃 (发送忙)"); return; } - if (net_at_trylock() != 0) { log_info("> NET: 状态上报被丢弃 (AT 忙)"); return; } + if (g_net_tx_busy) { log_info("> NET: 状态上报被丢弃 (发送忙)"); return -1; } + if (net_at_trylock() != 0) { log_info("> NET: 状态上报被丢弃 (AT 忙)"); return -1; } /* ver 字段:固件版本号,平台据此可识别设备是否发生了 OTA 回退 */ /* sw1 与 feeding 都映射继电器 1 状态(无秤模式两者等效), * 两个字段都上报,平台的 sw1 开关和 feeding 状态才能同步刷新 */ @@ -300,6 +300,7 @@ void NET_publish_status(int sw1, int feeding, int sw2, int sw3, int sw4, net_wifi_publish_up(json); } net_at_unlock(); + return 0; } void NET_publish_response(const char *cmd_id, int ok, const char *msg) diff --git a/V1.5/STM32F103_App1/HardWare/NETWORK/network.h b/V1.5/STM32F103_App1/HardWare/NETWORK/network.h index e7bd252..54a9807 100644 --- a/V1.5/STM32F103_App1/HardWare/NETWORK/network.h +++ b/V1.5/STM32F103_App1/HardWare/NETWORK/network.h @@ -49,8 +49,8 @@ void NET_init(void); void NET_process(void); void NET_LockInit(void); /* 网络 AT 会话互斥锁初始化(调度器启动前调用一次) */ net_backend_t NET_GetActiveBackend(void); -void NET_publish_status(int sw1, int feeding, int sw2, int sw3, int sw4, - float weight_kg, float once_wt_kg, float zero_kg); +int NET_publish_status(int sw1, int feeding, int sw2, int sw3, int sw4, + float weight_kg, float once_wt_kg, float zero_kg); /* 返回 0=已发出 */ void NET_publish_response(const char *cmd_id, int ok, const char *msg); int NET_publish_power(int on); void NET_publish_version(const char *ver); /* 上报代码版本字符串(FIRMWARE_VERSION_STR) */ /* 返回 0=已发出,-1=通道忙被丢弃 */ diff --git a/V1.5/STM32F103_App1/Inc/main.h b/V1.5/STM32F103_App1/Inc/main.h index 2f71d7e..57d5f38 100644 --- a/V1.5/STM32F103_App1/Inc/main.h +++ b/V1.5/STM32F103_App1/Inc/main.h @@ -31,7 +31,7 @@ extern UART_HandleTypeDef huart3; * 由平台侧自行计时控制 */ /*===== 固件版本号(开机横幅打印用,改版本只动这里) =====*/ -#define FIRMWARE_VERSION_STR "1.5.6" +#define FIRMWARE_VERSION_STR "1.5.7" #define PRODUCT_WITH_FEED_SCALE 1 /* 默认带秤(EEPROM 172 可改,蓝牙 SCALE0/1 切换) */ @@ -53,7 +53,7 @@ extern UART_HandleTypeDef huart3; //#define MQTT_USERNAME "698227263545354343" //#define MQTT_PASSWORD "b612c2839c135934" -//RTOS版-投料机-无蠕变磅秤-01 +////RTOS版-投料机-无蠕变磅秤-01 #define MQTT_CLIENT_ID "46c080c385c3652e" #define MQTT_USERNAME "766990788193702677" #define MQTT_PASSWORD "6ae9622b7034326b" diff --git a/V1.5/debug.txt b/V1.5/debug.txt index 9df8bfa..278f9d4 100644 --- a/V1.5/debug.txt +++ b/V1.5/debug.txt @@ -1,34 +1,138 @@ +[INFO] > 运行时间: 0天--00小时--35分钟 +[INFO] > MQTT: ++MSUB: "/iot/data/down/5791a8579d459290",174 byte,{"id":"937bd2c97b68db53","header":"iot.ota.upgrade.post","body":{"crc16":"3b5f","ver":3,"url":"http://58.17.14.95:81/ota/pull/6d668140ed45caef.bin", +[INFO] > OTA 升级命令! +[INFO] > OTA 版本: 当前=2, 新版本=3, crc16=0x3B5F +[INFO] > OTA 下载地址: http://58.17.14.95:81/ota/pull/6d668140ed45caef.bin +[INFO] > OTA: 58.17.14.95:81/ota/pull/6d668140ed45caef.bin +[INFO] > OTA: 进入 +[INFO] > 4G: 复位... +[INFO] > 4G: 复位完成 +[INFO] > OTA: 网络... +[INFO] > OTA: 第二次 AT 测试 +[INFO] > OTA: 第二次 AT 成功 +[INFO] > OTA: 等待网络附着... +[INFO] > 4G: PDN 已激活 +[INFO] > SAPBR... +[INFO] > OTA: MQTT 就绪 +[INFO] > HTTP: http://58.17.14.95:81/ota/pull/6d668140ed45caef.bin +[INFO] > HEAD... +[INFO] > 大小=81452B +[INFO] ************************************** +[INFO] * OTA 升级开始 * +[INFO] * 大小: 81452 字节 * +[INFO] ************************************** +[INFO] > 正在擦除 W25Q64 新槽位... +[INFO] > W25Q64 新槽位擦除完成 +[INFO] [下载] 开始 >>> +[INFO] > DL 偏移=0 +[INFO] > [ 3%] 3072/81452B +[INFO] > DL 偏移=3072 +[INFO] > [ 7%] 6144/81452B +[INFO] > DL 偏移=6144 +[INFO] > [ 11%] 9216/81452B +[INFO] > DL 偏移=9216 +[INFO] > [ 15%] 12288/81452B +[INFO] > DL 偏移=12288 +[INFO] > [ 18%] 15360/81452B +[INFO] > DL 偏移=15360 +[INFO] > [ 22%] 18432/81452B +[INFO] > DL 偏移=18432 +[INFO] > [ 26%] 21504/81452B +[INFO] > DL 偏移=21504 +[INFO] > [ 30%] 24576/81452B +[INFO] > DL 偏移=24576 +[INFO] > [ 33%] 27648/81452B +[INFO] > DL 偏移=27648 +[INFO] > [ 37%] 30720/81452B +[INFO] > DL 偏移=30720 +[INFO] > [ 41%] 33792/81452B +[INFO] > DL 偏移=33792 +[INFO] > [ 45%] 36864/81452B +[INFO] > DL 偏移=36864 +[INFO] > [ 49%] 39936/81452B +[INFO] > DL 偏移=39936 +[INFO] > [ 52%] 43008/81452B +[INFO] > DL 偏移=43008 +[INFO] > [ 56%] 46080/81452B +[INFO] > DL 偏移=46080 +[INFO] > [ 60%] 49152/81452B +[INFO] > DL 偏移=49152 +[INFO] > [ 64%] 52224/81452B +[INFO] > DL 偏移=52224 +[INFO] > [ 67%] 55296/81452B +[INFO] > DL 偏移=55296 +[INFO] > [ 71%] 58368/81452B +[INFO] > DL 偏移=58368 +[INFO] > [ 75%] 61440/81452B +[INFO] > DL 偏移=61440 +[INFO] > [ 79%] 64512/81452B +[INFO] > DL 偏移=64512 +[INFO] > [ 82%] 67584/81452B +[INFO] > DL 偏移=67584 +[INFO] > [ 86%] 70656/81452B +[INFO] > DL 偏移=70656 +[INFO] > [ 90%] 73728/81452B +[INFO] > DL 偏移=73728 +[INFO] > [ 94%] 76800/81452B +[INFO] > DL 偏移=76800 +[INFO] > [ 98%] 79872/81452B +[INFO] > DL 偏移=79872 +[INFO] > [100%] 81452/81452B +[INFO] > W25Q64 CRC16=0x3B5F (服务器=0x3B5F) +[INFO] >>> 校验 81452B... +[INFO] [ OK ] 固件校验通过! +[INFO] ************************************** +[INFO] * OTA 下载完成! * +[INFO] * 正在重启进入 BootLoader... * +[INFO] ************************************** +[INFO] > OTA 结果已发送(不等OK): success=1 [INFO] [INFO] * * * * * * * * * * * * * * * * * * [INFO] * BootLoader * [INFO] * Flash: 256KB * [INFO] * * * * * By Helei * * * * * * [INFO] [BL] 上次复位原因: 软件 +[INFO] [BL] 外部 Flash 中有新固件:ver=3 size=81452 crc=0x3B5F [INFO] > 固件校验通过 +[INFO] [BL] 擦除备份槽... +[INFO] [BL] 备份 APP1 -> 外部 Flash 0x000000,大小=229376 +[INFO] [BL] 备份完成,crc=0x8225 +[INFO] [BL] 正在更新 APP1... +[INFO] > 擦除 112 页,起始地址 0x8008000... +[INFO] > 擦除完成(112 页) +[INFO] [BL] 拷贝外部 Flash 0x040000 -> APP1 0x08008000,大小=81452 +[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=0x3B5F,跳转运行 [INFO] [BL] 正在跳转到 APP1 @0x08008000... [INFO] [INFO] * * * * * * * * * * * * * * * * * * -[INFO] * 版本: 1.5.7 (RTOS) * +[INFO] * 版本: 1.5.9 (RTOS) * [INFO] * * * * * * * By Helei * * * * [INFO] > EEPROM 探测: 写=0xA5, 读=0xA5 -[INFO] > EEPROM 读取 err=0, Magic=0xDEADBEEF, Ver=1 -[INFO] EEPROM 配置有效, Ver=1 +[INFO] > EEPROM 读取 err=0, Magic=0xDEADBEEF, Ver=2 +[INFO] EEPROM 配置有效, Ver=2 [INFO] > 服务器: 58.17.14.95:1880 [INFO] > 客户端ID: 5791a8579d459290 [INFO] > 用户名: 766990788193702677 -[INFO] > 版本序号: 1 +[INFO] > 版本序号: 2 [INFO] > W25Q64 初始化成功, ID=0xEF4017 [INFO] > 历史重启记录(新→旧): -[INFO] [1] 重启原因: 软件复位(未标记) 运行时间: 0天00小时19分 -[INFO] [2] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00分 -[INFO] [3] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00分 -[INFO] [4] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00分 -[INFO] [5] 重启原因: OTA升级完成 运行时间: 0天00小时08分 -[INFO] [6] 重启原因: 4G初始化失败 运行时间: 0天00小时00分 -[INFO] [7] 重启原因: 被平台踢下线 运行时间: 0天00小时08分 -[INFO] [8] 重启原因: 被平台踢下线 运行时间: 0天00小时05分 -[INFO] [9] 重启原因: 串口RESET命令 运行时间: 0天00小时01分 -[INFO] [10] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00分 +[INFO] [1] 重启原因: OTA升级完成 运行时间: 0天00小时35分 +[INFO] [2] 重启原因: OTA升级完成 运行时间: 0天00小时07分 +[INFO] [3] 重启原因: 按键复位 运行时间: 0天00小时00分 +[INFO] [4] 重启原因: 软件复位(未标记) 运行时间: 0天00小时19分 +[INFO] [5] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00分 +[INFO] [6] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00分 +[INFO] [7] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00分 +[INFO] [8] 重启原因: OTA升级完成 运行时间: 0天00小时08分 +[INFO] [9] 重启原因: 4G初始化失败 运行时间: 0天00小时00分 +[INFO] [10] 重启原因: 被平台踢下线 运行时间: 0天00小时08分 [INFO] SW1:关 [INFO] SW2:关 [INFO] SW3:关 @@ -59,249 +163,8 @@ [INFO] SW4:关(恢复) [INFO] > Main: MQTT Ready 后首次状态上报 [INFO] > FEED: 首次查询已发送 -[INFO] > OTA 已确认(MQTT Ready + 首次发布成功 + 延迟9s) -[INFO] > 运行时间: 0天--00小时--01分钟 -[INFO] > GPS: 未定位(run=1 fix=0),跳过 -[INFO] > 运行时间: 0天--00小时--02分钟 -[INFO] > 运行时间: 0天--00小时--03分钟 -[INFO] > 运行时间: 0天--00小时--04分钟 -[INFO] -[INFO] * * * * * * * * * * * * * * * * * * -[INFO] * BootLoader * -[INFO] * Flash: 256KB * -[INFO] * * * * * By Helei * * * * * * -[INFO] [BL] 上次复位原因: 上电 按键 -[INFO] > 固件校验通过 -[INFO] [BL] 正在跳转到 APP1 @0x08008000... -[INFO] -[INFO] * * * * * * * * * * * * * * * * * * -[INFO] * 版本: 1.5.7 (RTOS) * -[INFO] * * * * * * * By Helei * * * * -[INFO] > EEPROM 探测: 写=0xA5, 读=0xA5 -[INFO] > EEPROM 读取 err=0, Magic=0xDEADBEEF, Ver=1 -[INFO] EEPROM 配置有效, Ver=1 -[INFO] > 服务器: 58.17.14.95:1880 -[INFO] > 客户端ID: 5791a8579d459290 -[INFO] > 用户名: 766990788193702677 -[INFO] > 版本序号: 1 -[INFO] > W25Q64 初始化成功, ID=0xEF4017 -[INFO] > 历史重启记录(新→旧): -[INFO] [1] 重启原因: 按键复位 运行时间: 0天00小时00分 -[INFO] [2] 重启原因: 软件复位(未标记) 运行时间: 0天00小时19分 -[INFO] [3] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00分 -[INFO] [4] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00分 -[INFO] [5] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00分 -[INFO] [6] 重启原因: OTA升级完成 运行时间: 0天00小时08分 -[INFO] [7] 重启原因: 4G初始化失败 运行时间: 0天00小时00分 -[INFO] [8] 重启原因: 被平台踢下线 运行时间: 0天00小时08分 -[INFO] [9] 重启原因: 被平台踢下线 运行时间: 0天00小时05分 -[INFO] [10] 重启原因: 串口RESET命令 运行时间: 0天00小时01分 -[INFO] SW1:关 -[INFO] SW2:关 -[INFO] SW3:关 -[INFO] SW4:关 -[INFO] > 产品模式: 称重投料(带秤) -[INFO] > GPS 定位: 开启 -[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: 信号 58% (rssi=18) -[INFO] > 4G: GNSS 已开启 -[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] > GPS: 未定位(run=1 fix=0),跳过 -[INFO] > 运行时间: 0天--00小时--02分钟 -[INFO] > 运行时间: 0天--00小时--03分钟 -[INFO] > 运行时间: 0天--00小时--04分钟 -[INFO] > 运行时间: 0天--00小时--05分钟 -[INFO] > 运行时间: 0天--00小时--06分钟 -[INFO] > GPS: 未定位(run=1 fix=0),跳过 -[INFO] > 运行时间: 0天--00小时--07分钟 -[INFO] > MQTT: -+MSUB: "/iot/data/down/5791a8579d459290",174 byte,{"id":"96a459ebd6d35334","header":"iot.ota.upgrade.post","body":{"crc16":"e786","ver":2,"url":"http://58.17.14.95:81/ota/pull/6d342f16358716a6.bin", -[INFO] > OTA 升级命令! -[INFO] > OTA 版本: 当前=1, 新版本=2, crc16=0xE786 -[INFO] > OTA 下载地址: http://58.17.14.95:81/ota/pull/6d342f16358716a6.bin -[INFO] > OTA: 58.17.14.95:81/ota/pull/6d342f16358716a6.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 就绪 -[INFO] > HTTP: http://58.17.14.95:81/ota/pull/6d342f16358716a6.bin -[INFO] > HEAD... -[INFO] > 大小=81292B -[INFO] ************************************** -[INFO] * OTA 升级开始 * -[INFO] * 大小: 81292 字节 * -[INFO] ************************************** -[INFO] > 正在擦除 W25Q64 新槽位... -[INFO] > W25Q64 新槽位擦除完成 -[INFO] [下载] 开始 >>> -[INFO] > DL 偏移=0 -[INFO] > [ 3%] 3072/81292B -[INFO] > DL 偏移=3072 -[INFO] > [ 7%] 6144/81292B -[INFO] > DL 偏移=6144 -[INFO] > [ 11%] 9216/81292B -[INFO] > DL 偏移=9216 -[INFO] > [ 15%] 12288/81292B -[INFO] > DL 偏移=12288 -[INFO] > [ 18%] 15360/81292B -[INFO] > DL 偏移=15360 -[INFO] > [ 22%] 18432/81292B -[INFO] > DL 偏移=18432 -[INFO] > [ 26%] 21504/81292B -[INFO] > DL 偏移=21504 -[INFO] > [ 30%] 24576/81292B -[INFO] > DL 偏移=24576 -[INFO] > [ 34%] 27648/81292B -[INFO] > DL 偏移=27648 -[INFO] > [ 37%] 30720/81292B -[INFO] > DL 偏移=30720 -[INFO] > [ 41%] 33792/81292B -[INFO] > DL 偏移=33792 -[INFO] > [ 45%] 36864/81292B -[INFO] > DL 偏移=36864 -[INFO] > [ 49%] 39936/81292B -[INFO] > DL 偏移=39936 -[INFO] > [ 52%] 43008/81292B -[INFO] > DL 偏移=43008 -[INFO] > [ 56%] 46080/81292B -[INFO] > DL 偏移=46080 -[INFO] > [ 60%] 49152/81292B -[INFO] > DL 偏移=49152 -[INFO] > [ 64%] 52224/81292B -[INFO] > DL 偏移=52224 -[INFO] > [ 68%] 55296/81292B -[INFO] > DL 偏移=55296 -[INFO] > [ 71%] 58368/81292B -[INFO] > DL 偏移=58368 -[INFO] > [ 75%] 61440/81292B -[INFO] > DL 偏移=61440 -[INFO] > [ 79%] 64512/81292B -[INFO] > DL 偏移=64512 -[INFO] > [ 83%] 67584/81292B -[INFO] > DL 偏移=67584 -[INFO] > [ 86%] 70656/81292B -[INFO] > DL 偏移=70656 -[INFO] > [ 90%] 73728/81292B -[INFO] > DL 偏移=73728 -[INFO] > [ 94%] 76800/81292B -[INFO] > DL 偏移=76800 -[INFO] > [ 98%] 79872/81292B -[INFO] > DL 偏移=79872 -[INFO] > [100%] 81292/81292B -[INFO] > W25Q64 CRC16=0xE786 (服务器=0xE786) -[INFO] >>> 校验 81292B... -[INFO] [ OK ] 固件校验通过! -[INFO] ************************************** -[INFO] * OTA 下载完成! * -[INFO] * 正在重启进入 BootLoader... * -[INFO] ************************************** -[INFO] > OTA 结果已发送(不等OK): success=1 -[INFO] -[INFO] * * * * * * * * * * * * * * * * * * -[INFO] * BootLoader * -[INFO] * Flash: 256KB * -[INFO] * * * * * By Helei * * * * * * -[INFO] [BL] 上次复位原因: 软件 -[INFO] [BL] 外部 Flash 中有新固件:ver=2 size=81292 crc=0xE786 -[INFO] > 固件校验通过 -[INFO] [BL] 擦除备份槽... -[INFO] [BL] 备份 APP1 -> 外部 Flash 0x000000,大小=229376 -[INFO] [BL] 备份完成,crc=0xC6DC -[INFO] [BL] 正在更新 APP1... -[INFO] > 擦除 112 页,起始地址 0x8008000... -[INFO] > 擦除完成(112 页) -[INFO] [BL] 拷贝外部 Flash 0x040000 -> APP1 0x08008000,大小=81292 -[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=0xE786,跳转运行 -[INFO] [BL] 正在跳转到 APP1 @0x08008000... -[INFO] -[INFO] * * * * * * * * * * * * * * * * * * -[INFO] * 版本: 1.5.8 (RTOS) * -[INFO] * * * * * * * By Helei * * * * -[INFO] > EEPROM 探测: 写=0xA5, 读=0xA5 -[INFO] > EEPROM 读取 err=0, Magic=0xDEADBEEF, Ver=1 -[INFO] EEPROM 配置有效, Ver=1 -[INFO] > 服务器: 58.17.14.95:1880 -[INFO] > 客户端ID: 5791a8579d459290 -[INFO] > 用户名: 766990788193702677 -[INFO] > 版本序号: 1 -[INFO] > W25Q64 初始化成功, ID=0xEF4017 -[INFO] > 历史重启记录(新→旧): -[INFO] [1] 重启原因: OTA升级完成 运行时间: 0天00小时07分 -[INFO] [2] 重启原因: 按键复位 运行时间: 0天00小时00分 -[INFO] [3] 重启原因: 软件复位(未标记) 运行时间: 0天00小时19分 -[INFO] [4] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00分 -[INFO] [5] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00分 -[INFO] [6] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00分 -[INFO] [7] 重启原因: OTA升级完成 运行时间: 0天00小时08分 -[INFO] [8] 重启原因: 4G初始化失败 运行时间: 0天00小时00分 -[INFO] [9] 重启原因: 被平台踢下线 运行时间: 0天00小时08分 -[INFO] [10] 重启原因: 被平台踢下线 运行时间: 0天00小时05分 -[INFO] SW1:关 -[INFO] SW2:关 -[INFO] SW3:关 -[INFO] SW4:关 -[INFO] > 产品模式: 称重投料(带秤) -[INFO] > GPS 定位: 开启 -[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: PDN 已激活 -[INFO] > 4G: 信号 61% (rssi=19) -[INFO] > 4G: GNSS 已开启 -[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 版本已保存并校验: 2 +[INFO] > OTA 版本已保存并校验: 3 [INFO] > OTA 确认标志已写入 [INFO] > OTA 结果已上报: success=1 [INFO] > OTA 已确认(MQTT Ready + 首次发布成功 + 延迟9s) diff --git a/V1.5/鐗堟湰璇存槑.md b/V1.5/鐗堟湰璇存槑.md index a8adb9d..7404551 100644 --- a/V1.5/鐗堟湰璇存槑.md +++ b/V1.5/鐗堟湰璇存槑.md @@ -164,3 +164,7 @@ result.post(success=1, 浠诲姟id) + confirm.post锛岄佽揪鍚庢竻鍥 0xFF - OTA 杩涘害涓婃姤鏀瑰彲闈犲彂閫侊細progress.post 绛 OK 纭锛堝け璐ヨ嚜鍔ㄩ噸璇 1 娆★紝姣 10% 鏈澶氬鑺 ~3s锛夛紝 骞冲彴"鍗囩骇涓"鏍囧織鍙疆浣嶏紱鑻ユ棤搴旂瓟鎵撳嵃 WARN +- 淇 OTA 鍚庣増鏈簭鍙峰钩鍙颁笉鍒锋柊锛歄TA 纭淇濆瓨鐗堟湰鍙峰悗绔嬪嵆琛ュ彂涓娆$姸鎬+fwver + 锛堝師鍏堣绛夎涪绾/閲嶅惎/鎷ㄥ紑鍏宠Е鍙戜笂鎶ユ墠鏇存柊锛 +- 淇閲嶅惎鍚庣绉ら噸閲忓钩鍙颁竴鐩翠负 0锛氶娆¢噸閲忎笂鎶ヨ AT 蹇欎涪寮冨悗涓嶉噸璇曪紝 + 鏀逛负鍙戝竷鎴愬姛鎵嶇疆鏍囧織锛屽け璐ヤ笅杞煡璇㈢户缁噸璇