martes, 28 de junio de 2011

Programador AVR dragon

Cuando se hace uso de microcontroladores para el desarrollo de aplicaciones, es necesario tener ciertas herramientas. Una herramienta esencial para desarrollar firmware para aplicaciones embebidas es el programador. Éste es fundamental, pues permite descargar el archivo compilado a la memoria de programa del dispositivo, e incluso permite programar la memoria de datos no volátil EEPROM. Sin un programador sería imposible desarrollar aplicaciones embebidas.

Los dispositivos AVR pueden ser programados de múltiples formas; sin embargo la más común y sencilla es a través de ISP. En cuanto a programadores, es posible fabricar un programador sencillo usando únicamente el puerto paralelo, el correspondiente cable y unas cuantas resistencias; sin embargo, como hoy en día ya casi ningún computador tiene puerto paralelo, esta opción no sería muy viable. Por otra parte, también es posible encontrar en línea diseños de programadores que hacen uso del puerto serial, pero lastimosamente también es obsoleto y se tendría que usar un cable convertidor o buscar otro tipo de solución.

Los programadores que se mencionaron anteriormente son de fabricación manual, y pueden fallar de vez en cuando en el momento de programar, por lo cual, siempre se debe efectuar verificación sobre la memoria programada.

Otra opción que es muy práctica, es el uso de bootloaders, que aprovechan una sección de la memoria de programa para guardar una rutina especial que permite auto-programar el dispositivo, el cual recibe los datos a través de un puerto serial o incluso USB. Este es el caso de los microcontroladores USB de Atmel, los cuales vienen por defecto con un bootloader que les permite ser programados a través del puerto USB, haciendo uso de un sencillo programa de Atmel (FLIP), que puede descargar y usar de forma gratuita. Sin embargo, este programa no funciona en el momento que se modifique el inicio del microcontrolador para que funcione como dispositivo USB y se realicen aplicaciones usando esta interfaz. Para este caso sí es necesario usar un programador.

Existen muchos programadores comerciales, sin embargo, una muy buena opción es el AVR DRAGON. Este programador es muy completo, y permite programación tanto a bajo voltaje como a alto voltaje, y además incluye una función de depuración sobre hardware, permitiendo incluir breakpoints en hardware.



¿Cómo usar esta herramienta?

Si es usuario de Windows, se recomienda usar el Dragon junto con el IDE AvrStudio de Atmel, el cual incluye una interfaz gráfica muy sencilla y una gran cantidad de herramientas para programar y depurar dispositivos. Permite modificar de forma amigable los fusibles del microcontrolador y escribir tanto en la memoria flash como en la EEPROM. Soporta todos los modos de programación del Dragon, y también permite actualizar el firware, y modificar parámetros como la frecuencia de oscilación del programador.

Lastimosamente la herramienta AvrStudio no está disponible para Linux, y si se tiene este sistema operativo se debe hacer uso de otra aplicación. La aplicación en Linux más usada para controlar el Dragon es el AvrDude, el cual se puede bajar e instalar fácilmente desde Internet; incluso está disponible en los repositorios de Ubuntu. En este caso, es necesario hacer la programación desde una ventana de comandos, donde se indica el dispositivo a programar, el modo de programación, la memoria a programar, etc. A continuación se muestra un ejemplo de comando de programación de dispositivo:

sudo avrdude -p atmega32u4 -c dragon_isp -P usb -U flash:w:programa.hex 

Para el anterior ejemplo "-p" indica el microcontrolador objetivo, "-c" el programador y el modo de programación, "-P" es el puerto al cual se encuentra conectado el programador y el comando "flash:w:programa.hex" indica que se escribirá la memoria flash con el programa almacenado en el archivo "programa.hex".

Por otra parte, el AvrDude incluye un modo consola, útil para depuración o para verificar sectores específicos de cualquiera de las memorias del microcontrolador. A continuación se muestra la forma para ingresar al modo terminal de AvrDude:


sudo avrdude -p atmega32u4 -c dragon_isp -P usb -t

Para este caso, se tienen en cuenta los mismos parámetros especificados anteriormente, excepto que se da la opción "-t" que indica entrada a modo consola.

Para información adicional acerca del AvrDragon, AvrStrudio o AvrDude, es posible encontrar muy buena documentación en línea en la página de Atmel, y en la página de documentación oficial de AvrDude.

Como recomendación final: el Dragon es una herramienta muy poderosa, pero también es extremadamente delicado, pues no incluye una caja de protección, sino que el circuito se encuentra completamente expuesto. No se debe tocar directamente, para evitar daños por descarga electrostática, tampoco se debe tocar cuando esté en funcionamiento porque se pueden ocasionar daños en los circuitos. Se debe tener mucho cuidado también para evitar cortocircuitos en los pines de programación, voltaje de alimentación adecuado, y conectar correctamente los correspondientes pines, por lo cual se deben revisar las conexiones dos veces antes de energizar y programar.

Link recomendado: http://www.administracionsatelital.com/

No hay comentarios:

Publicar un comentario