From 8e1cc26c5d2039533d5174fef2f37b5ce9b54598 Mon Sep 17 00:00:00 2001 From: Wanderingss <1624155937@qq.com> Date: Fri, 13 Nov 2026 16:20:30 +0800 Subject: [PATCH] =?UTF-8?q?fix(ftp):=20=E6=8E=A7=E5=88=B6=E9=80=9A?= =?UTF-8?q?=E9=81=93=E8=B6=85=E6=97=B6=E6=94=B9=E5=AD=97=E8=8A=82=E9=97=B4?= =?UTF-8?q?=E9=9A=94=E8=AF=AD=E4=B9=89=EF=BC=8C=E4=BF=9D=E6=B4=BB=20NOOP?= =?UTF-8?q?=20=E5=8F=AF=E7=BB=AD=E5=91=BD=E4=BC=9A=E8=AF=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - lftpd_inet_read_line 预算原为「整行总时长」:t0 只在入口置一次, 保活型客户端的零散短行会被 30s 总预算误掐,会话周期被关闭 - 改为任何字节到达即重置 t0(字节间隔超时);空闲回收语义不变, 零字节静默满预算仍判超时释放 - 台架 2026-11-13:FileZilla 下载失败三方互证闭环——MobaXterm 单连接成功、本地探针服务器捕获 FileZilla 第二条控制连接行为、 ftplib 主机侧下载/上传全过 - 编译 0 错误 0 警告(keil_build) --- Drivers/BSP/NET/lftpd/lftpd_inet.c | 6 ++++++ docs/内存管理/RAM使用分析与优化方案.md | 4 ++-- docs/内存管理/RAM预算台账.md | 2 +- scripts/ram_baseline.tsv | 2 +- scripts/size_attestation.json | 12 ++++++------ 5 files changed, 16 insertions(+), 10 deletions(-) diff --git a/Drivers/BSP/NET/lftpd/lftpd_inet.c b/Drivers/BSP/NET/lftpd/lftpd_inet.c index 759b5d60..66a128d8 100644 --- a/Drivers/BSP/NET/lftpd/lftpd_inet.c +++ b/Drivers/BSP/NET/lftpd/lftpd_inet.c @@ -162,6 +162,12 @@ int lftpd_inet_read_line(int socket, char *buffer, size_t buffer_len) } total_read_len += read_len; + /* 预算语义="字节间隔超时"而非"整行总时长":收到任何字节即证明对端 + * 存活,重置 t0。原形态下 t0 只在入口置一次,慢速/保活型客户端的零散 + * 短行会被 30s 总预算误掐(台架 2026-11-13:FileZilla 会话周期性 + * "control channel closed by peer (ret=-1)",NOOP 保活救不回来)。 + * 空闲回收语义不变:零字节静默满预算仍由 rem==0 判超时释放。 */ + t0 = xTaskGetTickCount(); char *p = strstr(buffer, "\r\n"); if (p != NULL) { diff --git a/docs/内存管理/RAM使用分析与优化方案.md b/docs/内存管理/RAM使用分析与优化方案.md index 011494a0..d49d2729 100644 --- a/docs/内存管理/RAM使用分析与优化方案.md +++ b/docs/内存管理/RAM使用分析与优化方案.md @@ -47,10 +47,10 @@ dhara 失败类 +84;RO 另 +208,全是该失败类名表)→ `ER_IROM1` | 区域 | 用量 | 容量 | 占比 | |---|---|---|---| -| ER_IROM1 | 287,964 B (281.21 KB) | 1,048,576 B (1024 KB) | 27.5% | +| ER_IROM1 | 287,968 B (281.22 KB) | 1,048,576 B (1024 KB) | 27.5% | | RW_IRAM1 | 97,024 B (94.75 KB) | 131,072 B (128 KB) | 74.0% | | RW_CCM | 57,376 B (56.03 KB) | 65,280 B (64 KB) | 87.9% | -| **Flash (ROM 合计)** | **290,044 B (283.2 KB)** | 1,048,576 B (1024 KB) | **27.7%** | +| **Flash (ROM 合计)** | **290,048 B (283.2 KB)** | 1,048,576 B (1024 KB) | **27.7%** | 各区的容量与常量来源: diff --git a/docs/内存管理/RAM预算台账.md b/docs/内存管理/RAM预算台账.md index e9b0430b..d904c77b 100644 --- a/docs/内存管理/RAM预算台账.md +++ b/docs/内存管理/RAM预算台账.md @@ -15,7 +15,7 @@ | 区域 | 用量 | 容量 | 占比 | 门禁(≤92%) | |---|---|---|---|---| -| ER_IROM1 (Flash) | 287,964 B | 1,048,576 B | 27.5% | 参考 | +| ER_IROM1 (Flash) | 287,968 B | 1,048,576 B | 27.5% | 参考 | | RW_CCM | 57,376 B | 65,280 B | 87.9% | PASS | | UNINIT_CCM | 48 B | 256 B | 18.8% | 参考 | | RW_IRAM1 | 97,024 B | 131,072 B | 74.0% | PASS | diff --git a/scripts/ram_baseline.tsv b/scripts/ram_baseline.tsv index 0abfdea3..9fc1fecb 100644 --- a/scripts/ram_baseline.tsv +++ b/scripts/ram_baseline.tsv @@ -21,4 +21,4 @@ date code ro rw zi er_irom1 er_pct iram1 iram1_pct ccm ccm_pct top_rwzi 2026-11-09 255160 31204 2080 152152 286364 27.3 96808 73.9 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;nand_ftl.o=8288;lftpd.o=7884;ui_net_sink.o=6802;ui_port.o=6432;wave_ring.o=5296;sb_link.o=4376;ch395f.o=4162;console_log.o=4132 2026-11-10 255160 31204 2080 152152 286364 27.3 96808 73.9 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;nand_ftl.o=8288;lftpd.o=7884;ui_net_sink.o=6802;ui_port.o=6432;wave_ring.o=5296;sb_link.o=4376;ch395f.o=4162;console_log.o=4132 2026-11-11 256024 31760 2080 152368 287784 27.4 97024 74.0 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;nand_ftl.o=8288;lftpd.o=7884;ui_net_sink.o=6802;ui_port.o=6432;wave_ring.o=5332;sb_link.o=4376;ch395f.o=4162;console_log.o=4132 -2026-11-13 256200 31764 2080 152368 287964 27.5 97024 74.0 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;nand_ftl.o=8288;lftpd.o=7884;ui_net_sink.o=6802;ui_port.o=6432;wave_ring.o=5332;sb_link.o=4376;ch395f.o=4162;console_log.o=4132 +2026-11-13 256204 31764 2080 152368 287968 27.5 97024 74.0 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;nand_ftl.o=8288;lftpd.o=7884;ui_net_sink.o=6802;ui_port.o=6432;wave_ring.o=5332;sb_link.o=4376;ch395f.o=4162;console_log.o=4132 diff --git a/scripts/size_attestation.json b/scripts/size_attestation.json index 868cf8a6..8df6f1fe 100644 --- a/scripts/size_attestation.json +++ b/scripts/size_attestation.json @@ -1,15 +1,15 @@ { - "built_at": "2026-11-13T11:25:00+08:00", - "fingerprint": "39f4f69a673f97c33cc59b301e723ec8f1e03686f4556ac6abb1a5a6cd438796", + "built_at": "2026-11-13T16:20:25+08:00", + "fingerprint": "3c4a1381e6e0306968e2a4ce03a2d25fd72f65a7262234e7e15703599301a54d", "fingerprint_files": 1479, "fingerprint_source": "git-index", "gated_regions": [ "RW_IRAM1", "RW_CCM" ], - "git_head": "7c505b2457d977adf7750abbb841b0453fd6bfb9", + "git_head": "40a2816a9971928d1ca6fa218921b86dae79bd63", "map": "MDK-ARM/STM32F407-Demo/STM32F407-Demo.map", - "map_mtime": 1794540294, + "map_mtime": 1794550493, "pct": { "ER_IROM1": 27.46, "RW_CCM": 87.89, @@ -19,7 +19,7 @@ "regions": { "ER_IROM1": { "max": 1048576, - "size": 287964 + "size": 287968 }, "RW_CCM": { "max": 65280, @@ -37,7 +37,7 @@ "schema": 2, "scope_note": "\u540c\u7801\u51ed\u8bc1\uff1a\u6307\u7eb9\u8986\u76d6\u56fa\u4ef6\u4f53\u79ef\u76f8\u5173\u6e90\u7801\uff0c\u53e3\u5f84\u89c1\u672c\u811a\u672c docstring", "sizes": { - "code": 256200, + "code": 256204, "ro_data": 31764, "rw_data": 2080, "zi_data": 152368