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. 擦除请求背景:
    1. UBI 磨损均衡算法在以下情况下触发擦除操作:
      1. 垃圾回收:回收包含过时数据的块。
      2. 磨损均衡:移动数据以均衡擦除次数的分布。
      3. 块回收:准备已用块以供重新分配。
    2. UBI 根据磨损均衡标准选择待擦除的块。
  2. 擦除前检查坏块:
    1. UBI 使用目标 PEB 编号查询坏块表格。
    2. MTD 执行 BBT 查找,提取 2 位状态码。
    3. 如果该块已被标记为坏块,则 UBI:
      1. 完全跳过擦除操作。
      2. 从当前树中删除 PEB。
      3. 将 PEB 添加到错误树中。
      4. 如果操作需要继续,则选择另一个块。
  3. 闪存擦除执行:
    1. 如果块正常,UBI 会使用块的物理地址调用 MTD 擦除函数。
    2. MTD 调用控制器驱动程序的擦除函数。
    3. 然后,驱动器使用块地址对地址寄存器进行编程,并向控制器的命令寄存器发出擦除命令。
  4. 擦除完成和状态检查:
    1. 驱动程序轮询就绪/繁忙状态线路或读取状态寄存器,等待操作完成。
    2. 完成后,驱动程序读取状态寄存器以检查 E-FAIL 位。
    3. E-FAIL = 0 表示擦除操作成功,驱动程序返回成功。
    4. E-FAIL = 1 表示擦除失败,驱动程序返回错误。
  5. 擦除成功处理:
    1. 如果擦除成功:
      1. UBI 会在跟踪结构中递增 PEB 的擦除计数。
      2. UBI 将已擦除的 PEB 移至空闲树,使其可供分配。
      3. 该块现在处于干净的擦除状态,所有页面均可用于编程。
  6. 擦除失败处理:
    1. 如果擦除失败:
      1. UBI 会更新内存中的 BBT。
      2. 坏块标记 (0x00,0x00) 将写入第一页的 OOB 区域。
      3. 更新 UBI 数据结构:
        1. 故障 PEB 将从当前树中删除。
        2. 故障 PEB 被添加到错误树中。
        3. 器件容量会更新,反映可用 PEB 减少一个。
    2. 如果擦除是正在进行的操作的一部分,UBI 将选择另一个块并继续操作。