feat(lcd): use Montserrat clock and battery icon assets

This commit is contained in:
chenjintao
2026-10-10 10:12:11 +08:00
parent 22f5ac70a2
commit bf06618848
31 changed files with 970 additions and 187 deletions
+50 -6
View File
@@ -2,8 +2,9 @@
## 范围、日期与计量口径
这是 2026-10-09 lucky-cat 工作区的只读核对快照;采集时包含尚未提交的 listening
素材以及两个未跟踪的历史待机 C 资产。它不是构建输入或自动生成的实时报告。
这是 2026-10-09 lucky-cat 工作区的核对快照;初始采集时 listening 素材尚未提交,
两个历史待机 C 资产未跟踪;本次已追加 HUD 字形/电池素材及构建结果。
它不是构建输入或自动生成的实时报告。
新增、替换、移出固件或经授权清理资产时,应同步更新此表及指南。
范围包含平台图片/图层/音频、生成 GFX C 文件、旧音频副本、领域内嵌网页和项目
@@ -33,7 +34,7 @@
| 领域网页资源 | 1 | 5,373 | 8,192 | user_config.html 单独 EMBED_TXTFILES,不在素材包 |
| 文档中的独立显示预览 | 2 | 98,302 | 102,400 | 仅电脑预览,不入固件 |
以下同名文件跨目录是不同用途,不应直接合并或重复计入 Flash。当前没有独立中文字体包;数字 HUD 使用代码内置点阵,不意味着已支持任意中文字形。
以下同名文件跨目录是不同用途,不应直接合并或重复计入 Flash。当前没有独立中文字体包;时间 HUD 已改为 Montserrat 14 数字子集,电量仅显示素材图标,不意味着已支持任意中文字形。
## 原始 LCD 图片
@@ -358,8 +359,8 @@
| 包头、条目头及名称 | 3,222 | 打包元数据 |
| platform_assets.pack | 820,125 | 上述三项之和,包含于应用 |
| 六份在用 RLE 载荷 | 69,512 | 独立 C 数组链接入应用,不在素材包内 |
| 应用镜像 | 3,094,176 | 已包含 PNG、Opus、RLE、网页、代码及其他链接数据 |
| 单个 OTA 槽 | 4,718,592 | 应用余量 1,624,416 字节;不能把两个槽余量合并供一次 OTA 使用 |
| 应用镜像 | 3,105,872 | HUD 更新后的本次构建,包含 PNG、Opus、RLE、网页、代码及其他链接数据 |
| 单个 OTA 槽 | 4,718,592 | 应用余量 1,612,720 字节;不能把两个槽余量合并供一次 OTA 使用 |
| 独立语音模型镜像 | 2,681,351 | model 分区容量 3,145,728 字节,不属于应用内图片包 |
文件总大小不能当作“当前整个 Flash 用量”;NVS、分区表、引导程序、模型和
@@ -375,6 +376,49 @@ RGB565+A8 像素共 255,528 字节,新 RLE 载荷共 50,176 字节。相对原
常驻像素共 423,234 字节;初始化额外关键图 167,706 字节,随后释放。
当前没有新增 DMA 暂存区、合成缓冲或任务。它是用户已接受的空间换流畅度方案。
## 新增时间字形与电池图标(2026-10-09 HUD 更新)
素材来自用户提供的 `battery_icons.zip`,只导入 `out/40x20/` 中明确列出的十张 PNG,
80×40 版本不入工程。源图与优化 PNG 均不加入 `platform_assets.pack`,避免重复计费;
实际链接生成的 C 只读数组。以下新增项不包含在上面的旧目录汇总里。
| 源图名称 | 原 PNG 字节 | 优化 PNG 字节 | 调色板+游程载荷字节 |
| --- | ---: | ---: | ---: |
| `battery_1.png` | 704 | 687 | 805 |
| `battery_25.png` | 815 | 800 | 995 |
| `battery_50.png` | 594 | 571 | 927 |
| `battery_75.png` | 601 | 574 | 919 |
| `battery_100.png` | 543 | 524 | 806 |
| `battery_charging_1.png` | 1,206 | 1,197 | 1,300 |
| `battery_charging_25.png` | 1,367 | 1,344 | 1,500 |
| `battery_charging_50.png` | 1,333 | 1,319 | 1,363 |
| `battery_charging_75.png` | 1,451 | 1,437 | 1,477 |
| `battery_charging_100.png` | 1,359 | 1,353 | 1,350 |
| 合计 | 9,973 | 9,806 | 11,442 |
源 PNG:`components/platform/assets/status_hud/battery_source/`,十文件分配空间共
40,960 B;优化 PNG:同目录 `battery_optimized/`,十文件分配空间共 40,960 B。
颜色先按现有 RGB565 精度转换,完整保留 A8;调色板编码对 RGB565+A8 无损,
不等于 RGB888 转 RGB565 无损。游程往返与 PNG 优化像素一致性由生成脚本验证。
十图标原始 RGB565+A8 为 24,000 B,索引游程为 11,442 B,减少约 52.3%;
但比优化 PNG 大 1,636 B。这里选的是无需运行时解码缓存的折中,不是最小文件编码。
时间字形来自已安装 LVGL 的 `lv_font_montserrat_14.c`,只提取数字、冒号、横线,
4-bit Alpha 位图 425 B,十二个描述共 96 B(ESP32-S3 对象验证),原始字号不放大。
许可说明保留在 `status_hud/LVGL-LICENSE.txt`(不入固件)。
生成脚本 `tools/prepare_status_hud_assets.py`,验证用 `--check`;输入字体版本/格式
变化会触发断言,不能静默生成错误字形。
实际编译 `components/platform/src/generated/lcd_status_assets.c`:文本文件 75,630 B,
目标对象只读载荷 12,083 B,包括 425 B 字形、96 B 字形描述、11,442 B 图标数据、
120 B 图标描述;目标对象可写 data/BSS 为 0。它不属于上面的六份表情 RLE。
PNG 包仍为 820,125 B、75 PNG/32 Opus;只读资产已包含于整个应用,不再重复相加。
完整应用从 3,094,176 B 增至 3,105,872 B,净增 11,696 B(包含旧字形/绘制代码
移除和段对齐变化),OTA 槽剩余 1,612,720 B。新增常驻/初始化像素 PSRAM、普通堆、
内部/DMA 专用缓冲及静态可写数据均为 0;复用既有 HUD 和行缓冲。
局部栈、CPU 耗时和设备最低内存尚未新增实机测量,不应写成整体资源零成本。
## 维护与后续清理
1. PNG 新增/替换按 [图片优化流程](lcd-image-asset-optimization.zh-CN.md) 生成并验证,
@@ -385,4 +429,4 @@ RGB565+A8 像素共 255,528 字节,新 RLE 载荷共 50,176 字节。相对原
GFX 关闭/故障后备以及收益,经过用户确认并完成迁移验收后再修改构建及资源表。
4. 清理优先区分“不再入固件”与“删除可编辑源文件”。前者有 Flash 收益,后者
可能仅省开发机空间,不能混为一谈。保留 Git 可恢复记录,并验证正常/故障路径。
5. 这里没有安排立即清理、批量迁移所有表情或新增字体;这些需要单独确定范围。
5. 这里没有安排立即清理、批量迁移所有表情或加入完整字库;当前仅按用户要求提取 Montserrat 数字子集。