加载自定义 u-boot 脚本

Loading custom u-boot script

我创建了一个图像(使用 Yocto 和 meta-tegra)并获得了 Jetson Nano devkit 运行 RAUC 更新使用的两个 rootfs。我目前(暂时在测试期间)使用Jetson Nano devkit SPI flash来存储u-boot环境。

我有一个脚本,我使用 tftp 在我的设备上成功获得了 运行ning。我还手动 将我脚本的每一行输入到一个环境变量中,保存它并将bootcmd 设置为运行。但是如果我想要一个以上的设备与这个 u-boot,我不想为我制作的每个设备手动输入脚本。但我也不希望 tftp 服务器运行在旁边能够启动。

我想运行我的脚本完全独立和自动。所以我一直在考虑将脚本单独放在一个分区上,然后让 u-boot 从那里加载脚本。但是我如何告诉 u-boot 在特定分区中查找脚本呢?我可以使用 source SCRIPT_PARTITION_OFFSET 吗?

我还看到标准 boot.scr 可以是来自 u-boot shell 的 运行。这个 boot.scr 在哪里?我似乎找不到它的创建位置或存储位置。

************************************************ ********编辑:**************************************** ************* 作为一个临时解决方案,我将引导脚本映像放入 /boot/ 文件夹,并设置 u-boot 扫描两个 rootfs 上该文件夹中的脚本,然后 运行 如果它能找到它。

对于此解决方案,我仍然需要编辑 u-boot 环境以使 u-boot 以这种自定义方式启动,因此这不是我可以长期使用的解决方案 运行。我不妨通过 tftp 将 运行 once 的脚本设置为整个引导脚本内容。

我可以使用在其环境中包含我的脚本的补丁来编辑 u-boot 源代码吗? - 如果是,怎么做?

如评论中所述,我能够为 u-boot-tegra/include/config_distro_bootcmd.h 制作一个补丁,将变量 distro_bootcmd 设置为我的脚本内容。然后当我构建我的 yocto 图像并启动我的 Jetson Nano 时,我可以看到该变量实际上已设置。

这种方式适用于任何 u-boot,而不仅仅是 Jetson Nano。只需在默认启动时运行的u-boot中找到bootcmd变量并对其进行修补即可。