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.   摘要
  3.   商标
  4. 1简介
  5. 2坏块管理
    1. 2.1 块故障
    2. 2.2 修复坏块的可行性
  6. 3ROM 引导加载程序中的坏块管理
  7. 4TITM MCU+ SDK 中的坏块管理
    1. 4.1 闪存读取操作流程
    2. 4.2 闪存写入操作流程
    3. 4.3 闪存擦除操作流程
  8. 5TITM 处理器 SDK 中的坏块管理
    1. 5.1 闪存读取操作流程
    2. 5.2 闪存写入操作流程
    3. 5.3 闪存擦除操作流程
  9. 6总结
  10. 7参考资料

闪存写入操作流程

  1. PEB 分配:
    1. UBIFS 确定写入操作是否需要分配新的逻辑擦除块。
    2. UBI 从空闲树中分配一个物理擦除块,为实现磨损均衡,选择擦除次数较少的块。
  2. 写入前坏块检查:
    1. UBI 验证所选 PEB 是否未被标记为坏块。
    2. MTD 执行 BBT 查找以提取 2 位状态码。
    3. 若存在坏块,UBI 将该 PEB 从空闲树中移除,添加到错误树中,并选择另一个 PEB。
  3. 写入准备:
    1. UBI 准备数据并添加 UBI 标头:卷 ID、LEB 编号、序列号、数据 CRC、标头 CRC。
    2. MTD 调用控制器驱动程序的编程函数,并传入物理地址和数据缓冲区。
  4. 闪存编程操作:
    1. 驱动程序通过数据端口将数据加载到 NAND 芯片的页面缓冲区中。
    2. 驱动程序通过向控制器的命令寄存器写入数据来发出编程命令。
  5. 程序状态验证:
    1. 驱动器读取 NAND 状态寄存器检查 P-FAIL 位。
    2. P-FAIL = 0 表示编程操作成功,驱动程序返回成功。
    3. P-FAIL = 1 表示编程操作失败,驱动程序返回错误。
  6. 成功处理:
    1. 如果写入成功,UBI 会更新 LEB 到 PEB 映射表。
    2. UBI 会更新 PEB 的擦除计数并将 PEB 从空闲树移至已用树。
  7. 故障处理:
    1. 如果写入失败,UBI 会立即将该块标记为坏块:
      1. 通过将内存中 BBT 的状态从表示正常块的 00b 更改为表示运行时坏块的 01b,来更新内存中的 BBT。
      2. 将坏块标记 (0x00) 写入第一页的 OOB。
    2. UBI 从空闲树中删除失败的 PEB 并添加到错误树中。
    3. UBI 从空闲树中选择新的 PEB 并重试写入操作。