Linux “的图像格式错误”;资料来源;U-boot命令

Linux “的图像格式错误”;资料来源;U-boot命令,linux,u-boot,Linux,U Boot,我正在尝试编写一个脚本,以便在U-boot时自动运行命令 我按照网站上的说明[1] 下面是我所做的。 我在英伟达JeSton板上编译脚本,并将编译后的文件放入/Boo/StEnv.img 现在,当我重新启动主板时,使用以下命令加载脚本映像: ext2load mmc 0:1 100000/boot/setenv.img 我得到了以下输出: 1096字节以403毫秒(2千磅/秒)的速度读取 请注意,当我运行commandimi时,它会在JetOn板上报告“未找到命令” 我使用以下命令运行加载的图像

我正在尝试编写一个脚本,以便在U-boot时自动运行命令

我按照网站上的说明[1]

下面是我所做的。

我在英伟达JeSton板上编译脚本,并将编译后的文件放入/Boo/StEnv.img

现在,当我重新启动主板时,使用以下命令加载脚本映像:

ext2load mmc 0:1 100000/boot/setenv.img

我得到了以下输出:

1096字节以403毫秒(2千磅/秒)的速度读取

请注意,当我运行command
imi
时,它会在JetOn板上报告“未找到命令”

我使用以下命令运行加载的图像:

source 100000

它给我以下输出(错误消息):

我的问题是:

为什么
source
命令的图像格式不正确

有什么方法可以调试错误吗

非常感谢您对如何调试错误的任何帮助或建议

[1]


多谢各位

正如sawdust所指出的,
iminfo
将有助于调试-因此请确保编译到U-Boot中。您还可以使用
md
命令手动检查标题信息。请记住,
mkimage
不会编译任何东西-它只是在文件开头添加64字节的元数据

因此,如果在0x100000处将脚本加载到DDR中,则可以通过输入
md 0x100000
查看内存中的该位置

输出的前四行是文件的字节0x0-0x40(64字节U-Boot头)。如果您的标题在那里,您应该看到如下内容:

00100000: 56190527 030b131f eb439a57 de0d0000    '..V....W.C.....
00100010: 00000000 00000000 fc6de331 00060205    ........1.m.....
00100020: 6f747541 616d492d 676e6967 72635320    Auto-Imaging Scr
00100030: 00747069 00000000 00000000 00000000    ipt.............
此标头包含一个幻数、CRC校验和(一个用于文件,一个用于标头本身)、时间戳、文件大小、名称和其他一些内容。iminfo所做的一切就是解析标题。超出这64个字节的应该是您的纯文本ASCII脚本


source
命令正在查找使用
mkimage
中的
-t script
标志生成的头。当该地址的图像类型错误时,将打印您收到的错误消息。

对于未来的读者,需要使用
CONFIG\u LEGACY\u image\u FORMAT=y
加载
boot.scr
脚本,否则您将收到以下错误消息:

\## Executing script at 00100000

Wrong image format for "source" command
“源”命令的图像格式错误

此外,如果启用了
CONFIG\u FIT\u SIGNATURE
,则上述标志将被禁用。从Kconfig:

警告:依赖具有所需签名的签名FIT图像时 检查默认情况下禁用的旧图像格式,以便 无法加载未签名的图像。如果电路板需要旧映像 格式支持在这种情况下,请使用 配置\u旧版\u图像\u格式

“有什么方法可以调试错误吗?”--使用iminfo命令报告图像标题。“请注意,当我运行命令imi时,…”--Rebuild U-Boot以便iminfo命令可用(例如define CONFIG\U CMD\U imi)。