From 046097918da640578640f0f5175015682a585d5d Mon Sep 17 00:00:00 2001 From: super_agent_bot Date: Mon, 2 Nov 2026 18:21:34 +0800 Subject: [PATCH] =?UTF-8?q?fix(ui/wave):=20=E5=9B=9E=E6=94=BE=E9=A1=B5?= =?UTF-8?q?=E5=88=87=E9=80=9A=E9=81=93/=E5=88=87=E6=AE=B5=E5=90=8E?= =?UTF-8?q?=E4=B8=8D=E9=87=8D=E7=BB=98=E2=80=94=E2=80=94key=5Fcb=20?= =?UTF-8?q?=E6=8E=A5=E7=AE=A1=E9=94=AE=E5=90=8E=E8=A1=A5=E5=A4=B1=E6=95=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 回放页 v1.0 建的键处理返回 true(接管全部键),但从未调 ui_content_page_invalidate():框架只在 key_cb 返回 false 时才替页面 失效,于是「键送达、状态已切、屏上纹丝不动」。该病被枚举缺陷完全 遮住(整页恒空、没有可切的画面),随本波枚举修复首次上板才暴露: 真机按 ←/→/↑/↓ 帧字节完全不变(同帧哈希),布局与状态机无问题。 - 上/下切通道、左/右切段成功路径、空态再探路径,各补一次 ui_content_page_invalidate()(与 ui_page_clock / ui_page_password 等已接管键的页面同纪律); - 切段失败仍保持「按了没动」的诚实语义(不重绘、不把忙态清成空); - 修改记录 v1.1。 /keil-build 0 错误 0 警告(Code 247,288 B,+4 B),RAM 不变; 台账 / 同码凭证同批刷新。 Refs #38 --- Drivers/BSP/UI/ui_page_wave_play.c | 10 ++++++++++ docs/内存管理/RAM使用分析与优化方案.md | 4 ++-- docs/内存管理/RAM预算台账.md | 2 +- scripts/ram_baseline.tsv | 2 +- scripts/size_attestation.json | 12 ++++++------ 5 files changed, 20 insertions(+), 10 deletions(-) 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