El arranque del flash Qemu no funciona
arm (2)
Tengo un libro de linux ARM incrustado bastante antiguo (publicado en 2009) que usa u-boot
y qemu
. El uso de qemu
con el binario u-boot
explicado en el libro es el siguiente:
qemu-system-arm -M connex -pflash u-boot.bin -nographic
Utiliza qemu 0.9.1, y el mío es 2.1.0:
qemu-system-arm --version
QEMU emulator version 2.1.0, Copyright (c) 2003-2008 Fabrice Bellard
Cuando ejecuté el mismo comando, sin embargo, obtuve estos mensajes de error.
qemu-system-arm: failed to read the initial flash content
qemu-system-arm: Initialization of device cfi.pflash01 failed
¿Qué podría estar mal? ¿Esto es del nuevo parámetro de comando? Tengo este sitio que usa un comando diferente, pero cuando lo intento veo una pantalla en blanco.
qemu-system-arm -M versatilepb -m 128M -nographic -kernel u-boot.bin
Uso Mac OS X Maverick para qemu.
Con la ayuda de Alex, podría ejecutar gumstix en qemu.
El binario debe transformarse en formato flash con el comando dd.
-
dd if=/dev/zero of=flash.bin bs=4096 count=4096
-
dd if=u-boot.bin of=flash.bin bs=4096 conv=notrunc
-
Al qemu se le debe dar un parámetro para usar stdio para comunicación en serie
qemu-system-arm -M connex -pflash flash.bin -serial stdio
Entonces, veo la salida de pantalla:
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>
Consulte el código fuente ( gumstix.c ).
He intentado esto:
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
donde add.S es:
.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
Y parece que el programa funciona bien ...
qemu-system-arm --version
QEMU emulator version 2.0.0 (Debian 2.0.0+dfsg-2ubuntu1.5), Copyright (c) 2003-2008 Fabrice Bellard