Quando o Leonardo foi apresentado, eu acho, eu li alguns artigos sobre ser cauteloso ao fazer algumas coisas, que poderiam fazer com que ele não carregasse mais novos esboços, então é preciso reescrever o gerenciador de inicialização. Como planejo usar opções de economia de energia, por exemplo, para desativar componentes de hardware não utilizados, como porta USB, receio fazer algo errado.
Uma delicadeza de Leonardo que eu encontrei até agora:
- se as interrupções estiverem desativadas, o upload de novos esboços falhará, a menos que se pressione o botão Redefinir assim que o IDE do Arduino estiver exibindo "Carregando ..."
Que coisas (exceto as habituais relacionadas ao hardware, como conectar pinos de saída configurados a potenciais fixos) podem danificar o controlador ou exigir a atualização do Leonardo com um novo gerenciador de inicialização?
power
arduino-leonardo
Thomas S.
fonte
fonte
Respostas:
Se você fizer o upload de um programa que altera a velocidade do núcleo USB, ele ficará quase empedrado. O que aconteceria é o seguinte:
O problema aqui é que você não apenas precisa pressionar reset para programar, após a redefinição, você deve selecionar rapidamente a porta de comunicação correta e fazer o upload antes de iniciar o programa.
O Redbearlab Blend Micro requer que uma velocidade do núcleo USB seja definida no programa do usuário. Nas instruções de configuração, há uma etapa para editar o Arduino main.cpp e adicionar uma seção para fazer isso. Se esta etapa for perdida, o problema acima acontece.
fonte
Consegui brickwall um ATMega128RFA1. O gerenciador de inicialização e o software que carreguei nele estavam funcionando bem. Mas era impossível apagar / escrever a ROM.
Após verificar o que aconteceu, descobri na folha de dados que alguns fusíveis no núcleo do AVR se destinam a proteger a gravação acidental na ROM. Algum tipo de fusível de segurança.
Eu nunca encontrei o bug que escrevia nesses bytes (como era um programa realmente grande e nós éramos três pessoas envolvidas na codificação), mas sim, nós apenas tocamos um fusível e perdemos um MCU por causa de um bug.
Quanto ao leonardo, várias coisas podem acontecer, mas nenhuma delas pode bloquear a sua placa a menos que você queime um desses fusíveis de proteção.
fonte
É possível, com algum código realmente inteligente , explorar o gerenciador de inicialização para sobrescrever-se.
Excerto:
Então, basicamente, você pode fazer uma programação sofisticada e fazer com que o gerenciador de inicialização se propague, tornando o MCU inútil sem um programador dedicado.
fonte
O que eu conheço é fazer o Leonard agir como um mouse USB que bate em todos os lugares e digita teclas aleatórias, para que você não possa reprogramar sem fazer algum tipo de truque para contorná-lo. Mas eles mencionam isso nos api docs.
fonte