perf(vd960DBN): RAM 瘦身 — .bss 省 4.8KB, 栈 1.9KB→~6.7KB (2026-08-17)
栈溢出根因确认后 .bss 瘦身四刀: - net_config.h: ETH_MAX_PACKET_SIZE 1520→768 (MSS=700最大帧758B, 省3.76KB) - iot_mqtt_srv.c: payload[1400]→800 (loop_data最大~604B, 省600B) - iot_mqtt_srv.h: IOT_MQTT_SEND_BUF_LEN 1024→800 (_iot_send_buf/resp/buf 同步, 省224B) - net_srv.c: MAX_MQTTBUF_LEN 1024→800 (512仍不够勿回改, 省224B) ⚠ ETH 768 为 MSS=700 最小安全值; 若现场有大UDP包截断改回1024。 待办: .map 确认 BLE 栈占用; RECE_BUF_LEN/ARP 表可再省; 局部大数组转static。
This commit is contained in:
@@ -22,7 +22,7 @@
|
||||
#define IOT_MQTT_RECONNECT_MAX_MS 60000 // 最大重连间隔 (指数退避上限)
|
||||
#define IOT_MQTT_HEARTBEAT_MS 60000 // 心跳上报周期 (60s)
|
||||
#define IOT_MQTT_RECV_BUF_LEN 1024 // 接收缓冲区 (单次交互 ≤1024)
|
||||
#define IOT_MQTT_SEND_BUF_LEN 1024 // 发送缓冲区 (单次交互 ≤1024)
|
||||
#define IOT_MQTT_SEND_BUF_LEN 800 // 发送缓冲区 (2026-08-17: 1024→800, loop_data~604B+头~30B<800, 省 224B .bss)
|
||||
#define IOT_MQTT_TOPIC_MAX_LEN 128 // Topic 最大长度
|
||||
|
||||
/*===========================================================================
|
||||
|
||||
@@ -47,6 +47,12 @@ extern "C" {
|
||||
|
||||
#define ETH_RXBUFNB 4 /* Number of MAC received descriptors */
|
||||
|
||||
/* 2026-08-17 RAM 瘦身: ETH_MAX_PACKET_SIZE 1520 → 768.
|
||||
最大 TCP 帧 (MSS=700) = 700+20+20+14+4 = 758B ≤ 768 ✓;
|
||||
停车场景 (TCP JSON/MQTT/SSC UDP 小包) 无 >728B UDP 数据。
|
||||
省 .bss: (1520-768)×(RX 4 + TX 1) = 3.76KB (栈空间 +3.76KB)。
|
||||
若现场出现大 UDP 包截断, 改回 1024 (省 2.48KB)。 */
|
||||
#define ETH_MAX_PACKET_SIZE 768
|
||||
#ifndef ETH_MAX_PACKET_SIZE
|
||||
#define ETH_RX_BUF_SZE 1520 /* MAC receive buffer length, an integer multiple of 4 */
|
||||
#define ETH_TX_BUF_SZE 1520 /* MAC send buffer length, an integer multiple of 4 */
|
||||
|
||||
@@ -855,7 +855,7 @@ void iot_mqtt_publish_sensor(void) {
|
||||
- 用 iot_mqtt_publish() 代替 mqtt_publish(), 发送缓冲隔离
|
||||
(event_report→mqttBuf vs loop_data→iot_mqtt_publish::buf[1024])
|
||||
- coil_count 边界硬限, 防 0xC0 坏帧致溢出 */
|
||||
static char payload[1400];
|
||||
static char payload[800]; /* 2026-08-17: 1400→800, loop_data 最大~604B, 省 600B .bss */
|
||||
char *p = payload;
|
||||
int remaining = sizeof(payload);
|
||||
int written;
|
||||
|
||||
@@ -65,7 +65,7 @@ uint8_t MyBuf[RECE_BUF_LEN];
|
||||
|
||||
|
||||
#define MAX_TMP_BUF_LEN 64
|
||||
#define MAX_MQTTBUF_LEN 1024 //512: loop_data(4通道)≈604B > 512 → 序列化失败发全零垃圾包被broker RST (2026-07-15)
|
||||
#define MAX_MQTTBUF_LEN 800 // 2026-08-17: 1024→800 (loop_data~604B+头<800; 512仍不够勿改回) 省224B .bss
|
||||
char mqtt_username[64] = {0};
|
||||
char mqtt_password[32] = {0};
|
||||
char mqtt_clientid[64] = {0};
|
||||
|
||||
Reference in New Issue
Block a user