Essa resposta não responde diretamente à pergunta, mas ainda resultará no mesmo resultado final.
O IDE do Arduino usa diretórios temporários para armazenar arquivos de construção, incluindo o esboço original, além dos arquivos HEX e intermediário.
Em um Mac, elas estão em / var / folders por padrão e em uma máquina Windows em… \ Local Settings \ Temp \ (que, dependendo da versão do Windows, pode estar em vários lugares).
Descobri que, especialmente no Windows, esses arquivos de compilação não são excluídos quando você fecha o esboço ou o IDE; portanto, eles podem existir na sua máquina por muito mais tempo do que você imagina.
Além disso, por padrão, Crashplan, Backblaze e Time Machine fazem backup desses locais, portanto, mesmo que tenham sido excluídos, eles ainda podem estar em um backup.
A vantagem aqui é que você recuperará o código C em vez do ASM.
Você pode baixar o dump hexadecimal do arquivo, mas não há uma maneira fácil de obter todo o código C ++ e comentários. Se você consegue entender a montagem, pode recriar o programa, mas isso levaria um tempo. Existem desmontadores disponíveis para alguns dispositivos, não sei sobre o arduino.
Eu acho que existe outra maneira de fazer isso, sem extrair o código da placa do Arduino. Relembre a data em que você criou o esboço e procure-o em C: \ Usuários \ Usuário \ AppData \ Local \ Temp \ (Por exemplo: C: \ Usuários \ Usuário \ AppData \ Local \ Temp \ untitled4390292704786567977.tmp \ sketch_jan19a). Você pode encontrar seu código não salvo, a menos que tenha sido excluído por algum "programa de espaço livre". Boa sorte!
Como você pode ver, não é particularmente útil para reproduzir o que o seu esboço fez. É provável que haja um de dois cenários:
Seu esboço foi curto; nesse caso, após semanas de trabalho, você pode transformar o código do assembler novamente em C
Seu esboço era longo; nesse caso, seria praticamente impossível transformá-lo novamente em C
No caso do "esboço curto", é melhor reescrever do zero. Isso seria mais rápido, quase certamente. No caso do "esboço longo" - simplesmente não vale a pena. Nenhum dos nomes de variáveis é preservado, e da maneira como o compilador otimiza o código, mesmo a estrutura do código seria difícil de determinar.
Respostas:
Deve ser possível desde que o bit de segurança não esteja definido. Esta pergunta foi feita no EE há um tempo.
É possível extrair código de uma placa do arduino?
Mas você não receberá o código do Arduino que escreveu de volta. O código é compilado em assembly e você terá que convertê-lo novamente em C.
fonte
Essa resposta não responde diretamente à pergunta, mas ainda resultará no mesmo resultado final.
O IDE do Arduino usa diretórios temporários para armazenar arquivos de construção, incluindo o esboço original, além dos arquivos HEX e intermediário.
Em um Mac, elas estão em / var / folders por padrão e em uma máquina Windows em… \ Local Settings \ Temp \ (que, dependendo da versão do Windows, pode estar em vários lugares).
Descobri que, especialmente no Windows, esses arquivos de compilação não são excluídos quando você fecha o esboço ou o IDE; portanto, eles podem existir na sua máquina por muito mais tempo do que você imagina.
Além disso, por padrão, Crashplan, Backblaze e Time Machine fazem backup desses locais, portanto, mesmo que tenham sido excluídos, eles ainda podem estar em um backup.
A vantagem aqui é que você recuperará o código C em vez do ASM.
fonte
/tmp/
diretórios no Linux (e até Mac). cf arduino.cc/en/Hacking/BuildProcessVocê pode baixar o dump hexadecimal do arquivo, mas não há uma maneira fácil de obter todo o código C ++ e comentários. Se você consegue entender a montagem, pode recriar o programa, mas isso levaria um tempo. Existem desmontadores disponíveis para alguns dispositivos, não sei sobre o arduino.
fonte
atmega disassembler
).Eu acho que existe outra maneira de fazer isso, sem extrair o código da placa do Arduino. Relembre a data em que você criou o esboço e procure-o em C: \ Usuários \ Usuário \ AppData \ Local \ Temp \ (Por exemplo: C: \ Usuários \ Usuário \ AppData \ Local \ Temp \ untitled4390292704786567977.tmp \ sketch_jan19a). Você pode encontrar seu código não salvo, a menos que tenha sido excluído por algum "programa de espaço livre". Boa sorte!
fonte
A menos que seu objetivo seja simplesmente copiar o código idêntico para outro dispositivo, a resposta simples é: não
Como foi indicado em outras respostas, você pode transformar o código hexadecimal no dispositivo novamente em código assembler.
Por exemplo (depois de copiar o código do dispositivo para o disco):
Execute em um dos arquivos do carregador de inicialização e obtenho estes resultados (em parte):
Como você pode ver, não é particularmente útil para reproduzir o que o seu esboço fez. É provável que haja um de dois cenários:
No caso do "esboço curto", é melhor reescrever do zero. Isso seria mais rápido, quase certamente. No caso do "esboço longo" - simplesmente não vale a pena. Nenhum dos nomes de variáveis é preservado, e da maneira como o compilador otimiza o código, mesmo a estrutura do código seria difícil de determinar.
fonte