Alguém já viu ou conhece um método de pré-carregar (usando um computador ou o que seja) um firmware como dados em um arduino configurado para operar como um isp e, em seguida, usando esse arduino, conecte a interface isp em outro e faça o upload do firmware.
Para esclarecer, estou procurando uma maneira de tornar possível o upload de esboços do arduino sem uma conexão direta com um computador completo.
Idealmente, as etapas envolvidas seriam:
- Escrever novo esboço / firmware
- Compilar firmware
- Escreva um firmware de cópia no Arduino A como dados (o Arduino A está configurado para funcionar como ISP)
- Desconecte o Arduino A do computador
- Em um local separado, conecte o Arduino A ao Arduino B usando cabeçalhos do ISP
- O uso de algum método (talvez um botão) aciona o Arduino A para fazer upload do firmware pré-carregado no Arduino B.
Estou assumindo que, teoricamente, poderia funcionar porque o upload de firmware é apenas uma troca de bytes pela interface SPI, mas não tenho certeza sobre a realidade.
O cenário para o qual estou pensando é que, se eu instalasse um arduino (permanentemente) em um local remoto do meu computador (não tenho laptop nem quero um), seria problemático reprogramar isto.
O outro método que considerei é usar o ATMEGA empacotado com DIL, que eu posso remover da placa e programar no computador e retornar à placa - no entanto, eu preferiria não arriscar dobrar os pinos e ter que remover o chip cada vez que eu quero reprogramar.
fonte
Respostas:
Acho µProg - programador AVR pequeno, rápido e portátil com SD faz o que você deseja. Você pode armazenar vários arquivos no cartão SD (hex, eep etc.) e selecionar no menu do dispositivo qual deles deseja gravar no MCU de destino sem a necessidade de um PC.
A melhor parte é que ele está disponível gratuitamente (PCB, esquema, firmware etc).
Lista de chips suportados
fonte
Não tenho solução direta para o que você deseja, mas sim, é possível fazê-lo. Você pode hackear um firmware do carregador de inicialização para que ele leia o código flash do firmware e faça o upload pelo ISP.
Embora você obviamente não possa carregar 32k de firmware no AVR de destino, se ambos os arduinos tiverem apenas 32k de flash total em seus MCUs, será necessário que o pisca-pisca tenha mais flash que o alvo, se você quiser (um 1284p ou 2560 Mega será longe o suficiente, ou um 328 / 32u4 será uma boa opção para exibir um 168 ou um attiny). A única exceção seria fazer com que o firmware ficasse muito menor que a memória total (como em um esboço piscando).
No final, isso não será fácil, é um código AVR 100% puro, mas você pode fazê-lo. Dê uma olhada em:
A maneira como eu implementaria isso seria ajustar tudo no carregador de inicialização do dispositivo de pisca-pisca, para que ele leia o firmware (tudo de 0x00 ao endereço de início do carregador de inicialização) e o atualize através do ISP, mesclando o AVRISP com o Optiboot.
Enfim, esse é um projeto interessante para um workshop sobre gerenciadores de inicialização e AVRs que posso sugerir no meu espaço de hackers local! ;-)
HTH
fonte