ARM assembly con qemu

= Installing QEMU = sudo apt-get install qemu qemu-system

= Installing GNU Toolchain for ARM = 1. Baje de CodeSourcery el toolchain para el ARM: http://www.codesourcery.com/gnu_toolchains/arm. También lo puede bajar de http://157.253.195.146/public/tools/Qemu/arm-2012.03-56-arm-none-eabi-i686-pc-linux-gnu.tar.bz2 2. Se recomienda descomprimir el archivo "arm-2012.03-56-arm-none-eabi-i686-pc-linux-gnu.bz2" en el directorio /opt  (use el comando tar -jxf) 3. Edite el archivo .bashrc para adicionar el path del compilador al final del archivo así: PATH=$PATH:/opt/arm-2012.03/bin 4. Reinicie la consola o ejecute source .bashrc para actualizar la variable PATH.

= Installing DDD = sudo apt-get install ddd

= Examples = [[media:arm_assembly.zip | Ejemplos ARM_assembly]]

= Running QEMU= 1. Ejecute el terminal. Entre al directorio de trabajo. En este caso: "cd Desktop/work/arm_assembly" 2. Entre al directorio test0 que contiene el archivo program.s (Este archivo contiene un ejemplo con código en assembler) 3. Ejecute el comando: make clean;make install; make run 4. Ejecute en otro terminal en el mismo directorio: ddd --eval-command="target remote localhost:1234" --debugger arm-none-eabi-gdb program.o 5. Dentro del programa ddd Visualice el estado de los registros. Status -> Registers 6. Interrumpa el programa (Interrupt) y ejecutelo paso a paso para efector de depuración (Step) 7. Compruebe el funcionamiento del programa 8. Edite el archivo program.s para hacer sus modificaciones.



= References =

http://balau82.wordpress.com/2010/03/10/u-boot-for-arm-on-qemu/ U-Boot 2012.04 (Jun 18 2012 - 17:54:11)

DRAM: 128 MiB WARNING: Caches not enabled Flash: ## Unknown flash on Bank 1 - Size = 0x00000000 = 0 MB QEMU: Terminated
 * failed ***
 * 1) ERROR ### Please RESET the board ###

How to avoid this nasty error you ask?

Answer: Patch include/configs/versatile.h Add this line


 * 1) define CONFIG_ARCH_VERSATILE_QEMU

just below


 * 1) ifndef __CONFIG_H
 * 2) define __CONFIG_H

Recompile and voila!!

https://www.scss.tcd.ie/John.Waldron/3d1/QRC0001H_rvct_v2.1_arm.pdf

http://www.linuxforu.com/2011/08/qemu-for-embedded-systems-development-part-3/ http://simplemachines.it/doc/arm_inst.pdf http://www.bravegnu.org/gnu-eprog/hello-arm.html http://lyle.smu.edu/~mitch/class/5385/ADS-Guide-DUI0068.pdf http://microcross.com/GNU-ARM-Assy-Quick-Ref.pdf http://web.eecs.utk.edu/~mbeck/classes/cs160/lectures/12_ARM_exs_assembler.pdf