perf(vd960DBN): 二轮RAM瘦身 — RECE_BUF_LEN 1024 + ARP 16 + 中断路径static (2026-08-17)
.map 分析: BLE 栈固定占 RAM 低 16KB 不可裁; 用户 48KB 内 .bss 41.7KB。 - net_config.h: RECE_BUF_LEN MSS×2(1400)→1024 (MSS=700帧+头≈740B, 5数组省~2.6KB) - net_config.h: WCHNET_NUM_ARP_TABLE 50→16 (停车场景IP少, 省~0.8KB) - tcp_json_srv.c: tmp_buf[RECE_BUF_LEN]/frame[800] 局部→static (中断上下文栈数组防溢出) 栈 4.7KB→~6.3KB, 中断栈峰值 -1.8KB。devlog 记录 .map 分析结论。
This commit is contained in:
+18
-6
@@ -65,13 +65,25 @@ BOOT_CNT:1 @0x2000f84c END:0x2000f834 SP:0x2000ffd0
|
||||
⚠ ETH_MAX_PACKET_SIZE 768 是贴着 MSS=700 的最小值:TCP 帧 758B ✓;
|
||||
若现场出现 >728B 数据的大 UDP 包会截断,保守可改 1024(省 2.48KB)。
|
||||
|
||||
### .map 分析 + 二轮瘦身(2026-08-17 晚,commit 后述)
|
||||
用户提供编译后 .map 解析结论:
|
||||
- **BLE 栈(libwchble.a)固定占用 RAM 低 16KB(0x20000000~0x20004000,链接脚本外)**——WCH CH32V20x 工程约定,不可裁剪
|
||||
- 用户 48KB:.data 1.6K + .bss 41.7K + .noinit 28B → 栈 4.7KB(实测稳定)
|
||||
- .bss 大块:RECE_BUF_LEN 系列 ~10KB、Mem_Heap 7.2KB、MACRx/TxBuf 3.8KB、eth DMA 5.9KB、SPI_FLASH_BUF 4KB、ARP 1.2KB、iot buf 2KB
|
||||
|
||||
二轮瘦身(省 ~3.4KB,栈 4.7KB → ~6.3KB + 中断栈峰值降 1.8KB):
|
||||
|
||||
| 文件 | 项目 | 改动 | 收益 |
|
||||
|------|------|------|------|
|
||||
| net_config.h | RECE_BUF_LEN | MSS×2(1400)→**1024**(MSS=700 帧+头≈740B 够) | 5 数组省 ~2.6KB |
|
||||
| net_config.h | WCHNET_NUM_ARP_TABLE | 50→**16**(停车设备连接 IP 少) | ~0.8KB |
|
||||
| tcp_json_srv.c | tmp_buf[RECE_BUF_LEN] | 局部→**static**(中断上下文 1KB 栈数组) | 栈峰值 -1KB |
|
||||
| tcp_json_srv.c | frame[TCP_JSON_MAX_FRAME] | 局部→**static**(中断上下文 800B) | 栈峰值 -0.8KB |
|
||||
|
||||
### 遗留(根治)
|
||||
- [ ] **确认 BLE 栈(libwchble.a)实际占用**:需用户提供编译后 .map(obj/*.map 或 MRS Release 目录)
|
||||
BLE 栈若是 20+KB 固定成本,应用层已省 4.8KB 足够; 若可裁剪更好
|
||||
- [ ] (map 确认后可选)RECE_BUF_LEN 1400→1024:SocketRecvBuf[3][1400]+MyBuf 省 1.5KB;
|
||||
ARP 表 50→16
|
||||
- [ ] 局部大数组转 static(tcp_json data_json[1024]×2、net_srv resp[600]):省 .bss 有余量后做,栈峰值 -2KB+
|
||||
- [ ] output_cfg 恢复:减栈后重新启用调试打印
|
||||
- [x] BLE 栈占用确认:16KB 固定(RAM 低区),不可裁剪
|
||||
- [ ] (可选)g_report_cfg 1400B 结构体审查(ReportConfig 含大数组?)
|
||||
- [ ] (可选)Mem_Heap_Memory 7.2KB 是 WCHNET 库内部堆,需查库配置是否可减
|
||||
- [ ] 快照区 3s 延后初始化保留(已确认非根因,作为启动早期 SPI 减压无害)
|
||||
|
||||
### 验证
|
||||
|
||||
Reference in New Issue
Block a user