Skip to content

重构 BBK9588 JZ4740 设备模型与 NAND 持久化路径 - #1

Merged
HelloClyde merged 9 commits into
mainfrom
codex/jz4740-ftl-fault-injection
Jul 13, 2026
Merged

HelloClyde merged 9 commits into
mainfrom
codex/jz4740-ftl-fault-injection

Conversation

@HelloClyde

Copy link
Copy Markdown
Owner

概要

  • 将 BBK9588/JZ4740 的 INTC、CPM、DMAC、TCU、LCD、panel、SADC、GPIO、RTC、EMC、raw NAND、UART、UDC、MSC、CIM 等硬件拆分为独立 QOM device。
  • 将 Web/QEMU 存储路径收敛为唯一活动 raw NAND,删除 persistent/disposable work copy、canonical checkpoint 和运行期 FAT/FTL host 兼容路径。
  • 还原 U-Boot/C200 FTL cold-scan、last-valid-page、commit tail 和 16-bit sequence 规则,并加入 ECC、镜像审计、掉电快照和 program/erase failure 测试工具。
  • 将 frame/audio/perf 输出、input chardev parser 和诊断 recorder 分别迁移到独立 host bridge、host input 和无 MMIO 的 bbk9588-diag。
  • 更新 Web 生命周期、发布工具、架构文档和 jz4740-qemu-remodel-plan.md。

原因

原 machine 文件同时持有 SoC 寄存器、板级接线、host I/O、诊断状态和临时存储兼容逻辑,难以继续核对 JZ4740 手册,也容易让异常退出后的 NAND 数据依赖 host 提交。该改造让 guest 固件直接管理 raw NAND/FTL,并把设备状态、板级 wiring 与 host transport 分层。

用户影响

  • 应用写入直接落入活动 NAND,正常停止、QEMU 崩溃或 Web 强退后不需要额外 checkpoint 提交。
  • 显示、按键、触摸、音频和 Web 性能指标继续使用现有接口。
  • 默认虚拟 NAND 不注入坏块或 program/erase failure;故障属性仅用于恢复测试。
  • storage-trace 等诊断开关默认关闭,不改变正常 guest 路径。

验证

  • Windows QEMU 11.0.0 overlay 对象编译和 sidecar 链接通过。
  • 224 项非音频测试通过,31 项按环境跳过。
  • panel/LCD、NAND/EMC、MSC、CIM 等 MMIO qtest 通过。
  • 标准 528 MiB raw NAND 冷启动约 3.5 秒收到 3 个非空帧。
  • key/touch down/up 共 4 次输入全部进入 chardev,frame/input error 为空。
  • 开启 storage trace 后,诊断 RAM 实测 storage sequence 和 input ring 记录。
  • 音频路径已由用户在 Web、Chrome 和 iOS 环境验收,本轮未重复音频测试。

后续

  • 继续覆盖多 logical transaction、垃圾回收、sequence wrap 和物理故障下的 guest FTL 恢复。
  • 继续收敛 touch/progress/graphics 诊断、剩余 DMA corner case、PM 和 USB packet transport。

@HelloClyde
HelloClyde marked this pull request as ready for review July 13, 2026 10:15
@HelloClyde
HelloClyde merged commit 2746009 into main Jul 13, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant