Ta odpowiedź nie odpowiada bezpośrednio na pytanie, ale nadal spowoduje taki sam wynik końcowy.
Arduino IDE używa tymczasowych katalogów do przechowywania plików kompilacji, w tym oryginalnego szkicu, a także plików HEX i pośrednich.
Na komputerze Mac są one domyślnie w folderach / var /, a na komputerze z systemem Windows znajdują się w… \ Local Settings \ Temp \ (które w zależności od wersji systemu Windows mogą znajdować się w kilku miejscach).
Odkryłem, że szczególnie w systemie Windows te pliki kompilacji nie są usuwane po zamknięciu szkicu lub IDE, więc mogą istnieć na twoim komputerze o wiele dłużej, niż myślisz.
Domyślnie Crashplan, Backblaze i Time Machine tworzą kopie zapasowe tych lokalizacji, więc nawet jeśli zostały usunięte, nadal mogą znajdować się w kopii zapasowej.
Możesz pobrać zrzut heksowy pliku, ale nie ma łatwego sposobu na uzyskanie całego kodu C ++ i komentarzy. Jeśli potrafisz zrozumieć montaż, możesz odtworzyć program, ale zajmie to trochę czasu. Dla niektórych urządzeń dostępne są dyssasemblery, nie wiem o arduino.
Myślę, że jest na to inny sposób, bez wyciągania kodu z tablicy Arduino. Zapamiętaj datę utworzenia szkicu i poszukaj go w C: \ Users \ User \ AppData \ Local \ Temp \ (Na przykład: C: \ Users \ User \ AppData \ Local \ Temp \ untitled4390292704786567977.tmp \ sketch_jan19a). Możesz znaleźć niezapisany kod, chyba że zostanie on usunięty przez jakiś „program kosmiczny zwalniający”. Powodzenia!
Jak widać, niezbyt przydatne do odtworzenia tego, co zrobił szkic. Prawdopodobnie będzie jeden z dwóch scenariuszy:
Twój szkic był krótki, w którym to przypadku możesz po tygodniach pracy zmienić kod asemblera z powrotem w C
Twój szkic był długi, w takim przypadku praktycznie niemożliwe byłoby jego ponowne przekształcenie w C
W przypadku „krótkiego szkicu” lepiej jest po prostu przepisać od nowa. Byłoby to prawie na pewno szybsze. W przypadku „długiego szkicu” - po prostu nie jest tego warte. Żadna z nazw zmiennych nie jest zachowana, a sposób kompilatora optymalizuje kod, nawet struktura kodu byłaby trudna do ustalenia.
Odpowiedzi:
Powinno to być możliwe, dopóki bit bezpieczeństwa nie jest ustawiony. Pytanie to zostało zadane EE jakiś czas temu.
Czy można wyodrębnić kod z tablicy arduino?
Ale nie dostaniesz kodu Arduino, który odpisałeś. Kod jest kompilowany w asemblerze i będziesz musiał go przekonwertować z powrotem do C.
źródło
Ta odpowiedź nie odpowiada bezpośrednio na pytanie, ale nadal spowoduje taki sam wynik końcowy.
Arduino IDE używa tymczasowych katalogów do przechowywania plików kompilacji, w tym oryginalnego szkicu, a także plików HEX i pośrednich.
Na komputerze Mac są one domyślnie w folderach / var /, a na komputerze z systemem Windows znajdują się w… \ Local Settings \ Temp \ (które w zależności od wersji systemu Windows mogą znajdować się w kilku miejscach).
Odkryłem, że szczególnie w systemie Windows te pliki kompilacji nie są usuwane po zamknięciu szkicu lub IDE, więc mogą istnieć na twoim komputerze o wiele dłużej, niż myślisz.
Domyślnie Crashplan, Backblaze i Time Machine tworzą kopie zapasowe tych lokalizacji, więc nawet jeśli zostały usunięte, nadal mogą znajdować się w kopii zapasowej.
Zaletą jest to, że odzyskasz kod C zamiast ASM.
źródło
/tmp/
katalogach w systemie Linux (a nawet Mac). cf arduino.cc/en/Hacking/BuildProcessMożesz pobrać zrzut heksowy pliku, ale nie ma łatwego sposobu na uzyskanie całego kodu C ++ i komentarzy. Jeśli potrafisz zrozumieć montaż, możesz odtworzyć program, ale zajmie to trochę czasu. Dla niektórych urządzeń dostępne są dyssasemblery, nie wiem o arduino.
źródło
atmega disassembler
).Myślę, że jest na to inny sposób, bez wyciągania kodu z tablicy Arduino. Zapamiętaj datę utworzenia szkicu i poszukaj go w C: \ Users \ User \ AppData \ Local \ Temp \ (Na przykład: C: \ Users \ User \ AppData \ Local \ Temp \ untitled4390292704786567977.tmp \ sketch_jan19a). Możesz znaleźć niezapisany kod, chyba że zostanie on usunięty przez jakiś „program kosmiczny zwalniający”. Powodzenia!
źródło
O ile Twoim celem nie jest po prostu skopiowanie identycznego kodu na inne urządzenie, prosta odpowiedź brzmi: nie
Jak wskazano w innych odpowiedziach, możesz zmienić kod szesnastkowy urządzenia z powrotem w kod asemblera.
Na przykład (po skopiowaniu kodu z urządzenia z powrotem na dysk):
Uruchom na jednym z plików bootloadera, otrzymuję te wyniki (częściowo):
Jak widać, niezbyt przydatne do odtworzenia tego, co zrobił szkic. Prawdopodobnie będzie jeden z dwóch scenariuszy:
W przypadku „krótkiego szkicu” lepiej jest po prostu przepisać od nowa. Byłoby to prawie na pewno szybsze. W przypadku „długiego szkicu” - po prostu nie jest tego warte. Żadna z nazw zmiennych nie jest zachowana, a sposób kompilatora optymalizuje kod, nawet struktura kodu byłaby trudna do ustalenia.
źródło