viernes, 9 de agosto de 2024

Cargar bootloader Arduino con Arduino UNO

Programador Arduino UNO como ISP

Bienvenido a mi blog relacionado con la programación de microcontroladores, mi nombre es Pablo y hoy quiero mostrarles como pasar o el <firmware> del cargador(bootloader Arduino) al microcontrolador de la tarjeta <Arduino> UNO, te recuerdo que si tienes alguna sugerencia o critica constructiva con la presente publicación, al final encontraras mis datos de contacto.
El objetivo principal es utilizar una tarjeta Arduino UNO como programador para cargar el firmware del <bootloader> en otra tarjeta UNO, así que hacer esto necesitaras al menos dos tarjetas UNO, o en todo caso puedes utilizar un Microcontrolador alimentado sobre un Protoboard. 
Mencionar que este apartado esta bien documentado en la pagina oficial de Arduino como <Arduino As ISP>

Introducción al Tema

Un cargador o bootloader es programa muy ligero que tiene como propósito reprogramar la memora destinada a la aplicación, esto utilizando un modulo de comunicación propio del MCU, evitando de esta forma utilizar un programador externo. Para que esto funcione el firmware del bootloader debe ser programado en la tarjeta UNO con antelación, ya que este reside en un área de la memoria destinada para este fin, observe la figura 1. 

Fig1. Memoria de Programa del ATMega328

Los Microcontroladores AVR como el ATMega328 disponen del soporte para utilizar un bootloader, lo que facilita bastante la implementación del mismo, porque agregan la funcionalidad para que el programa inicie desde el sector donde se encuentra el bootloader y posterior pasar el control a la aplicación, además agrega medidas de protección para evitar el acceso y posible modificación de esta área desde la sección destinada a la aplicación.

De hecho el MCU de todas las tarjetas Arduino ya tienen programado un bootloader, caso contrario no seria posible utilizar el software de Arduino para cargar [UPLOAD] nuestros programas de aplicación. Programar un bootloader no es algo habitual, pero podría ser necesario en las siguientes situaciones:

  • Si la memoria fue borrada aplicando el comando chip-erase.
  • Si compraste el MCU solo, este vendrá con la memoria vacía.

Programador Arduino As ISP

El programador  Arduino As ISP es parte del software que traer Arduino, la documentos que se provee en la pagina oficial abarca a todas las tarjetas UNO, MEGA, DUE, ZERO, etc.
Nosotros trabajaremos solo con Arduino UNO, entonces lo que tienes que en primer instancia es conectar las dos tarjetas, tal como ser observa en la figura 2, los pines interconectados son:
TARGET: Pin [13]  [12]  [11] [RESET] [5V]  [GND]
PROGRAMMER: [13]  [12]  [11] [10]    [5V]  [GND]
 

Fig2. Conexión Arduino Programador y Destino
 
En la imagen de la figura 2, la tarjeta que funcionara como programador se identifica como PROGRAMMER, y la tarjeta en la que se programara el firmware del bootloader, de denomina TARGET, entonces una vez realizada las conexiones, vamos a proceder con los siguientes pasos:
 
Paso 1: Conectar la tarjeta PROGRAMER al ordenador y abrir la Aplicación Arduino, yo utilice la versión 2.3.2, una vez abierto seleccionamos en el menú:
[File->Examples->ArduinoISP], esto abrirá una nueva ventana con el código para el programador, ver figura 3.

Fig3. Abrir el código del Programador ArduinoISP
 
Paso 2: Una vez abierto el código del programador ArduinoISP, procedemos a compilar y luego a cargarlo en la Tarjeta PROGRAMMER, ver figura 4.

Fig4. Compilar y Cargar ArduinoISP en el PROGRAMMER 
 
Paso 3. Seleccionar en el menú: [Tools->Programmer->Arduino as ISP]

Fig5. Seleccionar el Programador ArduinoISP


Paso 4. Realizamos la programación del bootloader seleccionando en el menu: [Tools->Burn Bootloader], al finalizar nos muestra el mensaje de la figura 7.

Fig7. Bootloader cargado en el TARGET
Eso es todo, ya tenemos la tarjeta TARGET con el bootloader de Arduino listo para usarlo.

Si quieres conocer mas a profundidad la programación ISP con avrdude, puede ver la siguiente publicación. <Activar Protección Arduino UNO>

Conclusiones

Luego de haber realizar las pruebas del programador Arduino as ISP cargando el bootloader en otra tarjeta Arduino como Destino TARGET, se procedió a compilar un programa como ejemplo y cargarlo, verificando así el correcto funcionamiento del mismo.  Abajo dejo un vídeo que muestra lo descrito en esta publicación.
 


Sin mas que mencionar agradezco tu visita al blog y espero que el ejemplo visto pueda ser útil en tu formación y el proyecto que desarrollas.

Atentamente, Pablo Zárate Arancibia  email: pablinza@me.com / pablinzte@gmail.com, @pablinzar

Santa Cruz de la Sierra - Bolivia

No hay comentarios:

Publicar un comentario