2014-10-05 86 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)。