在手机上使用qemu在u-boot中运行脚本

时间:2014-04-21 22:52:13

标签: arm qemu u-boot

我正在使用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脚本的内容?

1 个答案:

答案 0 :(得分:1)

这是社区维基的答案。

您应该添加正在使用的u-boot版本。对于“run”命令,请验证是否在配置中定义了 CONFIG_CMD_RUN by sessyargc.jp

根据U-boot command documetnation在配置中定义 CONFIG_CMD_SOURCE ,启用命令autoscr by Joe Kul

脚本不能以普通的 ascii 运行,必须按照文档的说明由mkimage进行预处理。