跳转至

Issue #8:文件列表低内存修复(v0.5.8-wip.3)

这是预发布修复候选,仍需受影响硬件复测。下载 wip.3。 官网常规 latest 下载链接会跟随最新正式版;如需复现这个特定的 v0.5.8-wip.3 测试候选,请使用上面的固定标签页面。

新日志证明了什么

日志明确显示运行的是 v0.5.8-wip.2。可用堆从 74 KB 降至 57 KB、37 KB、18 KB, 随后发生 StoreProhibited 非法写入,EXCVADDR=0x000000f8,并非只有看门狗超时。 日志中的 BSP 标识是普通 2432S028R,截图却指向 PLUS 包。两者需要核对, 但不能因此把这次反馈当作“只测了旧版本”。

旧修复只控制每批建多少行、最多显示多少行,接收/解析/数组分配仍覆盖全量文件; 100 行控件也未必能放进小内存 ESP32。此前主机测试在新增 UI 内存限制为 50 KB 时仍能卡住。 这证明旧保护不足,但没有 wip.2 对应的精确 ELF,不能用其他版本的符号表强行认定此次 PC 的源码位置。

本次改动

  • ESP32 通过独立 HTTP 任务每次读取 512 字节,不再经过全量 WebSocket 缓冲、整棵 JSON 树和多次复制。
  • 逐条解析,固定只保留一页 8 条记录;界面复用 8 行,底部提供上一页、下一页和刷新。
  • 每次翻页重新请求,不缓存整份列表;服务器增删文件时,跨页位置可能变化。
  • 网络任务不调用 LVGL、不分配异步 UI 定时器;界面主动取结果,离页取消,旧响应不能覆盖新请求。
  • 超时不再依赖打印机状态推送。低内存时拒绝启动请求,为系统保留余量;失败复用现成提示控件。
  • 去掉文件名循环滚动动画;wip CI 保留各板精确 ELF 调试符号 30 天,供后续解码。

当前边界:单次应答 8 MiB、单条记录 1 KiB、有限嵌套,任务约 20 秒、界面 25 秒超时。 超限、残缺、畸形应答安全失败,不继续创建列表行。超过现有打印接口 95 字节上限的文件路径会跳过, 页码后以 * 标记;不会静默截断后误操作另一个文件。超长命名或超过这些边界的列表仍需整理。 没有假定服务器提供分页参数,分页是客户端在流式读取时选择当前页。

回家复测

  1. 从预发布页面下载。普通板选 ESP-IDFv5.5-cyd_2432s028r.zip; PLUS/ST7789 板选 ESP-IDFv5.5-cyd_2432s028r_plus.zip,以实体屏幕型号为准。
  2. 开机日志确认 App version: v0.5.8-wip.3,并核对 BSP ready 板型。
  3. 在文件很多的打印机上进入列表,连续翻页、返回、再次进入;确认界面能响应、文件详情对应正确。 仅验证浏览,不需要实际开始打印。
  4. 加载时断开网络,确认仍可返回、失败后可刷新;恢复网络后重试。
  5. 反馈版本、板型、文件数、files: page offset=... 日志;若重启,请附完整 Backtrace。 日志先去掉 Wi-Fi 密码和 API key。

开发检查:桌面构建后运行 powershell -File tools/test-file-list.ps1,覆盖任意分片、 千/万条记录、分配失败、异常应答、实际 LVGL 分页与页面生命周期。 主机内存测量不等于 ESP32 实测;CI 全绿也不等于硬件已验收。受影响设备复测通过前,issue #8 不关闭。