flash arm qemu

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.

  1. 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
  2. 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