Kupiłem Arduino PCB z ATmega2560 , już zaprogramowanym za pomocą bootloadera Arduino i jakiegoś programu. Mam szkic , ale zanim zacznę go bawić, chcę wykonać kopię zapasową bieżącego pliku binarnego znajdującego się w kontrolerze. Jak większość Arduinos, jest podłączony do komputera za pomocą konwertera USB-na-szeregowego podłączonego do TX0 i RX0 i nie ma interfejsu ISP .
Najwyraźniej w programie ładującym Arduino jest kod do odczytu , ale nie mam pojęcia, którego narzędzia użyć, aby uzyskać do niego dostęp, ponieważ w Arduino IDE nie ma pozycji menu.
Jakiego oprogramowania potrzebuję, aby odczytać program z Arduino?
Odpowiedzi:
Program ładujący Arduino jest wariantem oryginalnego protokołu STK500 (1.x) . Znak „t” (ASCII 0x74) to polecenie „Czytaj stronę”. Być może więc możliwe jest wyciągnięcie programu przez port szeregowy za pomocą programu ładującego za pomocą AVRDUDE ... Ale w najlepszym razie uważam, że jego wymyślenie zajmie trochę czasu.
źródło
Zrzuciłem pamięć z Duemillenova z ATMega328P za pomocą następującego polecenia:
źródło
-v
potrzebne?./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
; napisz./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
:; sprawdź:./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
Czy Backup AVR z wątkiem avrdude odpowiada na twoje pytanie? Zasadniczo możesz odczytać całą pamięć z AVR, o ile nie jest ustawiony bezpiecznik ochronny.
To jest konfiguracja, której używam dla ATtiny i ATmega.
Na pokazanej tablicy:
Zapoznaj się z arkuszem danych sterownika, którego dokładnie użyć pin. Istnieje wiele stron internetowych piszących o programowaniu AVR za pomocą Arduino, np .: http://hlt.media.mit.edu/?p=1229
źródło
O ile widzę, kod źródłowy programu ładującego Arduino , nie ma sposobu na „zrzucenie” z niego całej pamięci. Program ładujący obsługuje tryb „monitorowania”, który pozwala zrzucić jeden bajt pamięci na raz. Jednak zgodnie z komentarzem do kodu źródłowego „/ * funkcje monitora będą kompilowane tylko przy użyciu ATmega128, ze względu na ograniczenia rozmiaru bootblocka * /”
W związku z tym myślę, że nie masz szczęścia, jeśli nie chcesz korzystać z usług dostawcy internetowego, zmienić bootloadera lub przesłać szkic, aby to zrobić.
źródło
else if(ch=='t') {
.Myślałem, że jest do tego opcja menu, ale nie znajduję jej teraz. Jeśli masz programistę ISP, możesz użyć AVR Studio do odczytania obrazu pamięci z układu scalonego i zapisania go w pliku HEX, co umożliwi przywrócenie go w ten sam sposób.
Edytować
W odpowiedzi na Twój komentarz - to proste! Aby przyswoić je, musisz przyswoić sobie informacje o wartości dwóch diagramów. Pierwszym z nich jest mapowanie pinów Arduino / ATMega2560.
Drugi to mapowanie nagłówka / AVR ISP:
Uzbrojeni w te dwa zdjęcia powinieneś zobaczyć, jak to połączyć.
Po ich wdrożeniu powinieneś być w stanie użyć AVR Studio do odczytania pliku Hex z układu - daj mi znać, jeśli potrzebujesz więcej wskazówek.
źródło