V1.5: OTA确认后立即补发状态+fwver(版本序号即时刷新);485首次重量上报失败改重试(发布成功才置标志)

This commit is contained in:
helei 2026-08-20 09:20:43 +08:00
parent 9ee82719ca
commit e6f25bfa0b
7 changed files with 151 additions and 271 deletions

View File

@ -768,7 +768,15 @@ int air780e_ota_confirm(void)
if (!info.app_confirmed) { if (!info.app_confirmed) {
/* 本地确认先行(版本号 + 确认标志落盘),防止通知发送失败导致 BL 误判回滚 */ /* 本地确认先行(版本号 + 确认标志落盘),防止通知发送失败导致 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; int ok = 0;
for (int i = 0; i < 3 && !ok; i++) { for (int i = 0; i < 3 && !ok; i++) {
W25Q64_OTA_SetConfirmed(); W25Q64_OTA_SetConfirmed();

View File

@ -135,13 +135,13 @@ static int feed_scale_read_frame(uint8_t *buf, uint16_t max_len)
return (int)len; return (int)len;
} }
/* 上报当前状态到平台: 开关、重量、单次投料量、去皮重量 */ /* 上报当前状态到平台: 开关、重量、单次投料量、去皮重量。返回 0=已发出 */
static void feed_scale_report_weight(const char *header) static int feed_scale_report_weight(const char *header)
{ {
(void)header; (void)header;
/* 云平台物模型字段weight=剩余料重(净重)zero=空载重量(去皮)onceWt=单次投料量 */ /* 云平台物模型字段weight=剩余料重(净重)zero=空载重量(去皮)onceWt=单次投料量 */
/* sw1 与 feeding 均上报继电器 1 状态,平台两个开关都能同步刷新 */ /* 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[1] ? 1 : 0, MqttInfoStr.Relay_State[1] ? 1 : 0,
MqttInfoStr.Relay_State[2] ? 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)last_weight / 10.0f,
(float)once_weight / 10.0f, (float)once_weight / 10.0f,
(float)zero_weight / 10.0f); (float)zero_weight / 10.0f);
return rc;
} }
uint8_t g_feed_scale_on = 0; uint8_t g_feed_scale_on = 0;
@ -362,11 +363,14 @@ void feedScaleProcess(void)
last_raw_weight = cur_weight; /* 保存原始毛重 */ last_raw_weight = cur_weight; /* 保存原始毛重 */
last_weight = cur_weight > zero_weight ? (cur_weight - zero_weight) : 0; /* 净重 */ last_weight = cur_weight > zero_weight ? (cur_weight - zero_weight) : 0; /* 净重 */
if (!first_query_reported) { if (!first_query_reported) {
/* 首次上电: 查询到一次有效重量后上报平台 */ /* 首次上电: 查询到一次有效重量后上报平台。
* (AT忙)
* 0 */
if (feed_scale_report_weight("iot.prop.post") == 0) {
first_query_reported = 1; first_query_reported = 1;
feed_scale_report_weight("iot.prop.post");
log_info("> FEED: 首次重量已上报"); log_info("> FEED: 首次重量已上报");
} }
}
if (feed_state == FEED_RUNNING) { if (feed_state == FEED_RUNNING) {
/* 投喂期间:每次有效重量都上报平台,保证实时 */ /* 投喂期间:每次有效重量都上报平台,保证实时 */

View File

@ -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) float weight_kg, float once_wt_kg, float zero_kg)
{ {
if (g_net_tx_busy) { log_info("> NET: 状态上报被丢弃 (发送忙)"); return; } if (g_net_tx_busy) { log_info("> NET: 状态上报被丢弃 (发送忙)"); return -1; }
if (net_at_trylock() != 0) { log_info("> NET: 状态上报被丢弃 (AT 忙)"); return; } if (net_at_trylock() != 0) { log_info("> NET: 状态上报被丢弃 (AT 忙)"); return -1; }
/* ver 字段:固件版本号,平台据此可识别设备是否发生了 OTA 回退 */ /* ver 字段:固件版本号,平台据此可识别设备是否发生了 OTA 回退 */
/* sw1 与 feeding 都映射继电器 1 状态(无秤模式两者等效), /* sw1 与 feeding 都映射继电器 1 状态(无秤模式两者等效),
* sw1 feeding */ * 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_wifi_publish_up(json);
} }
net_at_unlock(); net_at_unlock();
return 0;
} }
void NET_publish_response(const char *cmd_id, int ok, const char *msg) void NET_publish_response(const char *cmd_id, int ok, const char *msg)

View File

@ -49,8 +49,8 @@ void NET_init(void);
void NET_process(void); void NET_process(void);
void NET_LockInit(void); /* 网络 AT 会话互斥锁初始化(调度器启动前调用一次) */ void NET_LockInit(void); /* 网络 AT 会话互斥锁初始化(调度器启动前调用一次) */
net_backend_t NET_GetActiveBackend(void); net_backend_t NET_GetActiveBackend(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); float weight_kg, float once_wt_kg, float zero_kg); /* 返回 0=已发出 */
void NET_publish_response(const char *cmd_id, int ok, const char *msg); void NET_publish_response(const char *cmd_id, int ok, const char *msg);
int NET_publish_power(int on); int NET_publish_power(int on);
void NET_publish_version(const char *ver); /* 上报代码版本字符串(FIRMWARE_VERSION_STR) */ /* 返回 0=已发出,-1=通道忙被丢弃 */ void NET_publish_version(const char *ver); /* 上报代码版本字符串(FIRMWARE_VERSION_STR) */ /* 返回 0=已发出,-1=通道忙被丢弃 */

View File

@ -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 切换) */ #define PRODUCT_WITH_FEED_SCALE 1 /* 默认带秤EEPROM 172 可改,蓝牙 SCALE0/1 切换) */
@ -53,7 +53,7 @@ extern UART_HandleTypeDef huart3;
//#define MQTT_USERNAME "698227263545354343" //#define MQTT_USERNAME "698227263545354343"
//#define MQTT_PASSWORD "b612c2839c135934" //#define MQTT_PASSWORD "b612c2839c135934"
//RTOS版-投料机-无蠕变磅秤-01 ////RTOS版-投料机-无蠕变磅秤-01
#define MQTT_CLIENT_ID "46c080c385c3652e" #define MQTT_CLIENT_ID "46c080c385c3652e"
#define MQTT_USERNAME "766990788193702677" #define MQTT_USERNAME "766990788193702677"
#define MQTT_PASSWORD "6ae9622b7034326b" #define MQTT_PASSWORD "6ae9622b7034326b"

View File

@ -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] * * * * * * * * * * * * * * * * * * [INFO] * * * * * * * * * * * * * * * * * *
[INFO] * BootLoader * [INFO] * BootLoader *
[INFO] * Flash: 256KB * [INFO] * Flash: 256KB *
[INFO] * * * * * By Helei * * * * * * [INFO] * * * * * By Helei * * * * * *
[INFO] [BL] 上次复位原因: 软件 [INFO] [BL] 上次复位原因: 软件
[INFO] [BL] 外部 Flash 中有新固件ver=3 size=81452 crc=0x3B5F
[INFO] > 固件校验通过 [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] [BL] 正在跳转到 APP1 @0x08008000...
[INFO] [INFO]
[INFO] * * * * * * * * * * * * * * * * * * [INFO] * * * * * * * * * * * * * * * * * *
[INFO] * 版本: 1.5.7 (RTOS) * [INFO] * 版本: 1.5.9 (RTOS) *
[INFO] * * * * * * * By Helei * * * * [INFO] * * * * * * * By Helei * * * *
[INFO] > EEPROM 探测: 写=0xA5, 读=0xA5 [INFO] > EEPROM 探测: 写=0xA5, 读=0xA5
[INFO] > EEPROM 读取 err=0, Magic=0xDEADBEEF, Ver=1 [INFO] > EEPROM 读取 err=0, Magic=0xDEADBEEF, Ver=2
[INFO] EEPROM 配置有效, Ver=1 [INFO] EEPROM 配置有效, Ver=2
[INFO] > 服务器: 58.17.14.95:1880 [INFO] > 服务器: 58.17.14.95:1880
[INFO] > 客户端ID: 5791a8579d459290 [INFO] > 客户端ID: 5791a8579d459290
[INFO] > 用户名: 766990788193702677 [INFO] > 用户名: 766990788193702677
[INFO] > 版本序号: 1 [INFO] > 版本序号: 2
[INFO] > W25Q64 初始化成功, ID=0xEF4017 [INFO] > W25Q64 初始化成功, ID=0xEF4017
[INFO] > 历史重启记录(新→旧): [INFO] > 历史重启记录(新→旧):
[INFO] [1] 重启原因: 软件复位(未标记) 运行时间: 0天00小时19分 [INFO] [1] 重启原因: OTA升级完成 运行时间: 0天00小时35
[INFO] [2] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00分 [INFO] [2] 重启原因: OTA升级完成 运行时间: 0天00小时07
[INFO] [3] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00分 [INFO] [3] 重启原因: 按键复位 运行时间: 0天00小时00分
[INFO] [4] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00分 [INFO] [4] 重启原因: 软件复位(未标记) 运行时间: 0天00小时19
[INFO] [5] 重启原因: OTA升级完成 运行时间: 0天00小时08分 [INFO] [5] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00
[INFO] [6] 重启原因: 4G初始化失败 运行时间: 0天00小时00分 [INFO] [6] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00分
[INFO] [7] 重启原因: 被平台踢下线 运行时间: 0天00小时08分 [INFO] [7] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00
[INFO] [8] 重启原因: 被平台踢下线 运行时间: 0天00小时05分 [INFO] [8] 重启原因: OTA升级完成 运行时间: 0天00小时08
[INFO] [9] 重启原因: 串口RESET命令 运行时间: 0天00小时01分 [INFO] [9] 重启原因: 4G初始化失败 运行时间: 0天00小时00
[INFO] [10] 重启原因: 卡死看门狗溢出 运行时间: 0天00小时00分 [INFO] [10] 重启原因: 被平台踢下线 运行时间: 0天00小时08
[INFO] SW1:关 [INFO] SW1:关
[INFO] SW2:关 [INFO] SW2:关
[INFO] SW3:关 [INFO] SW3:关
@ -59,249 +163,8 @@
[INFO] SW4:关(恢复) [INFO] SW4:关(恢复)
[INFO] > Main: MQTT Ready 后首次状态上报 [INFO] > Main: MQTT Ready 后首次状态上报
[INFO] > FEED: 首次查询已发送 [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] > EEPROM 写入成功
[INFO] > OTA 版本已保存并校验: 2 [INFO] > OTA 版本已保存并校验: 3
[INFO] > OTA 确认标志已写入 [INFO] > OTA 确认标志已写入
[INFO] > OTA 结果已上报: success=1 [INFO] > OTA 结果已上报: success=1
[INFO] > OTA 已确认MQTT Ready + 首次发布成功 + 延迟9s [INFO] > OTA 已确认MQTT Ready + 首次发布成功 + 延迟9s

View File

@ -164,3 +164,7 @@
result.post(success=1, 任务id) + confirm.post送达后清回 0xFF result.post(success=1, 任务id) + confirm.post送达后清回 0xFF
- OTA 进度上报改可靠发送progress.post 等 OK 确认(失败自动重试 1 次,每 10% 最多多花 ~3s - OTA 进度上报改可靠发送progress.post 等 OK 确认(失败自动重试 1 次,每 10% 最多多花 ~3s
平台"升级中"标志可置位;若无应答打印 WARN 平台"升级中"标志可置位;若无应答打印 WARN
- 修复 OTA 后版本序号平台不刷新OTA 确认保存版本号后立即补发一次状态+fwver
(原先要等踢线/重启/拨开关触发上报才更新)
- 修复重启后磅秤重量平台一直为 0首次重量上报被 AT 忙丢弃后不重试,
改为发布成功才置标志,失败下轮查询继续重试