Lnforme ARM2 BautistaAlvaro 201523902 EspitiaSantiago 201521090
Lnforme ARM2 BautistaAlvaro 201523902 EspitiaSantiago 201521090
Lnforme ARM2 BautistaAlvaro 201523902 EspitiaSantiago 201521090
PROGRAMACIÓN Y DEPURACIÓN EN
PROCESADORES ARM
Alvaro Stiven Bautista Otalora
Santiago Espitia Torres
Facultad de Ingeniería
Programa de Ingeniería Electrónica extensión Tunja
Universidad Pedagógica y Tecnológica de Colombia
Tunja, Boyacá - Colombia
[email protected]
[email protected]
Resumen— En el presente informe se encontrará el desarrollo Se tiene un registro específico CPSR en el cual se
de la guía de laboratorio correspondiente a la programación de encuentran las banderas condicionales y bits de control en
lenguaje ensamblador en la plataforma ARM mediante el emulador donde estos últimos permiten habilitar interrupciones
y virtualizador QEMU. Aplicando las instrucciones,registros,uso normales (I), interrupciones rápidas (F), modo thumb (T) y
de memoria en aplicaciones reales y demás que permiten utilizar
mas fondo el proceso de compilación,depuración para sistemas
el modo de operación de la CPU. Para las banderas
basados en la arquitectura ARM AArch32. condicionales se puede encontrar las banderas N de
resultado negativo, Z de resultado cero o comparaciones
ciertas, C para acarreos de operaciones aritméticas y V para
indicar desbordamiento aritmético. Estas banderas
I. INTRODUCCIÓN condicionales se activan al poner una “s” después del
Se debe conocer que la arquitectura RISC de 32 bits de nemotécnico de la instrucción. [9]
ARM, anteriores a la arquitectura ARMv8-A es una
arquitectura licenciada por ARM Holdings pero con la II. OBJETIVO
particularidad de que esta no fabrican ni venden los chips.
En el manejo de la placa Raspberry Pi se encuentra que el Consolidar conocimientos en el lenguaje
chip específico que esta maneja es el BCM2835 el cual es ensamblador utilizado en la arquitectura ARM,
un SoC compuesto por CPU, un núcleo GPU, y un núcleo aprendiendo instrucciones y escritura de programas
DSP destinado al procesamiento y representación de señales mediante aplicaciones prácticas, como también la
analógicas. Se tiene la CPU ARM1176JZFS de la familia depuración de un sistema basado en la arquitectura
ARM11 y usa la arquitectura ARMv6k; en esta se presentan ARM Arch 32.
17 registros de 32 bits. III. MATERIALES
● Computador Personal.
● Virtualización en QEMU ARM versatilePB
(Raspberry Pi 1).
● Compilación de un programa en C
Como se ve comentariado en el código se mueve el valor
255 al registro R0, luego un valor de -281 al registro R1,
enseguida un valor de 54116 al registro R4, a partir de ello
se mueve luego el valor FFB1 a los últimos 16 bits del
registro R4. Finalmente se genera el movimiento del
contenido del registro R5 al registro R4. por último se
genera la salida del programa mediante el comando lr.
Parte 3: Comprobación
177/2=88\2=44\2=22/2=11\2=5
Por último se realiza la bifurcación a la etiqueta stop pero
antes se observa en el registro R6 el valor de los 10
desplazamientos del registro R4.
Se guarda en la dirección de offset 0x21028 el valor de 697. Se observa que la dirección de memoria cargada en R2
contiene al valor de R1 pero se observa que después el
contenido de R2 cambia al sumarle la constante 12 dando un
valor de 135216 después se le suma 24 para dar un valor de
135240 con esta instrucción el contenido de R2 cambia.
Direccionamiento pre-indexado
después al ejecutar la última instrucción se desactiva el flag
0 porque el número testeado es positivo.
MULL
El codigo generado es el que se muestra a continuación: 5) Escriba un programa para realizar el ordenamiento
ascendente y descendente (seleccionando la función a
través de un valor cargado a registro) de 50 números
cargados en memoria RAM. El algoritmo de
ordenamiento puede ser simple, bubble sort, merge sort,
heapsort, o quicksort.
Para entender de mejor manera se plantea el siguiente 6) Escriba en ensamblador un código equivalente al
código en C mostrado a continuación. Compruebe los resultados
ensamblando el código C y contrastando los valores
producidos por su propio código en ASM.
Para el manejo de código de GNU Compiler Collection se Finalmente en el nivel tres se agrega a la información de los
puede ejemplificar mediante el clásico hola mundo de anteriores niveles, información sobre la definición de los
muchos lenguajes. Para este caso el comando gcc se macros del procesador.
implementa teniendo en cuenta si la opción tiene más de una
letra ya que en este caso se pone dos guiones, y para una Un ejemplo de carga de programas en depurador puede ser:
sola letra pues un solo guión; ejemplificandolo así:
$ gcc fibonacci.c -o fibonacci
$ gcc hola.c --ansi -c -o hola.o $ ./fibonacci 4
Bus error
En este comando las opciones de línea de comandos se
clasifica en las siguientes categorías: Aquí se genera un error y mediante esto se procede a una
depuración para determinar a detalle el error usando -g
● Específicas del lenguaje: Esta opción se usa sólo cargando lo con los comandos de la siguiente manera:
con determinados lenguajes de programación.
● Específicas de la plataforma: Como en el caso $ gcc fibonacci.c -g -o fibonacci
anterior en este solo se implementan en $ gdb fibonacci 4
determinadas plataformas (Intel como una de las (gdb)
plataformas a ejemplificar).
● Generales: Se usan en todos los lenguajes y Así se obtiene el prompt (gdb) y luego se podrá correr el
plataformas a diferencia de los dos casos programa escribiendo el comando run:
anteriores.
(gdb) run La directiva .equ permite usar símbolos, constantes, esto
Starting program: ./fibonacci para entender los símbolos como cadenas de caracteres que
Reading symbols for shared libraries . done son sustituidas donde aparezca por un valor determinado.
Indique un número como argumento Un ejemplo simple puede ser tomar el símbolo que en este
Program exited normally. caso seria UNO y darle el valor 0x01:
CONCLUSIONES