feat(platform): migrate LCD assets to PNG and expand flash partitions

This commit is contained in:
chenjintao
2026-08-10 16:04:23 +08:00
parent 42187ba21d
commit d9660164a6
105 changed files with 10103 additions and 527 deletions
+1 -1
View File
@@ -192,7 +192,7 @@ flowchart LR
PlatformReq["platform_lcd_request_presentation()"]
Pending["lcd_direct pending request"]
Render["cp_lcd_render loop"]
Draw["draw RLE asset frame\nfrom /littlefs/lcd"]
Draw["decode PNG asset frame\nfrom /littlefs/lcd"]
Panel["ST7789 panel"]
CP --> DomainReq --> Resolve --> Catalog --> PlatformReq --> Pending --> Render --> Draw --> Panel
+9 -7
View File
@@ -62,16 +62,18 @@ Transport disconnect/error events are not server error expressions.
## Asset Migration Direction
The target image playback path is a platform-owned direct LCD asset pipeline.
The reference project at `D:\Code\chaowan\lcd(1)\lcd` uses compiled RLE image
arrays plus a small decoder/write path. When this is ported:
The image playback path is a platform-owned direct LCD asset pipeline. Runtime
PNG files are stored in the `gifpack` LittleFS partition, decoded through
`lodepng`, converted to RGB565 in PSRAM, and written to the ST7789 panel through
the existing bounded row-transfer buffer.
- RLE decode and ST7789 writes stay inside `platform`.
- PNG decode, the bounded four-entry LRU cache, and ST7789 writes stay inside
`platform`.
- Domain continues to map semantic expressions to short asset IDs or names.
- Upper layers continue to use `domain_runtime_request_expression()`.
- Large image data should not be blindly compiled into the app if it risks
exceeding the OTA partition; prefer partition-backed resources for large
frame sets.
- Runtime LCD assets must be added to the explicit PNG allowlist in
`components/platform/CMakeLists.txt`; files that only exist in the source
directory are not packaged automatically.
## Requesting Expressions