Como ler o programa atual de um Arduino?


14

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?


Encontrado código para leitura no gerenciador de inicialização, pergunta editada.
21812 AndreKR

esse doseador desaprova sua pergunta, mas você pode exportar as skeches do arduino como um arquivo .HEX.
urânio Lees

Respostas:


1

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.


11

Eu joguei uma memória de Duemillenova no ATMega328P com o seguinte comando:

avrdude -C avrdude.conf -v -v -v -v -p atmega328p -c stk500 -U flash:r:"c:/arduino.hex":r -P\\.\COM2 -b57600

1
atenção que o programador aplicável é provavelmente o arduino e não o stk500.
Paulo Neves

Por que quatro -vs são necessários?
Peter Mortensen

De documentação avrdude, "Descrições 2.1 Opção" : "... -v Ativar detalhado saída. Mais opções -v aumentar o nível de detalhamento. "
Peter Mortensen

Essa deve ser a resposta aceita.
Caterpillaraoz

SIM! O pro micro bootloader não funcionou no meu pro micro clone. Joguei o flash em um micro clone profissional e salvei no que precisava de um gerenciador de inicialização. Usando um Arduino como ISP (linux) - despejo: ./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
b_laoshi

7

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:

  • 11 = MOSI
  • 12 = MISO
  • 13 = SCLK

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


Eu preciso de um segundo arduino para isso, certo? Eu não tenho um.
AndreKR

1
Este é um método de dois Arduino, sim.
jippie

E, embora seja um pouco difícil de ver na imagem, os pinos usados ​​no Arduino de destino também não são TX0 e RX0, são?
21812 AndreKR

Não, TX e RX não são usados ​​para ICP. Atualizou a resposta um pouco.
jippie

Bem, acho que você perdeu toda a questão da minha pergunta, provavelmente porque eu dei um título ruim. Eu refiz a pergunta toda.
AndreKR

3

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.


Eu estava me referindo à seção que começa na linha 701 com else if(ch=='t') {.
21812 AndreKR

Bom ponto - não tinha visto isso.
RJR

2

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.

insira a descrição da imagem aqui

O segundo é o mapeamento de pinos do cabeçalho do ISP / AVR:

insira a descrição da imagem aqui

Armado com essas duas fotos, você poderá ver como conectá-lo.

  • Passe um fio do DIG50 ao pino do cabeçalho do ISP do Dragon 1
  • Execute um fio do VCC para o pino 2 do cabeçalho do ISP do dragão
  • Passe um fio do DIG52 para o pino 3 do cabeçalho do ISP do dragão
  • Passe um fio do DIG51 para o pino 4 do cabeçalho do ISP do dragão
  • Passe um fio de RESET para o pino 5 do cabeçalho do ISP do dragão
  • Passe um fio do GND para o pino 6 do cabeçalho do ISP do dragão

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.


Eu tenho um dragão, mas não sei quais pinos do dragão devem ser conectados à interface serial do Arduino.
18712 AndreKR

@AndreKR ver a minha resposta editada para mais informações
vicatcu

Conforme indicado na minha pergunta, eu sei ler o programa usando o ISP, é claro. O que eu quero saber é como fazer isso usando a interface serial (TX0 e RX0) - da mesma forma que os programas são carregados no controlador no mundo do Arduino.
AndreKR

@AndreKR Estou confuso ... você tem um dragão, por que não gostaria de ler o programa da maneira normal - entendi mal o seu comentário sobre não saber quais pinos conectar à "interface serial"
vicatcu

O PCB que eu tenho não tem um cabeçalho ISP. No entanto, ele possui uma interface serial e um carregador de inicialização Arduino. Dessa forma, os programas são carregados no mundo do Arduino e, aparentemente, podem ser baixados da mesma maneira.
AndreKR
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.