gpt4 book ai didi

linux - 将 UBIFS 分区复制到 NAND 设备

转载 作者:太空宇宙 更新时间:2023-11-04 03:51:43 27 4
gpt4 key购买 nike

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

我通过读取 UBIFS 分区占用的整个 block 范围(包括备用区域),将其复制到二进制镜像文件中。

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

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

最佳答案

找到了工作方法!

这样做的全部目的是在将 NAND 闪存部件焊接到电路板上之前找到一种简单的算法来对其进行编程。

这是在批量生产过程中由编程机完成的,使用 Linux 无法做到这一点。由于NAND部分是新的,不需要磨损均衡信息,但是,它可能有0到任意数量的坏 block ,随机分布在分区区域中。唯一可用的步骤是:

  • 跳过坏 block
  • 删除

准备批量生产的图像:

  • 确保 UBI 卷小于 MTD 分区(例如小 5%)
  • 创建 UBI 卷和 UBIFS,并填充它。
  • 将 NAND block +页面的备用区域转储到二进制文件中。

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

编程算法如下:

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

希望对任何人有帮助:-)

关于linux - 将 UBIFS 分区复制到 NAND 设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26130717/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com