Está en la página 1de 6

ESCUELA SUPERIOR POLITÉCNICA DEL LITORAL

FACULTAD DE INGENIERÍA EN EN
ELECTRICIDAD Y COMPUTACIÓN
FIEC

PRÁCTICAS DE LABORATORIO DE
SISTEMAS EMBEBIDOS

Programación de un Sistema Embebido de bajos recursos


computacionales (GNU-TOOLCHAIN)

PRÁCTICA #4
OBJETIVOS

• Familiarizarse con el software GNU toolchain.


• Aprender a programar un sistema embebido de bajos recursos
computacionales.
• Identificar las ventajas y desventajas con respecto a otros softwares de
programación de un sistema embebido.

CONTENIDO

a) Inicialización con el software GNU toolchain


b) Creación de código inicial en el software GNU toolchain
c) Ejecución del código en el sistema embebido
d) Resumen de la práctica

¿Que es GNUtoolChain?
El GNU toolchain agrupa a una serie de proyectos que contienen las herramientas de desarrollo de
software producidas por el proyecto GNU. Estos proyectos forman un sistema integrado que es
usado para programar tanto aplicaciones como sistemas operativos.

El GNU toolchain es un componente vital en el desarrollo del núcleo Linux, el desarrollo de BSD y
de software para sistemas embebidos. Partes del toolchain de GNU también son usadas
en Solaris y en Microsoft Windows con Cygwin y MinGW/MSYS.

Proyectos que son incluidos en el GNU toolchain


• GNU make: automatización de la estructura y de la compilación.
• La GNU Compiler Collection (GCC): compiladores para varios lenguajes.
• El GNU Binutils: enlazador, ensamblador y otras herramientas.
• El GNU Debugger (GDB): un depurador interactivo.
• El GNU build system (autotools): Autoconf, Autoheader, Automake, Libtool -
generadores de makefiles.

GNUtoolchain es usado para programar sistemas embebidos con bajos recursos computacionales,
lo cual permite que desde cualquier distribución de Linux programemos un sistema embebido
como es el caso de el atmega328p, la cual usaremos en esta práctica.

ABRIR EN LA MÁQUINA VIRTUAL UBUNTU

Para instalar los paquetes necesarios seguir los siguientes pasos:

1) Abrir terminal en Linux, con el comando: crtl+alt+t


2)
3) Ejecutar el commando:
a. sudo apt-get update
b. sudo apt-get upgrade
c. sudo apt-get install avr-libc gcc-avr avrdude
d. sudo apt-get install build-essential
4) Acceder a la carpeta de Documents
a. cd /home/(nombre de usuario)/Documents

b.
5) crear una carpeta nueva:
a. sudo mkdir p1TT (p1+iniciales del estudiante)
6) acceder a la carpeta creada:
a. cd p1TT

7) Crear un archivo:
a. sudo nano p1.c (nano es el editor, existen otros editores)
8) Dentro del archivo copiar el código: #include <avr/io.h>
#include <util/delay.h>

int main(void)
{
DDRB |= ((1 << DDB5)); //asignar a puerto b5 como salida//pin 13 de arduino
DDRB |= ((1 << DDB3)); //asignar a puerto b3 como salida//pin 11 de arduino DDRB
|= ((1 << DDB2)); //asignar a puerto b2 como salida//pin 10 de arduino

while(1) {

PORTB = ((1 << PB2)); //asignar 1 al puerto b2


_delay_ms (1000L);
PORTB = ((1 << PB3)); //asignar 1 al puerto b3
_delay_ms (1000L);
PORTB = ((1 << PB5)); //asignar 1 al puerto b5
_delay_ms (1000L);
} return
0;
}

9) Crtl+x para salir pero pedirá guardar, poner Y y enter 10)


Ahora crear un archivo Makefile:
a. sudo nano Makefile 11)
copiar el siguiente código:
MCU = atmega328p
F_CPU = 16000000
CC = avr-gcc
CFLAGS= -O2 -Wall -std=gnu11 -mmcu=$(MCU)
CPPFLAGS=-DF_CPU=$(F_CPU)L
OBJCOPY=avr-objcopy

CMD_FLASH=avrdude
MCU1 = ATMEGA328P
DEVPORT = /dev/ttyUSB0 #puede que USB0 le salga error y deberá cambiar a ACM0, o el
#número de puerto asignado a su arduino
BAUDRATE=115200

.PHONY: default
default : EXE_FILE HEX_FILE flash

EXE_FILE: $(FNAME).c
$(CC) $(CFLAGS) $(CPPFLAGS) $< -o $(FNAME)
HEX_FILE: $(FNAME)
$(OBJCOPY) -O ihex $< $(FNAME).hex
flash : $(FNAME).hex
$(CMD_FLASH) -F -V -c arduino -p $(MCU1) -P $(DEVPORT) -b $(BAUDRATE) -U $@:w:$<
12) Guardar y cerrar
13) Conectar el arduino y Ejecutar:
a. sudo make FNAME=p1 (ojo aquí va el nombre de su archivo sin la extensión)
14) Físicamente (o en el simulador) conectar dos leds, uno al pin 11 y otro al pin 10, haciendo el uso
adecuado de resistencias.

REPORTE:
1) Elaborar un código haciendo uso de la herramienta GNU-ToolChain
(usando el código aprendido como base) para generar el archivo
nombredeprograma.hex, en el cual se genere encendido y pagado de
8 leds (en forma de ruleta) en diferentes tiempos, use proteus
para la simulación.
2) Únicamente colocar carátula, y en la siguiente hoja, REPORTE:
3) Capturas de la ejecución en el simulador proteus (la captura debe
el circuito de al menos 2 estados y cada uno de ellos se debe
mostrar en la misma posición su nombre apellido y fecha, tal como
se muestra en la imagen anterior.
4) Adjuntar el circuito de proteus en el zip.
5) Conclusiones
6) Recomendaciones

También podría gustarte