Programación de microcontroladores AVR en GNU/Linux
Los microcontroladores AVR de ATMEL son una familia bastante potente y asequible. Son RISC y ofrecen características como la programación ISP (en el propio circuito), temporizadores, comparadores analógicos, PWM, RS232 y un largo etcétera. Aquí se explica qué se necesita para poder escribir programas en C y C++
Ingredientes
Lo primero que necesitas instalar son las librerias:
- avr-libc
- binutils
Además necesitas algunas otras cosas como:
- avr-gcc
- avr-gdb
Para instalarlos, si usas Debian ya sabes:
Compilando un programa
El siguiente ejemplo de Makefile sería para poder compilar un programa dividido en varios ficheros fuente para un AT90S8515. Se trata de un micro con 512 Bytes de RAM, 8 K de Flash y 512 Bytes de EEPROM. Éste modelo ya está un poco obsoleto y ha sido sustituido por el ATMEGA8515, que es totalmente compatible pero ofrece varias mejoras. Aunque este ejemplo servirá para ilustrar la creación de un Makefile:
Esto genera un fichero, prueba.hex con el contenido del código máquina para el microcontrolador. El código está en formato de INTEL HEXADECIMAL. También obtendrás otro archivo prueba.dsm en el que puedes ver el desensamblado del código generado.
Los ficheros fuente de los que se parte son prueba.c, potencia.c y williams_8515.c
Otras cosas interesantes
Algunas cosas interesantes que nos ofrecen las binutils son por ejemplo:
prueba.out
fue generado por el Makefile
y contiene información diversa sobre la compilación. En éste ejemplo, la salida mostrará el tamaño de las diferentes secciones del programa.
Hace lo mismo que el comando mostrado anteriormente, pero de forma mas resumida.
Por último, el comando mostrado en el Makefile
:
Devuelve el desensamblado del código.