ZHDA203
June
2026
AM2752-Q1 , AM2754-Q1 , AM620-Q1 , AM623 , AM625 , AM625-Q1 , AM62A1-Q1 , AM62A3 , AM62A3-Q1 , AM62A7 , AM62A7-Q1 , AM62D-Q1 , AM62P , AM62P-Q1
-
1
-
摘要
-
商标
-
1简介
-
2坏块管理
- 2.1
块故障
- 2.2
修复坏块的可行性
-
3ROM 引导加载程序中的坏块管理
-
4TITM MCU+ SDK 中的坏块管理
- 4.1
闪存读取操作流程
- 4.2
闪存写入操作流程
- 4.3
闪存擦除操作流程
-
5TITM 处理器 SDK 中的坏块管理
- 5.1
闪存读取操作流程
- 5.2
闪存写入操作流程
- 5.3
闪存擦除操作流程
-
6总结
-
7参考资料
5.2 闪存写入操作流程
- PEB 分配:
- UBIFS 确定写入操作是否需要分配新的逻辑擦除块。
- UBI 从空闲树中分配一个物理擦除块,为实现磨损均衡,选择擦除次数较少的块。
- 写入前坏块检查:
- UBI 验证所选 PEB 是否未被标记为坏块。
- MTD 执行 BBT 查找以提取 2 位状态码。
- 若存在坏块,UBI 将该 PEB 从空闲树中移除,添加到错误树中,并选择另一个 PEB。
- 写入准备:
- UBI 准备数据并添加 UBI 标头:卷 ID、LEB 编号、序列号、数据 CRC、标头 CRC。
- MTD 调用控制器驱动程序的编程函数,并传入物理地址和数据缓冲区。
- 闪存编程操作:
- 驱动程序通过数据端口将数据加载到 NAND 芯片的页面缓冲区中。
- 驱动程序通过向控制器的命令寄存器写入数据来发出编程命令。
- 程序状态验证:
- 驱动器读取 NAND 状态寄存器检查 P-FAIL 位。
- P-FAIL = 0 表示编程操作成功,驱动程序返回成功。
- P-FAIL = 1 表示编程操作失败,驱动程序返回错误。
- 成功处理:
- 如果写入成功,UBI 会更新 LEB 到 PEB 映射表。
- UBI 会更新 PEB 的擦除计数并将 PEB 从空闲树移至已用树。
- 故障处理:
- 如果写入失败,UBI 会立即将该块标记为坏块:
- 通过将内存中 BBT 的状态从表示正常块的 00b 更改为表示运行时坏块的 01b,来更新内存中的 BBT。
- 将坏块标记 (0x00) 写入第一页的 OOB。
- UBI 从空闲树中删除失败的 PEB 并添加到错误树中。
- UBI 从空闲树中选择新的 PEB 并重试写入操作。