From a577537c386a94c2e1ed743ccd83ed683e1f3ad2 Mon Sep 17 00:00:00 2001 From: wangfq Date: Thu, 23 Jul 2026 11:52:58 +0800 Subject: [PATCH] =?UTF-8?q?fix(vd960DBN):=20=E4=BF=AE=E5=A4=8D=20WCHNET=5F?= =?UTF-8?q?SocketSend=20=E5=8F=82=E6=95=B0=E7=B1=BB=E5=9E=8B=E4=B8=8D?= =?UTF-8?q?=E5=8C=B9=E9=85=8D=E8=87=B4=E6=A0=88=E7=A0=B4=E5=9D=8F=20hard?= =?UTF-8?q?=20fault?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit root cause: iot_mqtt_send() 声明 uint16_t slen = len, 传给 WCHNET_SocketSend(..., uint32_t *len) 时取址 &slen。 WCHNET 写 4 字节返回值到 2 字节栈变量 → 破坏相邻栈内容 (返回地址/帧指针) → 函数返回时 hard fault 重启 fix: slen 改为 uint32_t --- vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/iot_mqtt_srv.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/iot_mqtt_srv.c b/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/iot_mqtt_srv.c index 3416c86..90806db 100644 --- a/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/iot_mqtt_srv.c +++ b/vd960DBN/BLE/OnlyUpdateApp_Peripheral/APP/iot_mqtt_srv.c @@ -292,10 +292,10 @@ static int iot_make_topic(char *out, uint16_t out_len, const char *direction, /* 发送 MQTT 报文到 broker */ static int iot_mqtt_send(const uint8_t *buf, uint16_t len) { - uint16_t slen = len; - PRINT("IOT: SocketSend sock=%d len=%d\n", g_iot_socket, len); + uint32_t slen = len; /* 必须是 uint32_t: WCHNET_SocketSend 写 4 字节, uint16_t 会栈破坏致 hard fault */ + PRINT("IOT: SocketSend sock=%d len=%lu\n", g_iot_socket, (unsigned long)slen); uint8_t ret = WCHNET_SocketSend(g_iot_socket, (uint8_t *)buf, &slen); - PRINT("IOT: SocketSend ret=0x%02X sent=%d\n", ret, slen); + PRINT("IOT: SocketSend ret=0x%02X sent=%lu\n", ret, (unsigned long)slen); return (ret == WCHNET_ERR_SUCCESS) ? 0 : -1; }