将UBIFS分区复制到NAND设备

时间:2014-09-30 21:50:32

标签: linux u-boot ubifs

我在SLC NAND上有一个带u-boot和UBIFS分区的工作系统。

我已经通过读取它占据的整个块区域(包括备用区域)将UBIFS分区复制到二进制图像文件中。

我可以将此图像成功编程到另一个NAND设备(跳过空白页面)并安装它,从而复制分区。 但是,如果在新的NAND设备中存在坏块,我不知道什么是正确的操作?

当我尝试跳过坏块(在编程期间),这似乎是最合理的解决方案,从u-boot安装失败! UBIFS挂载进程无法识别是否跳过坏块? 还有其他简单的解决方案吗?

1 个答案:

答案 0 :(得分:0)

找到了一种工作方法!

这样做的目的是找到一个简单的算法来编程NAND闪存部件,然后再将其焊接到电路板上。

这是在编程机器批量生产期间完成的,并且没有办法使用Linux来做到这一点。由于NAND部分是新的,不需要磨损均衡信息,然而,它可能具有0到任意数量的坏块,随机地位于分区区域中。 唯一可用的步骤是:

  • 跳过坏块
  • 擦除

用于批量生产的预备图像:

  • 确保UBI音量小于MTD分区(例如,小5%)
  • 创建UBI卷和UBIFS,然后填充它。
  • 将NAND块+页面备用区转储为二进制文件。

可以使用mkfs和其他工具准备UBIFS,但是你需要添加ECC信息,编程机器可能无法动态计算,有时只是没有知识。

编程算法如下:

  • 从MTD分区偏移开始,将每个图像块编程为NAND块。
  • 如果NAND块坏了,则跳过它,将图像块N编程为NAND块N + 1。
  • 如果图像块为空,请不要编程,前进到图像和NAND芯片上的下一个块。
  • 以相同方式继续,直到UBI卷的最后一个块。
  • 在NAND芯片的最后一块MTD分区上编程最后一块图像。

希望能帮到任何人: - )