Bienvenido: Ingresar
location: Diferencias para "WebHome/HerramientasProgramacion/HLaunchpad"
Diferencias entre las revisiones 14 y 36 (abarca 22 versiones)
Versión 14 con fecha 2014-10-07 17:59:00
Tamaño: 5706
Comentario:
Versión 36 con fecha 2020-07-17 23:01:15
Tamaño: 6151
Comentario:
Los textos eliminados se marcan así. Los textos añadidos se marcan así.
Línea 15: Línea 15:
https://launchpad.net/~terry.guo/+archive/gcc-arm-embedded https://launchpad.net/~team-gcc-arm-embedded/+archive/ubuntu/ppa
Línea 22: Línea 22:
sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
Línea 30: Línea 30:
sudo apt-get install gcc-arm-none-eabi sudo apt-get install gcc-arm-embedded
Línea 32: Línea 32:
   * Paso 4: Se instala el debugger (gdb)
Si bien las herramientas instaladas ya poseen la herramienta para realizar debug en GNU denominada gdb, este no tiene activado el simulador (target sim)
   === Instalación del depurador ===
Línea 35: Línea 35:
Para instalar una versión de gdb que permita simular se debe realizar lo siguiente: La aplicación para depurar un proyecto es el GDB, herramienta utilizada en cualquier proyecto GNU, pero en este caso compilado para depurar código ARM.
Línea 37: Línea 37:
'''Usuario de Ubuntu 14.04 o superior''' Si bien el depurador está preparado para depurar programas en ARM, el problema es que este programa debe correr primero en una arquitectura ARM, para esto tenemos dos soluciones:
    * Simulación: un núcleo ARM es simulado por el propio GDB y allí corre nuestra aplicación.
    * La aplicación corre en un hardware (una placa externa) y se depura por una conexión remota (In-Circuit Debugging)
Para los ejemplos y primeras pruebas en ensamblador utilizaremos la primera solución, el problema es que por ser utilizada con fines académico no está disponible en las últimas versiones del GDB para ARM, deberemos entonces usar una versión anterior cuando se quiera usar esta característica
Línea 39: Línea 42:
{{{
sudo apt-get install gdb-arm-none-eabi
   * Bajar versión anterior de GDB (64bits)
[[attachment:arm-old-gdb]]

   * Copiar este archivo al directorio donde se instaló el GNU ARM (/usr/bin)
Posicionado sobre el directorio donde bajamos el archivo hacemos

{{{
sudo cp arm-old-gdb /usr/bin
}}}
   * Dar permisos de ejecución al achivo copiado
{{{
sudo chmod +x /usr/bin/arm-old-gdb
Línea 42: Línea 55:
En caso que esta ultima instalación termine con un mensaje de error, se puede forzar la misma escribiendo
{{{
sudo dpkg -i --force-overwrite /var/cache/apt/archives/gdb-arm-none-eabi
}}}
'''Importante''' antes de oprimir enter, se presiona la tecla tab para que se complete el archivo gdb-arm-none-eabi_X.X.XX.XXXXXX.deb con la versión descargada, completado el nombre con la extensión .deb, luego se oprime enter para realizar la instalación.
Línea 48: Línea 56:
'''Usuario de Ubuntu anteriores'''   
Línea 50: Línea 58:
Bajar el siguiente paquete
 [[attachment:gdb-arm-none-eabi_7.6.50.20131218-0ubuntu1+1_i386.deb]]
o para el caso de 64 bits
 [[attachment:gdb-arm-none-eabi_7.7.1+dfsg-1+6_amd64.deb]]
##Bajar el siguiente paquete
## [[attachment:gdb-arm-none-eabi_7.6.50.20131218-0ubuntu1+1_i386.deb]]
##o para el caso de 64 bits
## [[attachment:gdb-arm-none-eabi_7.7.1+dfsg-1+6_amd64.deb]]
Línea 55: Línea 63:
luego en una consola, ejecutar
{{{
 sudo dpkg -i --force-overwrite Descargas/gdb-arm-none-eabi_7.6.50.20131218-0ubuntu1+1_i386.deb
}}}
esta linea supone que el archivo se descargó en el directorio "Descargas", de no ser así modificar la ruta
##luego en una consola, ejecutar
##{{{
## sudo dpkg -i --force-overwrite Descargas/gdb-arm-none-eabi_7.6.50.20131218-0ubuntu1+1_i386.deb
##}}}
##esta linea supone que el archivo se descargó en el directorio "Descargas", de no ser así modificar la ruta
Línea 62: Línea 70:


Una vez instalado el paquete, se tendrá todas las herramientas GNU para ARM identificadas con el prefijo '''arm-none-eabi-'''
Una vez instalado el paquete, se tendrá todas las herramientas GNU para ARM identificadas con el prefijo '''arm-none-eabi-''' y el depurador '''arm-old-gdb''' solo para el caso de necesitar el simulador
Línea 68: Línea 74:
Se puede realizar con ddd o con arm-none-eabi-gdb --tui

=== ddd ===

Esta herramienta se instala de los repositorios
{{{
apt-get install ddd
}}}
Luego para correr se procede de la siguiente forma
{{{
ddd --eval-command="target sim" --debugger arm-none-eabi-gdb ex1.elf
}}}
Donde '''ex1.elf''' es la aplicación, '''arm-none-eabi-gdb''' es la versión del gdb que el ddd usará y '''target sim''' es para que utilice el simulador

Al arrancar aparecerá el programa fuente y abajo una ventana con la consola de gdb, en esa ventana se escribe '''load'''

Luego para hacer un '''break point''' se procede con el botón derecho en la linea requerida

Finalmente haciendo click en el botón '''run''' se corre el programa

=== gdb --tui ===

Para realizar un debug con esta herramienta no es necesario instalar nada.
Para realizar un debug se procede de la siguiente manera
Línea 94: Línea 78:
arm-none-eabi-gdb --tui arm-old-gdb --tui
Línea 99: Línea 83:
load (nombre del .elf)
file (nombre del .elf)
load {archivo .elf a depurar}
file
list
Línea 109: Línea 94:
== DEBUG PLACA == ##== Proyecto CIAA ==
Línea 111: Línea 96:
Para el debug en forma remota a la placa de desarrollo o lo que comúnmente se denomina on-chip debugger (OCD), se debe instalar una herramienta que permita la comunicación entre el debug y la placa de desarrollo conectada esta última por medio de un cable USB a la PC
Existen al menos dos grandes proyectos que realizan esta operación PyOCD y OpenOCD.
A continuación se desarrolla la explicación para instalar el PyOCD
##La Cátedra utiliza para el desarrollo de los diferentes prácticos una placa EDU-CIAA
Línea 115: Línea 98:
=== PyOCD ===
PyOCD es un proyecto desarrollado en Python que como se explico anteriormente realiza la comunicación entre una placa de desarrollo y el GDB, esto lo realiza por el lado de la placa a través del protocolos CMSIS-DAP y por el lado del GDB, abriendo un socket para que este se conecte.
##Esta placa pertenece al proyecto CIAA (Computadora Industrial Abierta Argentina), si desean conocer mas sobre este proyecto, pueden entrar a la página del mismo
Línea 118: Línea 100:
Pasos para instalar PyOCD ##http://www.proyecto-ciaa.com.ar/
Línea 120: Línea 102:
 1. Instalar librería de comunicación usb '''sudo apt-get install libusb-1.0-0-dev'''
 1. Instalar lenguaje python '''sudo apt-get install python'''
 1. Instalar manejador de usb para python (proyecto (pyUSB), esta herramienta se puede bajar desde https://github.com/walac/pyusb
    a. Se descomprime en un directorio
    a. dentro de ese directorio se corre
    '''sudo python setup.py install'''
##Para la instalación del IDE y de las demás herramientas necesarias seguir los siguientes pasos

##=== Instalación del IDE para la placa de desarrollo EDU-CIAA ===

##Una vez instalado las herramientas de programación, se continua con los siguientes pasos

##==== OpenOCD ====
##Es la herramienta requerida para hacer el puente entre la placa y el depurador.
Línea 127: Línea 111:
##En las versiones mas nuevas de Ubuntu, ya viene disponible para instalarlo desde los repositorios junto con las librerías para el manejo del USB.
Línea 128: Línea 113:
##{{{ sudo apt-get install openocd }}}

##Luego es necesario darles los permisos, bajamos el siguiente archivo:

##[[attachment:99-openocd.rules]]

##y desde una consola y sobre el directorio donde bajamos el archivo, se escribe:

##{{{ sudo cp 99-openocd.rules /etc/udev/rules.d/ }}}

##Finalmente para que el OpenOCD tenga permiso desde el usuario a acceder al USB, debemos hacer

##{{{ sudo useradd -plugdev USERNAME }}}

##Donde {{{USERNAME}}} es el nombre del usuario

##==== Eclipse ====

##En primer lugar, antes de instalar eclipse se debe instalar Java

##{{{ sudo aptitude install default-jdk }}}

##Luego se baja el paquete Eclipse desde este link

##https://github.com/gnu-mcu-eclipse/org.eclipse.epp.packages/releases/

##el paquete se descomprime en una carpeta y ya es suficiente para comenzar a usarlo

  
##==== Firmware ====

##El archivo adjunto contiene el proyecto de firmware, donde se cambiaron algunas configuraciones para ser mas sencillo su uso en modo '''baremetal'''

##[[attachment:Firmware_td2.tar.gz]]






 

Herramientas de Programación y Depurado

El proyecto GNU-ARM toolchain es el compilado de las herramientas tradicionales del GNU toolchain configuradas para generar o reconocer código ARM.

Esto significa que dentro de todos los proyectos que integran el GNU toolchain ya se encuentran lo necesario para generar la herramienta GNU-ARM específica. El mantenimiento y mejoras de la "porción ARM" que tienen estas herramientas, está realizada por comunidades en general auspiciadas por ARM Holdings plc.

Estas mismas comunidades realizan Pre-built que se pueden bajar de paginas específicas y que libera a los usuarios del tedioso proceso de bajar cada herramienta (gcc, ld, gdb, etc) y realizar el compilado de las mismas para ARM. El proyecto de estas GNU-ARM toolchain es el siguiente

https://launchpad.net/gcc-arm-embedded/

Dentro de esta misma página, se puede encontrar un link a un proyecto para Ubuntu, él cual permite una fácil instalación y actualización de mismo, al agregar un repositorio especifico para luego instalar y mantener el proyecto con las herramientas de administración de paquetes de Ubuntu.

https://launchpad.net/~team-gcc-arm-embedded/+archive/ubuntu/ppa

En este último se encuentra un instructivo para instalar las herramientas.

Estos pasos se pueden resumir de la siguiente manera

  • Paso 1: Agregar el repositorio al directorio source.list.d, para ello se abre una terminal y se ingresa

sudo add-apt-repository ppa:team-gcc-arm-embedded/ppa
  • Paso 2: Se actualiza el repositorio ingresando

sudo apt-get update
  • Paso 3: Se instala el "toolchain" escribiendo

sudo apt-get install gcc-arm-embedded

Instalación del depurador

La aplicación para depurar un proyecto es el GDB, herramienta utilizada en cualquier proyecto GNU, pero en este caso compilado para depurar código ARM.

Si bien el depurador está preparado para depurar programas en ARM, el problema es que este programa debe correr primero en una arquitectura ARM, para esto tenemos dos soluciones:

  • Simulación: un núcleo ARM es simulado por el propio GDB y allí corre nuestra aplicación.
  • La aplicación corre en un hardware (una placa externa) y se depura por una conexión remota (In-Circuit Debugging)

Para los ejemplos y primeras pruebas en ensamblador utilizaremos la primera solución, el problema es que por ser utilizada con fines académico no está disponible en las últimas versiones del GDB para ARM, deberemos entonces usar una versión anterior cuando se quiera usar esta característica

  • Bajar versión anterior de GDB (64bits)

arm-old-gdb

  • Copiar este archivo al directorio donde se instaló el GNU ARM (/usr/bin)

Posicionado sobre el directorio donde bajamos el archivo hacemos

sudo cp arm-old-gdb /usr/bin

  • Dar permisos de ejecución al achivo copiado

sudo chmod +x /usr/bin/arm-old-gdb

Una vez instalado el paquete, se tendrá todas las herramientas GNU para ARM identificadas con el prefijo arm-none-eabi- y el depurador arm-old-gdb solo para el caso de necesitar el simulador

DEBUG

Para realizar un debug se procede de la siguiente manera

Se debe ejecutar

arm-old-gdb --tui

luego dentro de este programa se escribe

target sim
load {archivo .elf a depurar}
file
list

Aparecerá en una ventana el fuente a depurar, escribiendo  break nn se hace un break point (nn es el numero de linea que te aparece al costado izquierdo del archivo fuente) un tutorial de la herramienta se puede ver en

UntitledWiki: WebHome/HerramientasProgramacion/HLaunchpad (última edición 2020-07-17 23:01:15 efectuada por GuillermoSteiner)