Bienvenido: Ingresar
location: Diferencias para "WebHome/HerramientasProgramacion"
Diferencias entre las revisiones 3 y 4
Versión 3 con fecha 2010-06-04 16:36:35
Tamaño: 9526
Comentario:
Versión 4 con fecha 2010-06-04 16:38:43
Tamaño: 9524
Comentario:
Los textos eliminados se marcan así. Los textos añadidos se marcan así.
Línea 46: Línea 46:
   * Un archivo llamado convencionalmente ''''makefile__ del cual ''make'' lee las relaciones y las acciones a realizar sobre los archivos.
  El archivo ''''makefile__ está compuesto básicamente por una sucesión de '''reglas''' que tienen la siguiente estructura: {{{
   * Un archivo llamado convencionalmente ''makefile'' del cual ''make'' lee las relaciones y las acciones a realizar sobre los archivos.
  El archivo ''makefile'' está compuesto básicamente por una sucesión de '''reglas''' que tienen la siguiente estructura:
{{{

Herramientas de Programación

Antes de conocer un poco sobre las herramientas de programación que posee los microcontroladores ARM, debemos repasar un par de conceptos importantes.

GNU-ARM

GNU toolchain es un término general para nombrar a una colección de herramientas de programación producidas por el proyecto GNU. Estas herramientas utilizadas de manera encadenada (en serie) permiten desarrollar aplicaciones y sistemas operativos.

El toolchain de GNU juega un rol vital en el desarrollo del kernel de Linux, BSD y software para sistemas embebidos.

Proyectos incluidos en el toolchain de GNU:

  • GNU make: Automation tool for compilation and build;
  • GNU Compiler Collection (GCC): Suite of compilers for several programming languages;
  • GNU Binutils: Suite of tools including linker, assembler and other tools;
  • GNU Debugger (GDB): Code debugging tool;
  • GNU build system (autotools):
    • Autoconf
    • Autoheader
    • Automake
    • Libtool

GNU ARM toolchain Se refiere a la utilización de estas herramientas para generar código ARM.

Compilación

Un compilador es un programa que traduce un programa escrito en un lenguaje de programación a otro lenguaje de programación. Usualmente este proceso de traducción está dividido en tres estratos, conocidos como Front-End, Middle-End y Back-End.

Introducción a Compiladores

Enlazado

El proceso de pasar de un archivo objeto reubicable a un objeto binario absoluto listo para ser cargado en nuestro microcontrolador se denomina enlazado o su nombre en ingle linker.

Introducción a Enlazadores y LinkerScript

Gestor de Proyecto (MAKE)

make es una utilida que nos permite automatizar el mantenimiento de un proyecto, esto es:

  • Determinar automáticamente qué bloques de un gran proyecto se tienen que recompilar, y los comandos para realizar esto.
  • Enlazar el proyecto
  • Crear archivos secundarios de soporte
  • etc.

Desplegar todas las capacidades de make está más allá del alcance de nuestro curso, por ello, sólamente veremos a continuación los elementos básicos necesarios para la compilación con make; los que por otro lado serán suficientes para nosotros. No obstante para quienes tengan la inquietud de indagar más profundamente sobre las capacidades de make se recomienda el manual GNU Make o también algunas adaptaciones al castellano como esta. Un escenario genérico de aplicación de la utilidad make sería:

  • Un conjunto de archivos relacionados entre sí de alguna manera fija.
  • Un conjunto de acciones a realizar con los archivos disparadas a partir de la modificación de uno o varios de los mismos que se derraman a partir del modificado a todos aquellos que del primero "dependan".
  • Un intérprete de comandos donde ejecutar make y donde make pueda ejecutar los programas definidos por las acciones a realizar sobre los archivos.

  • Un archivo llamado convencionalmente makefile del cual make lee las relaciones y las acciones a realizar sobre los archivos.

  • El archivo makefile está compuesto básicamente por una sucesión de reglas que tienen la siguiente estructura:

target ... : prerequisites ...
        command
        ...
        ...

Herramientas

Para realizar nuestro proyecto en ARM, necesitaremos una serie de herramientas que nos permitirán compilar, linkear, debuging, manejar nuestro proyecto, etc.

Necesitaremos entonces, conocer las posibilidades que tenemos en la elección de estas herramientas.

Herramientas Pagas

Estas herramientas vienen acompañadas de un IDE, el cual integra todas las fases de un proyecto en un solo entorno visual, permitiendo con simples "click" sobre botones, crear compilar y grabar en nuestro micro un proyecto. Ventajas:

  • Posee una curva de aprendizaje muy alta (en un par de minutos puedo crear un proyecto, realizar un debug linea por linea y grabarlo a un microcontrolador).
  • En algunos casos posee optimizaciónes en las herramientas de compilación y/o enlazado, que permite optimizar tamaño y tiempo de ejecución de nuestro proyecto.
  • Poseen soporte técnico, a la hora de tener un proyecto grande y costoso en una empresa es importante poder levantar un teléfono y obtener respuestas sobre algún problema con la herramienta.

Desventajas:

  • Costos, en el caso de una empresa puede no ser significativo, pero para proyecto pequeños o de contar con pocos recursos, antes de gastar U$s4000 o mas se debe pensar bien.
  • Se ocultan procesos, el echo de ocultar procesos permite esta curva de aprendizaje tan alta, de vuelta a lo que pasaba con los costos, esto generalmente no es importante para una empresa, pero si lo que se necesita es conocer a fondo los distintos procesos en la construcción de un proyecto, como interactua cada parte, de que forma se graban los datos en mi microcontrolador, etc. un IDE comercial no es la mejor opción,

A continuación vemos algunos de estos entornos

Nombre

Firma

IDE

Compilador

Web Site

KEIL

ARM Company

RealView Microcontroller Development Kit

RealView

http://www.keil.com/arm/

IAR

IAR System

IAR Embedded Workbench for ARM

Propio

http://www.iar.com/ewarm

CrossWorks for ARM

Rowley Associates

Cross Studio

GCC

http://www.rowley.co.uk/arm/index.htm

Sourcery G++

CodeSourcery

Sourcery G++ IDE

GCC

http://www.codesourcery.com/sgpp

Embest

EMBEST INFO&TECH CORPORATION

Embest IDE for ARM

GCC

http://www.embedinfo.com/English/Product/idemain.asp

ARM Development Tool

Gao Tek co.

GAO IDE for ARM Development Tools Suite A/B

GCC

http://www.gaotek.com/index.php

ARM development tools

ImageCraft Creations Inc.

ARM development tools IDE

ICCV7 for ARM

http://www.imagecraft.com/devtools_ARM.html

Herramientas Libres

Aquí debemos hacer una aclaración en un error muy habitual, confundir herramientas libres con herramientas gratis. Herramientas Gratis, son provista generalmente por las empresas que hacen Herramientas Pagas, la diferencia, es que le sacan algunas características, restringe el tamaño del proyecto o solo permiten usarla para fines académicos, tenemos otra vez un IDE muy lindo con botoncitos que hacen todo por milagro y sin saber que ocurre abajo, pero con el problema que al crecer nuestro proyecto no podemos mas compilarlo por las restricciones que posee o en el momento que un proyecto hecho para una materia en la facultad se puede transferir a una empresa, no lo podemos comercializar sin salir de la ley. Herramientas Libre, en este caso son herramientas que nacieron y/o crecieron en una comunidad de programadores, son herramientas con las cuales somos libre de hacer lo que querramos con nuestro proyecto, esto es así hasta el punto, de que las mayoría de los entornos pagos internamente poseen herramientas libres, muchas veces la herramienta que te están vendiendo es solo el IDE, debido a que el compilador, enlazador, librerías y hasta el gestor de proyector son GNU.

Podemos aclarar brevemente las ventajas y desventajas Ventajas

  • Proyecto sin restricciones ni costos
  • Total control, conozco perfectamente cada una de las partes que posee mi proyecto y puedo modificarla a mi gusto

Desventajas

  • La pincipal desventaja se puede dar con referencia a algunas de las herramientas pagas ( las mas caras ) y es la optimización, algunas herramientas pagas reescribieron librerías, compiladores y enlazadores, permitiendo crear proyectos mas compactos y rápidos que las GNU.

IDE Libres || YAGARTO IDE basado en GNU-ARM e interfase Eclipse, disponible solo para Windows ||http://www.yagarto.de/||

paginas con pequeños script o tutoriales para compilar el GNU-ARM

OpenHardware

http://openhardware.net/Embedded_ARM/Toolchain/

rod.info

http://rod.info/ARM7Micro

gnu-arm-toolchain-installer

http://mcuprogramming.com/forum/arm/gnu-arm-toolchain-installer/

Entorno de Programación

En la programación del microcontrolador se utilizará el proyecto GNU-ARM bajo Linux. Para su uso se dispone un instalador que se podrá bajar, proveyendo de esta forma todas las herramientas necesarias construir un proyecto

|| Versiones disponibles autoinstalables ||||||||

GNUARM 0.1

Herramientas-ARM-0.1.run

86.8Mb

Pasos para instalar las herramientas de programación

  • Bajar el link a una carpeta de la PC
  • cambiar los permisos del archivo para permitir la ejecución.
  • correr el programa y seguir los pasos (en la instalación se solicitará password de root)

con esto se deberá instalar todo el proyecto GNUARM en la carpeta /opt/gnu-arm

Para los alumnos que quieran programar en Windows, podrán hacerlo bajando e instalando el Yagarto, herramienta libre bajo Windows, la catedra no usa esta herramienta por lo tanto no puede dar soporte.

Grabar el microcontrolador

Una vez compilado y enlazado el proyecto podemos grabarlo al microcontrolador, para esto hacemos un apartado con el link siguiente para verlo en mas detalle

Grabar el Microcontrolador

UntitledWiki: WebHome/HerramientasProgramacion (última edición 2016-08-03 22:31:05 efectuada por GuillermoSteiner)