器件型号:BEAGLEBN
工具/软件:Linux
我正在进行 Ota 更新、我正在使用 BeagleBone Green Wireless 和 Debian 操作系统。 这是一个+ B 冗余更新机制。
我使用的是2块器件 mmcblk0和 mmcblk1、一个是 SD 卡、另一个是 eMMC。 我的 lsblk 输出为:
名称 MAJ:最小 RM 大小 RO 类型安装点
mmcblk0 179:0 7.4G 0 磁盘
`-mmcblk0p1 179:1 0 3.3G 0 部件/
mmcblk1 179:8 0 3.6G 0 磁盘
`-mmcblk1p1 179:9 0 3.6G 0 器件
mmcblk1boot0 179:16 0 2M 1 磁盘
mmcblk1boot1 179:24 0 2M 1 磁盘
mmcblk1rpmb 179:32 0 128K 0磁盘
默认情况下、如果我在 SD 卡上有操作系统、则 u-boot 会从 SD 卡引导。 也就是说、它将引导优先级授予 SD 卡、然后授予 eMMC。
我有2个操作系统、一个安装在 SD 卡上、另一个安装在 BeagleBone eMMC 上。 (对于 A + B 冗余更新)
我使用 u-boot 作为引导加载程序。
根据我的理解、MLO 是第一个引导加载程序、它会初始化并加载第二个引导加载程序 u-boot。 U-boot 负责确定要从哪个分区引导,并可从/boot 中的 u-Env.txt 进行配置。
我 对引导过程有疑问。 我在许多论坛和文档上都看到 u-boot 从/boot 目录中读取 u-Env.txt 以设置环境变量、该变量决定要从中引导的分区。
我通过将此行添加到 u-Env.txt 中来配置 uboot:-
bootargs=console=ttyO0、115200n8 root=/dev/mmcblk1p1 mem=128M rootwait
bootcmd=MMC 重新扫描;fatload MMC 0 0x82000000 uImage;bootm 0x82000000
uenvcmd=boot
现在、我在 mmcblk0p1分区中引导、即 SD 卡、而 u-boot 默认为 SD 卡提供优先级。 现在、当 BeagleBone 上还存在 SD 卡时、我将尝试从 eMMC 引导、方法是在 uEnv.txt 中添加上述行。 但我的骨正在从 SD 卡引导(eMMC 和 SD 卡上都有操作系统)
如果我以正确的方式执行它、或者在配置 uboot 环境变量时出现错误、我会感到困惑?