Fui instruído a "gravar o gerenciador de inicialização" no meu Arduino para corrigir um erro que estava recebendo. Como posso fazer isso? (E o que exatamente é o carregador de inicialização?)
Fui instruído a "gravar o gerenciador de inicialização" no meu Arduino para corrigir um erro que estava recebendo. Como posso fazer isso? (E o que exatamente é o carregador de inicialização?)
Respostas:
O gerenciador de inicialização é um pequeno programa que está (quase) sempre em um Arduino. Ele gerencia o upload e o início dos esboços que você faz e pisca o LED 13 do pino sempre que a placa é redefinida.
Para gravar o gerenciador de inicialização:
Tools ► Board ►
IDE. Verifique isso mesmo se você puder fazer o upload de programas corretamente; o upload nem sempre exige a placa certa.Tools ► Programmer ►
.Tools ► Burn Bootloader
e aguarde. Não deve demorar mais de um minuto e geralmente leva apenas alguns segundos.Fontes:
{line 1} or other dedicated ISP programmer.
E o que exatamente é o carregador de inicialização?
O carregador de inicialização é um pequeno pedaço de código que reside na parte "alta" da memória do programa. Normalmente, não é apagado quando você carrega novos esboços. Seu objetivo é ser ativado imediatamente após uma redefinição (os fusíveis são configurados para iniciar o código no endereço do carregador de inicialização em vez do endereço 0x0000). O carregador de inicialização aguardará um curto período de tempo (como um segundo) para ver se os dados de "programação" estão chegando na porta serial.
Nesse caso, ele lê esses dados e decodifica-os para reprogramar o restante da memória flash. Trabalhando em conjunto com o programa de upload (normalmente avrdude), o novo sketch é enviado via porta serial. O carregador de inicialização apaga as páginas da memória flash e as substitui pelo novo código. Uma vez feito, ele executa o novo código.
Se nenhuma instrução chegar, o carregador de inicialização pula para o endereço 0x0000 para executar o esboço existente no quadro.
Um método alternativo para programar um gerenciador de inicialização é usar um esboço que escrevi há pouco tempo, executado em:
A placa de "programação" executa o esboço que possui gerenciadores de inicialização para várias placas codificadas nele. Você conecta a placa de programação à placa de destino (a placa que deseja o carregador de inicialização) com 6 fios de conexão, conforme mostrado.
Essa foto em particular ilustra um Uno programando outro.
Você executa o esboço (operando através do Serial Monitor para fornecer comandos). Primeiro, ele identifica o chip de destino:
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 ...
Você pressiona G para programá-lo.
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 um Uno, leva um segundo. Para programar um Mega2560 leva 3 segundos.
Instruções detalhadas no programador do gerenciador de inicialização Atmega
É possível fazer o download do código no Github: nickgammon / arduino_sketches