2014-10-05 181 views
2

我有一个相当老(2009年出版)嵌入式ARM Linux书籍,使用u-bootqemu。 的qemuu-boot二进制的用法在书中解释如下:Qemu闪光灯启动不起作用

qemu-system-arm -M connex -pflash u-boot.bin -nographic 

它使用QEMU 0.9.1,而我的2.1.0:

qemu-system-arm --version 
QEMU emulator version 2.1.0, Copyright (c) 2003-2008 Fabrice Bellard 

当我执行相同命令,但是,我收到了这些错误消息。

qemu-system-arm: failed to read the initial flash content 
qemu-system-arm: Initialization of device cfi.pflash01 failed 

什么可能是错误的?这是来自新的命令参数吗?我有this site使用不同的命令,但当我试图看到一个空白屏幕。

qemu-system-arm -M versatilepb -m 128M -nographic -kernel u-boot.bin 

我使用Mac OS X特立独行的qemu。

回答

2

我已经试过这样:

dd if=/dev/zero of=flash.bin bs=4096 count=4096 
arm-linux-gnueabihf-as -o add.o add.S 
arm-linux-gnueabihf-ld -Ttext=0x0 -o add.elf add.o 
arm-linux-gnueabihf-objcopy -O binary add.elf add.bin 
dd if=add.bin of=flash.bin bs=4096 conv=notrunc 
qemu-system-arm -M connex -pflash flash.bin -nographic -serial /dev/null -gdb tcp::1234 -S 

其中add.S是:

.text 
entry: b start 
arr: .byte 1, 2, 3, 4, 5, 6 
eoa: 
.align 
start: 
    ldr r0, =eoa 
    ldr r1, =arr 
    mov r3, #0 
loop: 
    ldrb r2, [r1], #1 
    add r3, r2, r3 
    cmp r1, r0 
    bne loop 
stop: b stop 

它似乎程序工作正常...

qemu-system-arm --version 
QEMU emulator version 2.0.0 (Debian 2.0.0+dfsg-2ubuntu1.5), Copyright (c) 2003-2008 Fabrice Bellard 
+1

我补充说,http://winfred-lu.blogspot.com/2011/12/arm-u-boot-on-qemu.html给出了关于如何使用调试器的另一种解释。 – prosseek 2014-10-06 03:56:06

+0

我还总结了在Mac OS X上构建和测试ARM交叉编译的过程 - http://stackoverflow.com/questions/26197735/how-to-make-arm-cross-compilation-on-mac-os-x- error-invalid-listing-option-r – prosseek 2014-10-06 04:22:07

+0

我试了相同的代码,但失败了。我的qemu是2.3,编译器是从apt-get安装的“arm-linux-gnueabi-”。错误信息是“qemu-system-arm:设备cfi.pflash01初始化失败:读取初始Flash内容失败” – Ezio 2015-06-10 06:42:11

1

与亚历克斯的帮助下,我可以在qemu上运行gumstix。

  1. 该二进制文件应该通过dd命令转换为flash格式。

    • dd if=/dev/zero of=flash.bin bs=4096 count=4096
    • dd if=u-boot.bin of=flash.bin bs=4096 conv=notrunc
  2. QEMU的应给予一个参数以使用标准输入输出串行通信

    qemu-system-arm -M connex -pflash flash.bin -serial stdio

然后,我看到屏幕输出:

pxa2xx_clkcfg_write: CPU frequency change attempt 


U-Boot 1.1.4 (Oct 6 2014 - 14:51:37) - 200 MHz - 

*** Welcome to Gumstix *** 

U-Boot code: A3F00000 -> A3F23138 BSS: -> A3F58258 
RAM Configuration: 
Bank #0: a0000000 64 MB 
Flash: 16 MB 
Using default environment 

SMC91C1111-0 
Net: SMC91C1111-0 
Hit any key to stop autoboot: 0 
Instruction Cache is ON 
### JFFS2 loading 'boot/uImage' to 0xa2000000 
Scanning JFFS2 FS: done. 
find_inode failed for name=boot 
load: Failed to find inode 
### JFFS2 LOAD ERROR<0> for boot/uImage! 
GUM> 

请参阅源代码(gumstix.c)。