IMX8MP linux uboot 在通过 uuu 刷写引导加载程序后,需要设置默认环境和其他一些变量。
使用案例:
IMX8MP SoM 出厂时自带厂商提供的默认 uboot。因此,第一次写入需要刷写新的 uboot 镜像时,我们将其设置为默认环境,并在工厂流程中设置了一些板级特定的环境变量。
所以当我使用命令 `uuu -b emmc_all bl-imx8mp.bin image.wic.zst` 时,它使用的是内置脚本。
uuu_version 1.4.149
# @_flash.bin | 引导加载程序,可以从 WIC 镜像中提取
# @_image [_flash.bin]| 将 WIC 镜像刻录到 EMMC。
# 此命令将在 i.MX6/7、i.MX8MM、i.MX8MQ 运行时运行
SDP:启动 -f bl-imx8mp.bin -scanlimited 0x800000
# 当 ROM 支持流模式时,将运行此命令
# i.MX8QXP,i.MX8QM
SDPS:boot -scanterm -f bl-imx8mp.bin -scanlimited 0x800000
# 这些命令将在使用 SPL 时运行,如果未使用 SPL 则会跳过。
# SDPU 将被弃用。请使用 SDPV 代替 SDPU
# {
SDPU:延迟 1000
SDPU:写入 -f bl-imx8mp.bin -offset 0x57c00
SDPU:跳转 -scanlimited 0x800000
# }
# 这些命令将在使用 SPL 时运行,如果未使用 SPL 则会跳过。
# 如果(SPL 支持 SDPV)
# {
SDPV:延迟 1000
SDPV:写入 -f bl-raptor-imx8mp.bin -skipspl -scanterm -scanlimited 0x800000
SDPV:跳转 -scanlimited 0x800000
# }
FB:ucmd setenv fastboot_dev mmc
FB:ucmd setenv mmcdev ${emmc_dev}
FB:ucmd mmc dev ${emmc_dev}
FB:flash -raw2sparse 所有 image.wic.zst/*
FB:flash -scanterm -scanlimited 0x800000 bootloader bl-imx8mp.bin
FB: ucmd 如果环境变量 emmc_ack 存在;则;否则设置环境变量 emmc_ack 为 0;结束;
FB:ucmd mmc partconf ${emmc_dev} ${emmc_ack} 1 0
FB:完成
所以我的要求是
刷写引导加载程序 + 根文件系统/镜像
恢复默认设置。
添加新变量。
使用具有预期环境的正确工作的新引导加载程序重新启动。
但现在是先刷写根文件系统,然后再刷写新的引导加载程序。所以当我执行 env default -f -a 之后,它导致 SoM 板上旧引导加载程序的默认环境。重置后,它会使用新的引导加载程序启动,但会保留旧引导加载程序的默认设置。有什么建议可以解决这个问题吗?
你好@jake4
希望你一切都好。
您可以尝试编写自己的自定义脚本并添加以下内容:
FB: ucmd env default -f -a
完整脚本示例:
uuu_version 1.4.149
SDP: boot -f bl-imx8mp.bin -scanlimited 0x800000
SDPS: boot -scanterm -f bl-imx8mp.bin -scanlimited 0x800000
SDPU: delay 1000
SDPU: write -f bl-imx8mp.bin -offset 0x57c00
SDPU: jump -scanlimited 0x800000
SDPV: delay 1000
SDPV: write -f bl-imx8mp.bin -skipspl -scanterm -scanlimited 0x800000
SDPV: jump -scanlimited 0x800000
FB: ucmd setenv fastboot_dev mmc
FB: ucmd setenv mmcdev ${emmc_dev}
FB: ucmd mmc dev ${emmc_dev}
FB: flash -raw2sparse all image.wic.zst/*
FB: flash -scanterm -scanlimited 0x800000 bootloader bl-imx8mp.bin
FB: ucmd if env exists emmc_ack; then ; else setenv emmc_ack 0; fi;
FB: ucmd mmc partconf ${emmc_dev} ${emmc_ack} 1 0
FB: ucmd env default -f -a
FB: ucmd setenv board_version "1.0"
FB: ucmd setenv my_custom_var "value"
FB: ucmd saveenv
FB: ucmd reset
FB: done
顺祝商祺!
萨拉斯。
我们只会在 uboot 中启用 eth fastboot,因此我们不能使用 SDP 的启动开关。请问是否有只使用fastboot命令的选项?
谢谢!