Se me indicó que "grabe el gestor de arranque" en mi Arduino para corregir un error que estaba recibiendo. ¿Cómo puedo hacer esto? (¿Y qué es exactamente el gestor de arranque?)
Se me indicó que "grabe el gestor de arranque" en mi Arduino para corregir un error que estaba recibiendo. ¿Cómo puedo hacer esto? (¿Y qué es exactamente el gestor de arranque?)
Respuestas:
El gestor de arranque es un pequeño programa que (casi) siempre está en un Arduino. Gestiona la carga y el inicio de los bocetos que realiza, y parpadea el LED del pin 13 cada vez que se restablece la placa.
Para grabar el gestor de arranque:
Tools ► Board ►
en el IDE. Vuelva a verificar esto incluso si pudiera cargar programas correctamente; cargar no siempre requiere el tablero correcto.Tools ► Programmer ►
.Tools ► Burn Bootloader
y espera. No debería tomar más de un minuto y, a menudo, solo toma unos segundos.Fuentes:
{line 1} or other dedicated ISP programmer.
¿Y qué es exactamente el gestor de arranque?
El gestor de arranque es un pequeño fragmento de código que reside en la parte "alta" de la memoria del programa. Normalmente no se borra cuando carga nuevos bocetos. Su propósito es que se active inmediatamente después de un reinicio (los fusibles están configurados para comenzar el código en la dirección del cargador de arranque en lugar de la dirección 0x0000). El gestor de arranque esperará un corto tiempo (como un segundo) para ver si los datos de "programación" están llegando al puerto serie.
Si es así, lee esos datos y los decodifica para reprogramar el resto de la memoria flash. Trabajando en conjunto con el programa de carga (normalmente avrdude), el nuevo boceto se envía a través del puerto serie. El gestor de arranque borra las páginas de la memoria flash y las reemplaza con el nuevo código. Una vez hecho esto, ejecuta el nuevo código.
Si no llegan instrucciones, el gestor de arranque salta a la dirección 0x0000 para ejecutar el boceto existente en el tablero.
Un método alternativo para programar un gestor de arranque es usar un boceto que escribí hace un tiempo que se ejecuta en un:
La placa de "programación" ejecuta el boceto que tiene cargadores de arranque para varias placas codificadas. Conecta la placa de programación a la placa de destino (la placa que quiere el cargador de arranque) con 6 cables de conexión como se muestra.
Esa foto en particular ilustra uno Uno programando otro.
Ejecutas el boceto (operando a través del Monitor de serie para darle comandos). Primero identifica el chip objetivo:
Atmega chip programmer.
Written by Nick Gammon.
Entered programming mode OK.
Signature = 0x1E 0x95 0x0F
Processor = ATmega328P
Flash memory size = 32768 bytes.
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xCF
Bootloader address = 0x7E00
Bootloader length = 512 bytes.
Type 'L' to use Lilypad (8 MHz) loader, or 'U' for Uno (16 MHz) loader ...
Type 'G' to program the chip with the bootloader ...
Luego presionas G para programarlo.
Erasing chip ...
Writing bootloader ...
Committing page starting at 0x7E00
Committing page starting at 0x7E80
Committing page starting at 0x7F00
Committing page starting at 0x7F80
Written.
Verifying ...
No errors found.
Writing fuses ...
LFuse = 0xFF
HFuse = 0xDE
EFuse = 0xFD
Lock byte = 0xCF
Done.
Type 'C' when ready to continue with another chip ...
Para un Uno, esto lleva un segundo. Programar un Mega2560 toma 3 segundos.
Instrucciones detalladas en el programador del gestor de arranque Atmega
El código se puede descargar desde Github: nickgammon / arduino_sketches