冗余 U-Boot 映像

冗余 U-Boot 映像

我目前正在开发一个使用 NAND 闪存作为主存储的嵌入式系统。 Bootloader + Kernel + rootfs 被写入其中,我们正在寻找方法使我们的系统对与 NAND 相关的许多问题更加健壮。

目前,我们在 JFFS2 之上拥有内核和 rootfs 分区,并且我们正在尝试找到一种方法来保护引导加载程序分区(我们正在使用 SPL 和 U-Boot)。

我们的处理器能够自动查看闪存的前 4 个块,以获得未损坏的 SPL 映像,我希望 U-Boot 也能有类似的功能。然而,我检查了U-Boot代码,并没有找到任何方法来启用这样的功能。

U-Boot 支持吗?我尝试破解自己的代码来做到这一点,但到目前为止还没有成功。

太长了;博士我希望能够检测 NAND 上是否有损坏的 U-Boot 映像,如果是,则从另一个(希望如此)未损坏的分区启动。

答案1

通常,U-Boot SPL 会执行 ECC,但不会更新 NAND……但我相信这是您已经知道的事情。
一个好的做法是将 U-Boot 存储在 NOR 中,而内核、FS 和冗余的 U-Boot 环境变量存储在 NAND 中。
现在关于内核:旧版 Linux 内核映像 (uImage) 的 CRC32 校验和较弱,我会选择 fitImage,它可以签名并包含可配置的校验和算法以及其他有用的东西。

答案2

因此,我设法实现了一个简单的检查并从冗余映像启动。您所要做的就是捕获调用的返回代码ecc.correct()并在函数中处理它spl_nand_load_image()。我发布了一个补丁这里

相关内容