2010-06-01 14 views
6

estoy estudiando procesadores ARM de un libro de texto ...
ARM simulador en Windows

pensé que será más útil si pudiera aplicar lo que aprendo en un simulador de ARM ... escribir código y luego ver los resultados diferentes etapas de ejecución sería más divertido ...

he buscado, pero todo lo que podía encontrar era o bien un freeware en Linux o una demostración en las ventanas

¿hay un simulador que me permite ver la ejecución pasos y diferentes cambios para el procesador ARM (cualquier versión!) que se ejecuta en Windows?

Gracias

Respuesta

2

Tengo un emulador de pulgar que debe compilar en cualquier lugar, windows, linux, mac, lo que sea. thumbulator.blogspot.com. Agregue algunos printfs donde quiera que quiera ver algo y usted es dorado. ARMs emulator the armulator, está disponible en forma de fuente en muchos lugares, en las fuentes de gdb, por ejemplo. qemu funciona muy bien pero va a ser difícil "ver tu código". lo mejor sería tener una fuente hdl (verilog, por ejemplo) para un núcleo de brazo y crear archivos vcd u otros formatos de forma de onda. A menos que trabaje para una compañía de chips con un brazo integrado, probablemente no encuentre uno. Podría estar equivocado, pero creo que ARM elimina rápidamente todos los núcleos de brazo abierto.

mame tiene un núcleo de brazo o dos. visual boy advance tiene un núcleo de brazo. los emuladores de nds tienen núcleos de brazo.

O puede hacer lo que hice con el thumbulator y escribir el suyo, me pareció más fácil que tratar de obtener uno de los otros para mostrarme lo que quería ver. Por supuesto que era flojo y solo hacía un emulador de conjunto de instrucciones en lugar de un emulador de brazo completo. No es difícil en absoluto, simplemente consume mucho tiempo.

EDIT

De acuerdo, estoy corregido. google las palabras brazo verilog. isc.tgz contiene un modelo de modelo de comportamiento de un brazo que compila y funciona perfectamente con icarus verilog (gratis).

Comenta todos los $ save_store(); líneas (como C usa un //).

Agregue unas pocas líneas de código a testarm.v (después del brazo10 y antes de la inicial, por ejemplo).

inicial comenzar $ dumpfile ("test.vcd"); $ dumpvars (0, arm10); final

always # 50000 $ finish;

continuación

iverilog -o hola testarm.v ARM10.v

vvp hola

y se ejecutará 50000 unidades de tiempo, terminar la sim y cerrar el archivo VCD. Para hacer que el sim sea más largo o más corto, cambia siempre la línea # 50000.

Obtenga una copia de gtkwave (gratis) para ver el archivo vcd. Usando gtkwave es una publicación completamente diferente, querrás hacer algo como hacer clic en el signo + al lado de test_arm, luego hacer clic en el brazo10 que está allí, debajo de las señales haz clic en say addr_bus para resaltar la línea y luego en el cuadro de apéndice. haga clic en data_bus y haga clic en el botón Agregar, tal vez agregue algunos registros, r1, r2, etc. Hay una barra de herramientas, pero también puede usar el menú tiempo-> zoom-> zoom completo que es ALT-F en mi instalación. luego puedes aprender a acercar y alejar las cosas.

Hablando por experiencia personal, no "ejecutarás tu código" mejor que usando un simulador hdl. En realidad, una vez que te acostumbras a esto, es posible que tengas problemas para ejecutar el silicio donde casi no puedes ver nada.

No he hecho más que ejecutar el programa de prueba que se incluyó con ese modelo de comportamiento. no sabes lo que puedes o no puedes hacer con eso.

A verilog $ readmemh es bastante simple, solo quiere leer las líneas de hexadecimal en la memoria especificada. Entonces, puede crear fácilmente una herramienta que tome su código de brazo compilado y cree el archivo ASCII que la simulación verilog quiere.

+0

Tenga en cuenta que un modelo de comportamiento (HDL) no es un modelo sintetizable, lo que significa que no puede crear un chip, nada de lo que ARM tenga que preocuparse por estar a la intemperie. –

4

QEMU

Tal vez se referían al instalador binario experimental para Windows. Para la instalación de la fuente en Windows, vea this documentation.

+0

¿Hay alguna otra con mejor IU? – Betamoo

2

Qemu es compatible con Windows y es un emulador de primera clase para ARM. Por supuesto, los estados exactos de la tubería no están disponibles, pero la vista de la emulación del programador está disponible.

1

Ha pasado mucho tiempo desde esta pregunta. Aún así pensé que sería bueno escribir una respuesta para aquellos que están familiarizados con C. Esta es una pequeña aplicación C que emula algunas/siguientes instrucciones de ensamblaje de ARM, donde puede agregar resultados de depuración o impresión en puntos para verificar las etapas de ejecución .

  1. Pipeline: Tamaño 4 posiciones de memoria
  2. reservas para; Instrucciones de interrupción e instrucciones de usuario.
  3. Cuenta los ciclos para cada instrucción y ciclos totales.
  4. Instrucciones de procesamiento de datos: establece los indicadores de desbordamiento y de transporte.
  5. Instrucciones de derivación: utiliza la pila para almacenar los datos del enlace si es necesario.
  6. Instrucciones de transferencia de datos.
  7. Instrucciones de interrupción: Ejecuta la instrucción de interrupción en las instrucciones de entrada establecidas o acepta instrucciones de hardware antes de buscar una nueva instrucción.
  8. Imprime los registros, la memoria accesible para el usuario, la memoria de pila y los indicadores de estado. Las variables "debugEnabled" y "instructionLogEnabled" se pueden activar para obtener más información en la salida.

código fuente está disponible aquí: http://www.omidmufeed.com/arm-assembler-emulator-with-c/

1

ARMSIM

ARMSim # es una aplicación de escritorio que se ejecuta en un entorno Windows. Permite a los usuarios simular la ejecución de programas de lenguaje ensamblador ARM en un sistema basado en el procesador ARM7TDMI.

De mí: se trata de un simulador de y es específico del procesador, es decir, funcionando bajo Linux ARM QEMU, como otros sugirieron, es una mejor opción al probar las soluciones de la vida real. El siguiente paso es ARM metal sin recubrimiento, que en 2015 es económicamente alcanzable con Raspberry PI.