如何在u-boot脚本中检查文件是否存在?

4

我希望能够在u-boot脚本中检查设备上的文件是否存在,然后才运行此设备上的映像。这样做可以确保在从该设备引导之前能够访问所需的设备。 使用u-boot控制台命令如何测试文件是否存在?请注意以下测试会在USB存储器上执行ls命令,下面是插入USB存储器后的结果:

> if ext2ls usb 0; then echo "USB ON"; else echo "USB KO"; fi
    <DIR>       4096 .
    <DIR>       4096 ..
    <DIR>      16384 lost+found
    <DIR>       4096 boot
                4096 boot.scr
USB ON

没有使用USB设备的相同测试:

> if ext2ls usb 0; then echo "USB ON"; else echo "USB KO"; fi
** Bad device usb 0 **
USB KO

我的愿望是测试boot.scr文件是否存在。请问我该如何做?
2个回答

7
您已经非常接近了。由于ext2ls(或通用的ls)只能在目录上工作,因此您需要执行以下操作:
=> if load mmc 0:1 ${loadaddr} notfound; then echo found; else echo notfound;fi
** File not found notfound **
=> if load mmc 0:1 ${loadaddr} boot.scr; then echo found; else echo notfound;fi
27980 bytes read in 26 ms (1 MiB/s)
found

您可以在include/config_distro_bootcmd.h中查看更多此类测试和回退的示例。

2

虽然这是一个老问题,但我还是回答一下,因为我正在寻找这些信息。

正如Tom所说,在include/config_distro_bootcmd.h中确实有示例。

检查文件是否存在的方法是使用test -e。在u-boot的v2021.07版本中有效。

例如:我在sd卡的fat分区中有一个u-boot.scr文件,它是第一个分区。这就是我检查文件是否存在并运行它的方法:

if test -e mmc 0:1 u-boot.scr; then fatload mmc 0:1 0x2000000 u-boot.scr; source 0x2000000; fi;

如果您的文件在子文件夹中,只需以相同的方式引用它:scripts/u-boot.scr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接