diff --git a/Drivers/BSP/UI/ui_page_wave_play.c b/Drivers/BSP/UI/ui_page_wave_play.c index 2f7258b6..f72aa4a0 100644 --- a/Drivers/BSP/UI/ui_page_wave_play.c +++ b/Drivers/BSP/UI/ui_page_wave_play.c @@ -29,6 +29,10 @@ * 创建日期:2026-10-29 * 修改记录: * v1.0 2026-10-29 DTU 项目组 创建(故障录波道 UI 侧) + * v1.1 2026-11-02 DTU 项目组 按键切通道/切段补 ui_content_page_invalidate: + * 本页 key_cb 返回 true(接管键),框架不再替本页失效重绘,状态变了 + * 屏上却纹丝不动——该病在枚举修复前整页恒空、从未有键可切,故随 + * 2026-11-02 回放页修复首次上板才暴露(真机实证见 PR #67)。 */ /* 头文件包含区 */ @@ -394,11 +398,16 @@ static bool pg_key(lv_key_t a_key) { s_state = (rc == UI_WAVE_BAD) ? WP_ST_BAD : WP_ST_IDLE; } } + /* 状态已变必须显式失效:框架只在 key_cb 返回 false 时自己 invalidate, + * 本页接管了键(true),不失效就永远画旧画面(2026-11-02 真机实证: + * 键送达、状态已切、屏上纹丝不动——该病随枚举修复首次上板才暴露) */ + ui_content_page_invalidate(); return true; case LV_KEY_LEFT: case LV_KEY_RIGHT: if (s_state == WP_ST_IDLE) { wp_ensure(); /* 空态下按左右 = 再探一次盘(新段可能已落) */ + ui_content_page_invalidate(); return true; } rc = (a_key == LV_KEY_RIGHT) ? ui_data_wave_seg_next(s_idx, &next) @@ -407,6 +416,7 @@ static bool pg_key(lv_key_t a_key) { s_idx = next; s_state = WP_ST_IDLE; /* 先回空态再载,坏段不会留着旧画面 */ wp_load_seg(); + ui_content_page_invalidate(); /* 理由同上:切段成功要重绘 */ } return true; default: diff --git a/docs/内存管理/RAM使用分析与优化方案.md b/docs/内存管理/RAM使用分析与优化方案.md index 4532eee0..384ca921 100644 --- a/docs/内存管理/RAM使用分析与优化方案.md +++ b/docs/内存管理/RAM使用分析与优化方案.md @@ -47,10 +47,10 @@ dhara 失败类 +84;RO 另 +208,全是该失败类名表)→ `ER_IROM1` | 区域 | 用量 | 容量 | 占比 | |---|---|---|---| -| ER_IROM1 | 277,120 B (270.62 KB) | 1,048,576 B (1024 KB) | 26.4% | +| ER_IROM1 | 277,124 B (270.63 KB) | 1,048,576 B (1024 KB) | 26.4% | | RW_IRAM1 | 94,336 B (92.12 KB) | 131,072 B (128 KB) | 72.0% | | RW_CCM | 57,376 B (56.03 KB) | 65,280 B (64 KB) | 87.9% | -| **Flash (ROM 合计)** | **279,172 B (272.6 KB)** | 1,048,576 B (1024 KB) | **26.6%** | +| **Flash (ROM 合计)** | **279,176 B (272.6 KB)** | 1,048,576 B (1024 KB) | **26.6%** | 各区的容量与常量来源: diff --git a/docs/内存管理/RAM预算台账.md b/docs/内存管理/RAM预算台账.md index 7d9a9c14..88460cfc 100644 --- a/docs/内存管理/RAM预算台账.md +++ b/docs/内存管理/RAM预算台账.md @@ -15,7 +15,7 @@ | 区域 | 用量 | 容量 | 占比 | 门禁(≤92%) | |---|---|---|---|---| -| ER_IROM1 (Flash) | 277,120 B | 1,048,576 B | 26.4% | 参考 | +| ER_IROM1 (Flash) | 277,124 B | 1,048,576 B | 26.4% | 参考 | | RW_CCM | 57,376 B | 65,280 B | 87.9% | PASS | | UNINIT_CCM | 48 B | 256 B | 18.8% | 参考 | | RW_IRAM1 | 94,336 B | 131,072 B | 72.0% | PASS | diff --git a/scripts/ram_baseline.tsv b/scripts/ram_baseline.tsv index 84fff98c..9a098a17 100644 --- a/scripts/ram_baseline.tsv +++ b/scripts/ram_baseline.tsv @@ -14,4 +14,4 @@ date code ro rw zi er_irom1 er_pct iram1 iram1_pct ccm ccm_pct top_rwzi 2026-10-29 238936 29140 1932 141396 268076 25.6 85904 65.5 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;lftpd.o=7884;ui_net_sink.o=6770;ui_port.o=6420;nand_ftl.o=6216;sb_link.o=4364;ch395f.o=4162;console_log.o=4132;sys_log_mcu.o=4055 2026-10-29 243552 28784 1972 145388 272336 26.0 89936 68.6 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;lftpd.o=7884;ui_net_sink.o=6770;ui_port.o=6420;nand_ftl.o=6216;wave_ring.o=5296;ch395f.o=4162;console_log.o=4132;sys_log_mcu.o=4055 2026-10-30 246720 29836 2052 149708 276556 26.4 94336 72.0 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;lftpd.o=7884;ui_net_sink.o=6770;ui_port.o=6432;nand_ftl.o=6216;wave_ring.o=5296;sb_link.o=4376;ch395f.o=4162;console_log.o=4132 -2026-11-02 247284 29836 2052 149708 277120 26.4 94336 72.0 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;lftpd.o=7884;ui_net_sink.o=6770;ui_port.o=6432;nand_ftl.o=6216;wave_ring.o=5296;sb_link.o=4376;ch395f.o=4162;console_log.o=4132 +2026-11-02 247288 29836 2052 149708 277124 26.4 94336 72.0 57376 87.9 heap_4.o=57376;lv_mem_core_builtin.o=16384;lftpd.o=7884;ui_net_sink.o=6770;ui_port.o=6432;nand_ftl.o=6216;wave_ring.o=5296;sb_link.o=4376;ch395f.o=4162;console_log.o=4132 diff --git a/scripts/size_attestation.json b/scripts/size_attestation.json index faf6d720..730deffa 100644 --- a/scripts/size_attestation.json +++ b/scripts/size_attestation.json @@ -1,15 +1,15 @@ { - "built_at": "2026-11-02T18:06:44+08:00", - "fingerprint": "a7a328b45a3ff91fcb9138b919662e893dd8cb9a0a1b080afa7b57d663f7a4de", + "built_at": "2026-11-02T18:21:27+08:00", + "fingerprint": "a4435f138bc6dc5fe18779977ec5a2515e15e72ceeecb9653ce2930b640e71c2", "fingerprint_files": 1466, "fingerprint_source": "git-index", "gated_regions": [ "RW_IRAM1", "RW_CCM" ], - "git_head": "3e01e9d98e0690e949510f569a502192542492d0", + "git_head": "d6253aa974f4357779d0a94ff24ba66a58abf094", "map": "MDK-ARM/STM32F407-Demo/STM32F407-Demo.map", - "map_mtime": 1793613913, + "map_mtime": 1793614877, "pct": { "ER_IROM1": 26.43, "RW_CCM": 87.89, @@ -19,7 +19,7 @@ "regions": { "ER_IROM1": { "max": 1048576, - "size": 277120 + "size": 277124 }, "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": 247284, + "code": 247288, "ro_data": 29836, "rw_data": 2052, "zi_data": 149708