我想从u-boot脚本检查设备上是否存在文件,然后再在此设备上运行映像。实际上,这将确保在从所请求的设备启动之前能够访问它。如何使用u-boot控制台命令测试文件是否存在?
以下测试对U盘执行ls,以下是U盘存在的情况下的结果:
> 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
不带U盘的相同测试:
> if ext2ls usb 0; then echo "USB ON"; else echo "USB KO"; fi
** Bad device usb 0 **
USB KO
我的愿望是测试boot.scr文件是否确实存在。我该怎么做呢?
发布于 2016-06-01 20:27:41
你已经很接近了。由于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中查看有关此类测试的更多示例
发布于 2021-09-25 11:41:28
这是一个老问题,但不管怎样回答,因为我正在寻找这个信息。
正如汤姆所说,在include/config_distro_bootcmd.h
中确实有这样的例子。
检查文件是否存在的方法是使用test -e
。这在u- 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
。
https://stackoverflow.com/questions/37565616
复制相似问题