Red de conocimiento informático - Problemas con los teléfonos móviles - ¡Cómo usar qemu para simular arm en Windows!

¡Cómo usar qemu para simular arm en Windows!

Utilice Qemu para simular Cortex-A9 para ejecutar U-boot y Linux Author

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á.