¡Cómo usar qemu para simular arm en Windows!
Mi entorno de desarrollo: Ubuntu-12.04 Todos los paquetes de software son los más recientes
1. Instale la cadena de herramientas GNU
p>sudo apt-get insatll gcc-arm-linux -gnueabi
sudo apt-get insatll g++-arm-linux-gnueabi
Después de la instalación completado, estará en / Generar archivos de biblioteca, archivos de encabezado, etc. en el directorio usr/arm-linux-gnueabi/. La versión de GCC que instalé es:
arm-linux-gnueabi-gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3
Copyright (C) 2011 Free Software Foundation, Inc. 2. Instale el emulador Qemu
sudo apt-get install qemu qemu-system qemu-utils
En este punto, debería poder ejecutar qemu-system-arm comando, cuya versión es la siguiente:
qemu-system-arm -- versión
Emulador QEMU versión 1.0.50 (Debian 1.0.50-2012.03-0ubuntu2), Copyright (c) 2003-2008 Fabrice Bellard
3. Compile y ejecute U-boot:
Descargue la última versión del código fuente de U-Boot desde ftp://ftp.denx.de/pub. /u-boot/, estoy usando la última versión u-boot-2012.04.tar.bz2
Descomprima el directorio del código fuente y luego agregue dos líneas al Makefile:
ARCH ? = arm
p>CROSS_COMPILE ? = arm-linux-gnueabi-
Esto en realidad hace que se compile usando el compilador ARM.
make ca9x4_ct_vxp_config
make
Aquí configuramos la placa de destino como Cortex-A9x4 vexpress. El motivo para elegir esta configuración se puede ver en el archivo boards.cfg. vexpress es una placa de desarrollo iniciada por ARM usando Cortext-A9. El código se encuentra en el directorio boards/armltd/vexpress/ y el archivo de configuración es include/. configs/ca9x4_ct_vxp.h. Lo mejor de todo es que Qemu ya apoya a la junta directiva.
El archivo u-boot se generará después de la compilación
Ejecute:
qemu-system-arm -M vexpress-a9 -m 256M -nograph -kernel u- boot
o
qemu-system-arm -M vexpress-a9 -m 256M -serial stdio -kernel u-boot
Encontré que si - no se especifica la gráfica, debe agregar -serial stdio para imprimir.
El parámetro -m 256M especifica el tamaño de la memoria.
-M especifica el nombre de la placa. Para las placas compatibles, puede usar -M. Las placas compatibles se pueden ver de la siguiente manera:
#qemu-system-arm -M?
¿Soportado? Las máquinas son:
beagle Placa Beagle (OMAP3530)
beaglexm Placa Beagle XM (OMAP3630)
............
versatilepb ARM Versatile/PB (ARM926EJ-S)
versatileab ARM Versatile/AB (ARM926EJ-S)
vexpress-a9 ARM Versatile Express para Cortex- A9
vexpress-a15 ARM Versatile Express para Cortex-A15
Resultados de funcionamiento normal:
qemu-system-arm -M vexpress-a9 -m 256M - nographic - kernel u-boot
U-Boot 2012.04 (08 de julio de 2012 - 00:14:08)
DRAM: 256 MiB
ADVERTENCIA: No se almacenan cachés habilitado
Flash: ## Flash desconocido en el banco 1 - Tamaño = 0x00000000 = 0 MB
## Flash desconocido en el banco 2 - Tamaño = 0x00000000 = 0 MB
*** Error***
MMC: MMC: 0
*** Advertencia: CRC incorrecto, uso del entorno predeterminado
Advertencia. CRC, usando el entorno predeterminado
Entrada: serial
Salida: serial
Err: serial
Neto: smc911x-0
Presiona cualquier tecla para detener el arranque automático: 0
VExpress#
VExpress# printenv
baudrate=38400
bootcmd=ejecutar bootflash;
bootdelay=2
bootflash=ejecutar flashargs; cp ${ramdisk_addr} ${ramdisk_addr_r} ${maxramdisk}; ramdisk_addr_r}
console=ttyAMA0,38400n8
. . . . .
Nota: Si deja de ejecutarse después de detectar un fallo en la memoria flash, es porque la función board_init_r() en arch/arm/lib/board.c llama a la función hang() después de detectar un fallo en la memoria flash. . La función board_init_r() en c llama a hang() después de detectar una falla en el flash, así que elimine temporalmente hang() y se ejecutará.