我正在使用QEMU在ARM上使用u-boot。我正在使用'versatilepb'机器,因为Linux和u-boot都可以很好地使用它。我想写一个script来处理一些启动程序(设置内核args,计算CRC等等) - 但我似乎无法找到如何运行我的脚本。我在内存中有脚本,我可以用u-boot识别它:
VersatilePB # iminfo 0x285EC
## Checking Image at 000285ec ...
Legacy image found
Image Name: Test Linux Boot
Image Type: ARM Linux Script (uncompressed)
Data Size: 300 Bytes = 300 Bytes
Load Address: 00000000
Entry Point: 00000000
Contents:
Image 0: 292 Bytes = 292 Bytes
Verifying Checksum ... OK
但是,我无法弄清楚如何运行它:
VersatilePB # run 0x285EC
Unknown command 'run' - try 'help'
VersatilePB # autoscr 0x285EC
Unknown command 'autoscr' - try 'help'
VersatilePB # go 0x285EC
## Starting application at 0x000285EC ...
qemu: fatal: Trying to execute code outside RAM or ROM at 0x56190526
我理解最后一个命令失败,因为我有一个脚本图像(使用mkimage -A arm -T script -C none -n "Test Linux Boot" -d myscript.sh ./boot-commands.img
构建)而不是实际的独立应用程序。
我的测试脚本非常简单,只是为了启动Linux内核:
#Global Variables
FLASH_ADDR=0x34000000
BOOT_ARGS="console=ttyAMA0"
#Now we'll try booting it from the beginning of flash
setenv bootcmd bootm $FLASH_ADDR
setenv bootargs $BOOT_ARGS
在u-boot命令行中键入bootm 0x34000000
成功启动Linux内核
我是否遗漏了有关如何运行u-boot脚本的内容?
答案 0 :(得分:1)
这是社区维基的答案。
您应该添加正在使用的u-boot版本。对于“run”命令,请验证是否在配置中定义了 CONFIG_CMD_RUN 。 by sessyargc.jp
根据U-boot command documetnation在配置中定义 CONFIG_CMD_SOURCE ,启用命令autoscr
。 by Joe Kul
脚本不能以普通的 ascii 运行,必须按照文档的说明由mkimage
进行预处理。