【发布时间】:2014-06-06 02:34:16
【问题描述】:
我正在使用 QEMU 在 ARM 上使用 u-boot。我正在使用“versatilepb”机器,因为 Linux 和 u-boot 都可以很好地使用它。我想写一个script 来处理一些启动过程(设置内核参数,计算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 脚本的内容?
【问题讨论】:
-
您应该添加您正在使用的 u-boot 版本。对于“运行”命令,验证配置中是否定义了 CONFIG_CMD_RUN。我不知道“autoscr”可用的最新 u-boot 版本不使用这个。
-
验证配置中是否定义了 CONFIG_CMD_SOURCE。 denx.de/wiki/view/DULG/UBootCmdGroupExec#Section_5.9.4.1.
-
这些选项的组合让我可以做我想做的事。非常感谢!我正在尝试 u-boot 2013.10 和 2014.1 有人想发布一个答案让我接受吗?我不想“关闭”它,因为我仍然认为这对于 u-boot 新手来说是一个有效的问题