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. UBIFS 接收来自应用程序的读取请求,并将文件偏移量转换为逻辑擦除块 (LEB) 编号。
    2. UBI 查询其 LEB 到 PEB 的映射表,以确定哪个物理擦除块包含所请求的数据。
    3. UBI 通过将 PEB 编号乘以擦除块大小,再加页面偏移量,来计算物理闪存地址。
  2. 坏块检查:
    1. 在访问物理闪存之前,UBI 会验证目标 PEB 是否未被标记为坏块。
    2. MTD 层访问内存中的坏块表格,计算字节偏移量和位的位置。
    3. 提取 2 位状态码。
  3. 闪存读取执行:
    1. 如果块正常,MTD 将使用物理地址调用 NAND 控制器驱动程序的读取功能。
    2. 控制器驱动程序使用闪存地址对硬件寄存器进行编程并发出读取命令。
    3. NAND 闪存芯片将页面读入其内部缓冲区,并将数据传输到系统内存。
  4. ECC 处理:
    1. ECC 引擎处理从 OOB 区域接收到的数据和 ECC 奇偶校验字节。
    2. 该引擎执行综合码计算以检测位错误。
    3. 如果错误在纠错能力范围内,则引擎会纠错,读取成功。
    4. 如果错误超出纠错能力,则读取失败,该块被标记为坏块。
  5. 完成:
    1. 有效数据从 MTD -> UBI -> UBIFS -> 应用程序依次传输。
    2. UBI 会验证标头中的序列号和 CRC 值。
    3. 如果出现不可校正的错误,在处理错误时会尝试从备用副本中恢复数据,或向应用程序返回 I/O 错误。