Tamaño: 2953
Comentario:
|
Tamaño: 7020
Comentario:
|
Los textos eliminados se marcan así. | Los textos añadidos se marcan así. |
Línea 1: | Línea 1: |
= Nuevas Herramientas = | = Herramientas de Programación y Depurado = |
Línea 3: | Línea 3: |
El primero se reemplaza con el '''ddd''' herramienta disponible en la mayoría de los repositorios y el '''lpc21isp''' se puede buscar el proyecto en la web, se descarga y se compila fácilmente por no poseer muchas dependencias. | El proyecto ''GNU-ARM toolchain'' es el compilado de las herramientas tradicionales del ''GNU toolchain'' configuradas para generar o reconocer código ARM. |
Línea 5: | Línea 5: |
(en la siguiente pagina, podes encontrar mas detalles del grabador [[../GrabarARM|Programación de la Placa]]) | 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. |
Línea 7: | Línea 8: |
El proyecto se encuentra en la página | 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 |
Línea 11: | Línea 13: |
https://launchpad.net/~terry.guo/+archive/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. |
Línea 13: | Línea 15: |
https://launchpad.net/~team-gcc-arm-embedded/+archive/ubuntu/ppa | |
Línea 14: | Línea 17: |
En la misma se encuentra un instructivo para instalar las herramientas. | En este último se encuentra un instructivo para instalar las herramientas. |
Línea 17: | Línea 20: |
Paso 1: * Agregar el repositorio al directorio source.list.d, para ello se abre una terminal y se ingresa | * Paso 1: Agregar el repositorio al directorio source.list.d, para ello se abre una terminal y se ingresa |
Línea 20: | 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 22: | Línea 24: |
Paso 2: * Se actualiza el repositorio ingresando |
* Paso 2: Se actualiza el repositorio ingresando |
Línea 27: | Línea 28: |
Paso 3: * Se instala el "toolchain" escribiendo |
* Paso 3: Se instala el "toolchain" escribiendo |
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) escribiendo {{{ sudo apt-get install gdb-arm-none-eabi }}} En caso que esta ultima instalación termine con un mensaje de error, se puede forzar la misma escribiendo |
=== 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) [[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 |
Línea 39: | Línea 49: |
sudo dpkg -i --force-overwrite /var/cache/apt/archives/gdb-arm-none-eabi }}} 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 se oprime enter para realizar la instalación. |
sudo cp arm-old-64-gdb /usr/bin }}} |
Línea 43: | Línea 53: |
Una vez instalado el paquete, se tendrá las herramientas con un prefijo '''arm-none-eabi-''' | ##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]] ##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 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 47: | Línea 69: |
Se puede realizar con ddd o con arm-elf-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-elf-eabi-gdb ex1.elf }}} Donde '''ex1.elf''' es la aplicación, '''arm-elf-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 73: | Línea 73: |
arm-elf-eabi-gdb --tui | arm-old-gdb --tui |
Línea 78: | Línea 78: |
load (nombre del .elf) file (nombre del .elf) |
load {archivo .elf a depurar} file list |
Línea 87: | Línea 88: |
== Proyecto CIAA == La Cátedra utiliza para el desarrollo de los diferentes prácticos una placa EDU-CIAA 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 http://www.proyecto-ciaa.com.ar/ Para la instalación del IDE y de las demás herramientas necesarias para le programación de esta placa, pueden dirigirse a http://www.proyecto-ciaa.com.ar/devwiki/doku.php?id=docu:fw:bm:ide:install ##== DEBUG PLACA == ##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 ##=== 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. ##Pasos para instalar PyOCD ## 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}}}. ## 1. Instalar la herramienta pyUSB, la misma se puede bajar desde https://github.com/mbedmicro/pyOCD ## a. Se descomprime en un directorio. ## a. dentro de ese directorio se corre {{{python setup.py install}}}. ##Cada herramienta tiene un readme con mas detalles de la instalación ##==== Ejecución del PyOCD ==== ##para realizar el debug se realizan los siguientes pasos ## 1. Conectar la placa de desarrollo a la PC ## 1. En el directorio de la herramienta pyOCD hacemos {{{cd test}}} ## 1. Lanzamos el pyOCD escribiendo {{{sudo python gdb_server.py}}} (ejecutarlo como root es necesarios si el usuario no tiene permiso para el usb, en caso contrario se puede eliminar el sudo). ## 1. En otra consola se corre el arm-xxxxx-gdb --tui ## 1. Dentro del gdb, se escribe {{{target remote localhost:3333}}} ## 1. Ahora se procede como antes con las operaciones de load y file ## 1. El programa ahora esta grabado en la placa y detenido, se procede a realizar un break point para luego continuar, (la operación '''r''' o '''run''' no es permitida, en cambio se ##utiliza la operación '''c''' o '''continue'''). |
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)
- 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-64-gdb /usr/bin
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
Proyecto CIAA
La Cátedra utiliza para el desarrollo de los diferentes prácticos una placa EDU-CIAA
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
http://www.proyecto-ciaa.com.ar/
Para la instalación del IDE y de las demás herramientas necesarias para le programación de esta placa, pueden dirigirse a
http://www.proyecto-ciaa.com.ar/devwiki/doku.php?id=docu:fw:bm:ide:install