我有一个路由器,有两个固件分区,里面有相同的基于 UBI 的固件映像。它们都因 NAND 块损坏而损坏。不过,我可以使用引导环境刷新新的固件映像。但这并没有多大帮助,因为在闪存过程中我得到了以下几个信息:
nandflash_block_erase():尝试擦除坏的nand块XXX
所以这是我的问题:是否可以创建一个包含坏块列表的 UBI 映像,以便这些块基本上不会被包含的 UBI 卷使用?
谢谢!
答案1
因此,经过一番挖掘后,我自己找到了所需的信息。
非常简单地说,UBI 映像不需要“坏块列表”或任何其他信息来告诉它在哪里可以找到其块(如果其中一些块在闪存期间由于损坏的 NAND 块而被重新定位)。 UBI 甚至不需要为其区块指定特定的顺序。这是可能的,因为 UBI 驱动程序在初始化时首先读取所有 NAND 块的开头以获取所需的元数据。
将 UBI 映像正确刷新到 NAND 还需要执行一些步骤,而不仅仅是跳过坏的 NAND 块。你可以找到详细信息这里。
因为 Broadcom CFE 引导环境在闪存期间抛出一堆“试图擦除/写入坏块”错误,所以我必须假设它无法将 UBI 映像正确写入有坏块的 NAND 闪存区域。