我有一个带有 512 Mb 内存和 4Gb 内部存储的嵌入式设备。 (考虑 Raspberry Pi 或 Beaglebone)
我有一个带有 3 个分区的外部 SD 卡。
mmcblk0
是磁盘,mmcblk0p1
和mmcblk0p2
是mmcblk0p3
其上的 3 个分区。
mmcblk0p2
并且mmcblk0p3
,每个分区都有一个 Debian 操作系统。
mmcblk0p2
用作活动分区,同时mmcblk0p3
用作备份分区。
我看到 u boot 更喜欢第一个分区的行为。它从分区读取 uEnv.txt 并相应地启动。
所以分区mmcblk0p1
有uboot配置。 (uEnv.txt
以及启动所需的其他文件)
我正在使用uEnv.txt
更改启动配置,即如果我想从启动,mmcblk0p3
我可以给
mmcargs=setenv bootargs console=tty0 console=${console} ${optargs} ${cape_disable} ${cape_enable} root=/dev/mmcblk0p3 rootfstype=${mmcrootfstype} ${cmdline}
在里面uEnv.txt
如果uEnv.txt
由于任何故障而损坏或分区损坏,则设备将无法从任何一个分区启动。 (即操作系统)
如果uEnv.txt
活动分区损坏,那么如何在重新启动时从另一个分区启动?如果您可以分享一些与此主题相关的可用链接或资源,即我该如何处理这种情况,那就太好了?
答案1
如果您从头开始实现自己的 OTA,那么是的,您可能需要了解其他现有 OTA 机制如何处理此问题,因为通常您使用某种标志组合来了解是否有更新,以及您是否尝试过更新。