Adquiri um PCB Arduino com um ATmega2560 , já programado com o gerenciador de inicialização Arduino e algum programa. Eu tenho o esboço , mas antes de mexer nele, gostaria de fazer backup do binário atual que está no controlador. Como a maioria dos Arduinos, ele é conectado ao PC usando um conversor USB-serial conectado ao TX0 e RX0 e não há interface ISP .
Aparentemente, existe um código para leitura no carregador de inicialização do Arduino , mas não tenho idéia de qual ferramenta usar para acessá-lo, pois não há item de menu no IDE do Arduino.
Que software eu preciso para ler o programa no Arduino?
Respostas:
O carregador de inicialização do Arduino é uma variante do protocolo STK500 original (1.x) . O caractere 't' (ASCII 0x74) é o comando "Ler página". Portanto, talvez seja possível extrair o programa pela porta serial através do gerenciador de inicialização usando o AVRDUDE ... Mas, na melhor das hipóteses, eu acho que levará algum tempo sofisticado para executá-lo.
fonte
Eu joguei uma memória de Duemillenova no ATMega328P com o seguinte comando:
fonte
-v
s são necessários?./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:r:"/tmp/dump.bin":r -P /dev/ttyUSB0
; escreva./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:w:"/tmp/dump.bin":r -P /dev/ttyUSB0
:; Verifique:./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:v:"/tmp/dump.bin":r -P /dev/ttyUSB0
O AVR de backup com thread avrdude responde à sua pergunta? Basicamente, você pode ler toda a memória de um AVR, desde que o fusível de proteção não esteja definido.
Esta é a configuração que eu uso para o ATtiny e o ATmega.
No quadro mostrado:
Consulte a folha de dados do controlador qual pino exato usar. Existem muitos sites na Internet que escrevem sobre como programar AVRs usando um Arduino, por exemplo: http://hlt.media.mit.edu/?p=1229
fonte
Até onde eu vejo o código fonte do carregador de inicialização do Arduino , não há como 'despejar' toda a memória dele. O carregador de inicialização suporta um modo 'monitor' que permite despejar um byte de memória por vez. No entanto, de acordo com os comentários do código-fonte "/ * as funções do monitor serão compiladas apenas quando o ATmega128 for utilizado, devido a restrições de tamanho do bloco de inicialização * /"
Como tal, acho que você está sem sorte se não quiser usar o ISP, alterar o gerenciador de inicialização ou fazer upload de um esboço para fazer isso.
fonte
else if(ch=='t') {
.Eu pensei que havia uma opção de menu para isso, mas não estou encontrando agora. Se você possui um programador de ISP, pode usar o AVR Studio para ler a imagem da memória do chip e salvá-la em um arquivo HEX, o que permitiria restaurá-la da mesma maneira.
Editar
Em resposta ao seu comentário - é fácil! Você precisa assimilar dois diagramas de informações para obtê-las. O primeiro é o mapeamento de pinos do Arduino / ATMega2560.
O segundo é o mapeamento de pinos do cabeçalho do ISP / AVR:
Armado com essas duas fotos, você poderá ver como conectá-lo.
Com esses dispositivos, você poderá usar o AVR Studio para ler o arquivo Hex do chip - deixe-me saber se precisar de mais orientações.
fonte