Skip to Content

¿Qué hace Burn Bootloader en Arduino IDE?

¿Qué hace Burn Bootloader en Arduino IDE?

Este artículo le dará toda la información necesaria sobre el Bootloader en la placa Arduino AVR. Después de este artículo, usted aprenderá acerca de lo que es Bootloader y lo que hace el gestor de arranque de quemado en Arduino IDE.

Como programador de ISP, ¿cómo se carga el Bootloader en la placa Arduino Uno y Arduino Mega?

Overview

Suministros

Componentes de hardware

Arduino Uno Rev3x1Amazon
Arduino Mega 2560 Rev3x1Amazon
Cable USB tipo A/Bx1Amazon

Software

Arduino IDEArduino IDE

Makerguides.com participa en el Programa de Asociados de Amazon Services LLC, un programa de publicidad de afiliados diseñado para proporcionar un medio para que los sitios ganen honorarios de publicidad mediante la publicidad y los enlaces a productos en Amazon.com.

¿Qué es el gestor de arranque?

El cargador de arranque es un código almacenado en la memoria de la sección flash del microcontrolador. 

Cuando enciendas tu MCU, primero saltará a la sección flash del bootloader y buscará el nuevo código de actualización para la sección flash de la aplicación.

Qué es el gestor de arranque

En otras palabras, el bootloader es un firmware que permite la instalación de un nuevo firmware en el microcontrolador a través de diferentes interfaces de comunicación como SPI o UART.

¿Es necesario utilizar el Bootloader?

No, no es necesario utilizar un cargador de arranque para el microcontrolador. Si quieres utilizar toda la memoria flash de programación del chip o evitar el retraso del bootloader en el arranque, puedes grabar tu código utilizando un programador externo.

La mayoría de las veces, los cargadores de arranque en los microcontroladores simplifican la carga de programas en los mismos. 

También se pueden utilizar para inicializar los dispositivos de entrada/salida conectados a los microcontroladores antes de comenzar el programa de aplicación principal.

Bootloader en Arduino Uno

La placa Arduino Uno viene con un microcontrolador AVR ATmega328P para sus plataformas con secciones de memoria de programa. 

El programa del cargador de arranque se escribe en la sección del cargador de arranque, y el programa de la aplicación se escribe en la sección de la aplicación.

Todos los microcontroladores AVR se pueden programar utilizando diferentes métodos como la programación en el sistema (ISP), Atmel-ICE para AVR y ARM, la programación en paralelo y el Bootloader.

Atmel-ICE
Fuente: Atmel-ICE

La ventaja del bootloader es que no necesitas ningún hardware externo para cargar el archivo hexadecimal en el microcontrolador. 

Los cargadores de arranque de la familia Arduino utilizan en su mayoría una simple comunicación en serie (UART) para descargar el archivo hex o bin y escribirlo en la sección de aplicaciones.

¿Cómo funciona el gestor de arranque de Arduino?

El cargador de arranque de Arduino permite programar o reprogramar la memoria Flash a través de la comunicación serie.

Sin él, necesitarías un programador de hardware dedicado para cambiar el código en el ATmega328P o el ATmega2560.

El ATmega328P o ATmega2560 dedica una sección de su memoria Flash para el código del cargador de arranque.

En el caso del Arduino Uno y del Arduino Mega, el gestor de arranque del Arduino espera durante el tiempo que dura la vigilancia de los pines de comunicación en serie (UART). 

Supongamos que el gestor de arranque no recibe una determinada secuencia de bytes a través del puerto serie.

En ese caso, el procesador salta a la sección del programa "usuario" para cargar lo que ya está en la memoria del programa. Este salto carga su programa.

Si se recibe la secuencia predefinida, entonces ejecuta el código del cargador de arranque. En este punto, avrdude comenzará a enviar los datos binarios de su programa con un protocolo a través del puerto serie virtual. 

La memoria de programa del ATmega328P u otro MCU AVR almacena el flujo de bytes entrante. Una vez completado, el microcontrolador se reinicia y comienza el nuevo código.

¿Tiene el Arduino Uno un cargador de arranque?

Por defecto, Arduino Uno viene con un gestor de arranque en él. Sin embargo, si usted ha reemplazado el microcontrolador con un nuevo microcontrolador, entonces usted necesita para instalar un gestor de arranque en un nuevo microcontrolador.

Placa Arduino como ISP y Procedimiento de Grabación del Bootloader

Si el Bootloader de tu placa Arduino Uno o Arduino Mega está dañado, o si sustituyes el microcontrolador antiguo por uno nuevo, esta sección te ayudará a instalar el Bootloader en tu placa Arduino.

Si su placa no tiene un cargador de arranque, mostrará un error de tiempo de espera, como se muestra en la siguiente imagen.

la placa no tiene un cargador de arranque

Este problema se puede resolver utilizando Arduino Uno o Arduino Mega como ISP. Puedes cargar el código de la aplicación y el Bootloader en la MCU de destino con tu placa Arduino.

En esta sección se discutirán cuatro casos diferentes con la placa Arduino Uno y Arduino Mega:

  1. Arduino Uno como ISP y Arduino Mega como MCU de destino
  2. Arduino Uno como ISP y Arduino Uno como MCU de destino
  3. Arduino Mega como ISP y Arduino Uno como MCU de destino
  4. Arduino Mega como ISP y Arduino Mega como MCU de destino

1) Arduino Uno como ISP y Arduino Mega como MCU de destino

Interfaz de Arduino Uno como ISP a Arduino Mega como MCU de destino

Interfaz de Arduino Uno como ISP a Arduino Mega como MCU de destino
Interfacing Arduino Uno with Arduino Mega

La siguiente tabla muestra la interconexión de Arduino Uno a Arduino Mega a través de los pines SPI. Asegúrese de que la tierra es común.

Placa ArduinoMOSIMISOSCKCS
Uno ISP11 o ICSP-412 o ICSP-113 o ICSP-310
Objetivo Mega256051 o ICSP-450 o ICSP-152 o ICSP-3RESET

Esta interfaz SPI: Los pines MISO, MOSI y SCK están disponibles en una ubicación física consistente en la cabecera ICSP.

Este conector también es utilizado por los escudos con la interfaz SPI, lo que permite que los escudos funcionen en todas las placas.

SPI Interface pins of Arduino
SPI Interface pins of Arduino

¿Cómo configurar Arduino Uno como un ISP?

Los siguientes pasos le dan información sobre la configuración de Arduino Uno como ISP con Arduino IDE.

Paso 1: Abre el IDE de Arduino y ve a Herramientas > Placas > Placas Arduino AVR > Arduino Uno. Como se muestra en la siguiente imagen.

Abra el IDE de Arduino y vaya a Herramientas

Paso 2: Seleccione el puerto COM correspondiente para Arduino Uno en Herramientas > Puerto.

Selecciona el puerto COM correspondiente para Arduino Uno en Herramientas

Paso 3: A continuación, seleccione Herramientas > Programador > Arduino como ISP.

A continuación, seleccione Herramientas

Paso 4: Ir a Archivo > Ejemplos > ArduinoISP > ArduinoISP.

ArduinoISP

Paso 5: Haga clic en el botón Cargar para cargar el boceto en la placa.

Haz clic en el botón de carga para subir el boceto a la placa

Después de estos cinco pasos, Arduino Uno funcionará ahora como un ISP.

Caso 1: Carga de código de aplicación de Arduino Uno como ISP a Arduino Mega

Después de completar los cinco pasos mencionados para Arduino Uno como ISP, sube un código de boceto (código de aplicación) desde Arduino IDE a Arduino Mega a través de Arduino Uno como ISP.

Paso 6: Seleccione Herramientas > Placas > Placas Arduino AVR > Arduino Mega o Mega 2560.

Arduino Mega o Mega 2560

Paso 7: Abra el código en Arduino IDE que desea cargar en Arduino Mega. En Arduino IDE, vaya a Sketch > Upload Using Programmer.

Cargar con el programador

Después de todos estos pasos, has subido con éxito el código del sketch a Arduino Mega desde Arduino Uno como ISP.

Caso 2: Carga del Bootloader de Arduino Uno como ISP a Arduino Mega

Si no has configurado tu Arduino Uno como ISP, sigue los pasos 1 a 5 mencionados en "¿Cómo configurar Arduino Uno como ISP?" que harán que tu Arduino Uno esté listo como programador ISP.

Ahora, te mostraré cómo cargar el Bootloader en el Arduino Mega desde el Arduino Uno como ISP con burn bootloader.

Paso 6: Seleccione Herramientas > Placas > Placas Arduino AVR > Arduino Mega o Mega 2560.

Arduino Mega o Mega 2560

Paso 7: A continuación, seleccione Herramientas > Grabar Bootloader.

Grabar el gestor de arranque

Si tiene éxito, el siguiente mensaje de confirmación se mostrará en la parte inferior de Arduino IDE.

mensaje de confirmación

2) Arduino Uno como ISP y Arduino Uno como MCU de destino

Interfaz de Arduino Uno como ISP a Arduino Uno como MCU de destino

Interfaz de Arduino Uno como ISP a Arduino Uno como MCU de destino

La siguiente tabla muestra la interconexión de Arduino Uno con Arduino Uno a través de los pines SPI. Asegúrese de que la tierra es común.

Placa ArduinoMOSIMISOSCKCS
Uno ISP11 o ICSP-412 o ICSP-113 o ICSP-310
Objetivo Uno11 o ICSP-412 o ICSP-113 o ICSP-3RESET

Caso 1: Carga de código de aplicación de Arduino Uno como ISP al objetivo de Arduino Uno

Los siguientes pasos le dan información sobre la carga de un código de boceto (código de aplicación) de Arduino IDE a Arduino Uno desde Arduino Uno como ISP.

En primer lugar, es necesario configurar Arduino Uno como ISP como se menciona en ¿Cómo configurar Arduino Uno como ISP?

Después de completar todos los pasos del 1 al 5, debe seguir el paso 6 que se menciona a continuación.

Paso 6: Abra el código en Arduino IDE que desea cargar en Arduino Uno. En Arduino IDE, vaya a Sketch > Upload Using Programmer.

Sketch > Cargar con el programador

Caso 2: Carga del Bootloader de Arduino Uno como ISP a Arduino Uno

Si no has configurado tu Arduino Uno como ISP, sigue los pasos 1 a 5 mencionados en "¿Cómo configurar Arduino Uno como ISP?" que harán que tu Arduino Uno esté listo como programador ISP.

Paso 6: A continuación, seleccione Herramientas > Grabar Bootloader.

Grabar el gestor de arranque

Después del paso 6, has cargado con éxito el bootloader en el Arduino Mega2560.

cargado el bootloader en el Arduino Mega2560

3) Arduino Mega como ISP y Arduino Uno como MCU de destino

Interfaz de Arduino Mega como ISP a Arduino Uno como MCU de destino

Interfaz de Arduino Mega como ISP a Arduino Uno como MCU de destino
Connecting Arduino Mega to Arduino Uno via SPI

La siguiente tabla muestra la interconexión de Arduino Mega con Arduino Uno a través de los pines SPI. Asegúrese de que la tierra es común.

Placa ArduinoMOSIMISOSCKCS
Mega ISP51 o ICSP-450 o ICSP-152 o ICSP-310
Objetivo Uno11 o ICSP-412 o ICSP-113 o ICSP-3RESET

¿Cómo configurar el Arduino Mega2560 como un ISP?

Los siguientes pasos le dan información sobre la configuración del Arduino Mega2560 como ISP con el IDE de Arduino.

Paso 1: Abra el IDE de Arduino y vaya a Herramientas > Placas > Placas Arduino AVR > Arduino Mega o Mega 2560, como se muestra a continuación.

Abra el IDE de Arduino y vaya a Herramientas

Paso 2: Seleccione su puerto COM correspondiente en Herramientas > Puerto. Donde está conectada la placa Arduino Mega.

correspondiente al puerto COM en las herramientas

Paso 3: A continuación, seleccione Herramientas > Programador > Arduino como ISP.

Arduino como ISP

Paso 4: Ir a Archivo > Ejemplos > ArduinoISP > ArduinoISP.

ArduinoISP

Paso 5: Haga clic en el botón Cargar para cargar el boceto en la placa.

Haz clic en el botón de carga para subir el boceto a la placa

Caso 1: Carga de código de aplicación de Arduino Mega como ISP a Arduino Uno

Los siguientes pasos le dan información sobre cómo cargar un código de boceto (código de aplicación) en Arduino IDE desde Arduino Mega como ISP a Arduino Uno como MCU de destino.

En primer lugar, es necesario configurar el Arduino Mega como un ISP como se menciona en ¿Cómo configurar el Arduino Mega2560 como un ISP?

Después de completar todos los pasos del 1 al 5, debe seguir el paso 6 que se menciona a continuación.

Paso 6: Abre el IDE de Arduino y ve a Herramientas > Placas > Placas Arduino AVR > Arduino Uno.

Abra el IDE de Arduino y vaya a Herramientas

Paso 7: Abra el código en Arduino IDE que desea cargar en Arduino Uno. En Arduino IDE, vaya a Sketch > Upload Using Programmer.

Sketch > Cargar con el programador

Caso 2: Carga del Bootloader de Arduino Mega como ISP a Arduino Uno

Si no has configurado tu Arduino Uno como ISP, sigue los pasos 1 a 5 mencionados en "¿Cómo configurar Arduino Mega2560 como ISP?" que harán que tu Arduino Mega2560 esté listo como programador ISP.

Paso 6: A continuación, seleccione Herramientas > Grabar Bootloader.

Grabar el gestor de arranque

Al final, obtendrá un mensaje de Done burning Bootloader.

Mensaje de "Bootloader" terminado de grabar

4) Arduino Mega como ISP y Arduino Mega como MCU de destino

Interfaz del Arduino Mega como ISP con el Arduino Mega como MCU de destino

Interfaz del Arduino Mega como ISP con el Arduino Mega como MCU de destino

La siguiente tabla muestra la interconexión del Arduino Mega con el Arduino Mega a través de los pines SPI. Asegúrese de que la tierra es común.

Placa ArduinoMOSIMISOSCKCS
Mega ISP51 o ICSP-450 o ICSP-152 o ICSP-310
Mega Objetivo51 o ICSP-450 o ICSP-152 o ICSP-3RESET

Caso 1: Carga de código de aplicación desde Arduino Mega como ISP a Arduino Mega

Los siguientes pasos le dan información sobre la carga de un código de boceto (código de aplicación) de Arduino IDE a Arduino Mega desde Arduino Mega como ISP.

En primer lugar, es necesario configurar el Arduino Mega2560 como ISP como se menciona en ¿Cómo configurar el Arduino Mega2560 como ISP?

Después de completar todos los pasos del 1 al 5, debe seguir el paso 6 que se menciona a continuación.

Paso 6: A continuación, seleccione Herramientas > Placas > Placas Arduino AVR > Arduino Mega o Mega 2560.

Arduino Mega o Mega 2560

Paso 7: Abra el código en Arduino IDE que desea cargar en Arduino Mega. En Arduino IDE, vaya a Sketch > Upload Using Programmer.

Sketch > Cargar con el programador

Caso 2: Carga del Bootloader del Arduino Mega como ISP al Arduino Mega

Si no has configurado tu Arduino Uno como ISP, sigue los pasos 1 a 5 mencionados en "¿Cómo configurar Arduino Mega2560 como ISP?" que harán que tu Arduino Mega esté listo como programador ISP.

Paso 6: A continuación, seleccione Herramientas > Grabar Bootloader.

Grabar el gestor de arranque

Finalmente, después de hacer clic en Burn Bootloader, verás un Done burning bootloader.

Terminado de grabar el cargador de arranque

Conclusión

En este artículo, te he mostrado cómo funciona el Bootloader de Arduino, Arduino Uno y Arduino Mega como ISP.

Después de esto, puedes utilizar un cargador de arranque para cargar el cargador de arranque a tu microcontrolador AVR.

Espero que hayas encontrado este artículo informativo, si encuentras información, por favor compártelo y dale a me gusta.

Me encantaría saber qué proyecto tienes pensado construir o has hecho ya con el Arduino.

Si tienes alguna duda o sugerencia, o si crees que faltan cosas en este tutorial, deja un comentario abajo.

Tenga en cuenta que los comentarios son retenidos por la moderación para evitar el spam.