![Linux:FIT平面图像树格式执行脚本](https://linux22.com/image/121152/Linux%EF%BC%9AFIT%E5%B9%B3%E9%9D%A2%E5%9B%BE%E5%83%8F%E6%A0%91%E6%A0%BC%E5%BC%8F%E6%89%A7%E8%A1%8C%E8%84%9A%E6%9C%AC.png)
您好,我正在尝试在 FIT 图像中包含一个脚本。脚本可以运行,只需打印一个 hello world 即可。这是包含在 .its 文件中的部分
脚本@1 {
description = "Bootscript";
data = /incbin/("/home/dvdk/lynx/boot_original.scr");
type = "script";
rch = "arm";
os= "linux";
compression = "none";
load = <0x81000000>;
entry = <0x81000000>;
};
FIT 加载到 80000000 中,iminfo 命令返回:
正在检查 80000000 处的映像...
找到 FIT 映像
FIT 描述:具有单个 Linux 内核和 FDT blob 的简单映像
映像 0 (script@1)
描述:引导脚本
类型:脚本
压缩:未压缩
数据开始:0x800000e0
数据大小:489 字节 = 489 字节
然后我尝试使用“源命令”执行此脚本,如果我使用: $ source 80000000:script@1 我得到: 语法错误
未知命令 ' �域� �� �域� ���.....
如果我执行: $ source 800000e0 脚本会正确执行。
任何人都可以帮助我解决这个问题,或者建议我在哪里可以找到帮助或解决方案。谢谢
答案1
仅使用数据地址运行脚本的事实表明您已在 fitImage 中添加了旧版 uImage 脚本文件。
尝试使用文本格式的脚本创建 fitImage:
script@1 {
description = "Bootscript";
data = /incbin/("/path/to/your/script.txt");
type = "script";
compression = "none";
};
然后您应该能够使用 fitImage 语法运行它。
答案2
需要删除以下几行:
arch = "arm";
os = "linux";
load = <0x81000000>;
entry = <0x81000000>;
我尝试了 FIT 脚本,它仅适用于data
、type
和compression
条目。