【发布时间】:2014-12-28 13:05:19
【问题描述】:
我已经在 Raspberry PI 上编译并安装了来自 https://github.com/gonzoua/u-boot-pi/tree/rpi 的 u-boot。效果很好。它可以正常启动并且效果很好(请参阅http://arrizza.org/wiki/index.php/RPI_U-boot)。我可以使用可执行文件的 s-rec 版本加载示例应用程序。
现在我想创建一个映像,将其放在 sd 卡上(u-boot 映像所在的同一 sd 卡),然后加载并执行该映像。这和s-rec的流程是一样的:通过s-rec加载图片,然后使用“go”来执行,但不是通过串口加载,而是从sd卡中取出图片。
我尝试过使用:
load mmc 0 0x0100000 hello_world.bin
然后
go 0x0100000
加载正常:
U-Boot> fatload mmc 0 0x01000000 hello_world.bin
reading hello_world.bin
594 bytes read in 27222 ms (0 Bytes/s)
U-Boot> go 0x01000000
## Starting application at 0x01000000 ...
但 rPI 会自动重启。
我也尝试过 fatload,结果相同
我尝试使用 ./imagetool-uncompressed.py 创建图像,然后使用 load 或 fatload 进行操作,但没有任何乐趣
我试过用 bootm 加载/fatload 还是不行
还有什么可以尝试的吗?
约翰
更新:@microMolvi 指出我使用了错误的地址。我重新运行它:
U-Boot> load mmc 0 0x01001000 hello_world.bin
reading hello_world.bin
594 bytes read in 27200 ms (0 Bytes/s)
U-Boot> go 0x01001000
## Starting application at 0x01001000 ...
<snip>about 100 garbage characters<snip>
<I pressed Enter here>
## Application terminated, rc = 0x0
U-Boot>
这是 printenv 的输出:
U-Boot> printenv
arch=arm
baudrate=115200
board=rpi_b
board_name=rpi_b
bootargs=dma.dmachans=0x7f35 bcm2708_fb.fbwidth=656 bcm2708_fb.fbheight=416 bcm2708.boardrev=0xe bcm2708.serial=0x4e82105a smsc95xx.macaddr=B8:27:EB:82:10:5A sdhci-bcm2708.emmc_clock_freq=100000000 vc_mem.mem_base=0x1ec00000 vc_mem.mem_size=0x20000000 dwc_otg.lpm_enable=0 console=ttyAMA0,115200 kgdboc=ttyAMA0,115200 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline rootwait
bootcmd=if mmc rescan ${mmcdev}; then if run loadbootenv; then run importbootenv; fi; if run loadbootscript; then run bootscript; fi; fi
bootenv=uEnv.txt
bootscript=echo Running bootscript from mmc${mmcdev} ...; source ${loadaddr}
cpu=arm1176
filesize=0x252
importbootenv=echo Importing environment from mmc ...; env import -t $loadaddr $filesize
loadaddr=0x00200000
loadbootenv=fatload mmc ${mmcdev} ${loadaddr} ${bootenv}
loadbootscript=fatload mmc ${mmcdev} ${loadaddr} boot.scr
mmcdev=0
soc=bcm2835
stderr=serial,lcd
stdin=serial
stdout=serial,lcd
usbethaddr=B8:27:EB:82:10:5A
vendor=raspberrypi
Environment size: 1092/16380 bytes
U-Boot>
【问题讨论】:
-
嗨,John,0x0100000 不等于 0x01000000 :) 你能提供
U-Boot>printenv的输出吗 -
更新见上文。我从您的回复中假设它应该可以正常工作!?
-
顺便说一句,我也尝试过:
load mmc 0 $loadaddr hello_world.bin,然后是go $loadaddr,最后我也尝试加载 hello_world.srec。这只是重置 rPI。 -
不,我不确定程序,只是发现了错字:D 我过去在 arm11mpcore 板上遇到过同样的问题,但无法解决。我将尝试您在下面发布的解决方案,希望它也适用于我:)
标签: raspberry-pi u-boot