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