Pytanie jak w temacie. Mam gotowy układ, kupiony od osoby trzeciej. Docelowo chciałbym zmodyfikować wsad o nowe funkcje. Do tej pory bawiłem się atmegą8 i banalnym darmowym programem zgrywałem sobie wsad. Niestety program na atmega16 jest zablokowany. Zgrać się nie da.
moje pytanie to jak zgrać ten wsad? Zakładam, że przez program bascom i avrdude. Nie znam jednak odpowiedniej komendy.
Tak jak napisał kolega wyżej, jeżeli pamięć flash megi jest zabezpieczona bitem lock ustawianym w FUSE BITS, to jedyne co możesz zrobić, to wyczyścić całą pamięć i razem z nią ten bit. Niestety nie odczytasz przy okazji jej zawartości. Ale nawet gdyby, to co Ci po niej? Przecież to są dane binarne, czyli zapisany kod assemblerowy w postaci komend zrozumiałych dla dekodera instrukcji procesora. Zatem mając nawet tę binarkę i poddając ją odwrotnej kompilacji, czyli przywrócenia do postaci kodu zrozumiałej dla nas, to i tak myślę że próba modernizacji takiego kodu będzie bardzo żmudnym i trudnym zadaniem.
Lepiej poproś wcześniejszego właściciela o kod wsadu i wtedy walcz. W takim przypadku zablokowana pamięć nie będzie mieć już dla Ciebie żadnego znaczenia. No chyba że jest tak, że kontroler jest zablokowany totalnie (nie odzywa się, nie odpowiada na transmisję z programatorem ISP). No to wtedy będziesz musiał go odblokować na przykład przy pomocy programatora równoległego...
No to napisz co to za program do wgrywania wsadów co obsługuje tylko kilka mikrokontrolerów.. Ale z tego co piszesz można wywnioskować, że słabo szukałeś darmowych programów do ładowania hexów.
Czy Ty chcesz odczytać z ATmegi zawartość FLASH i ją przetworzyć do kodu źródłowego?
A może Ty chcesz napisany w jakimś języku kod źródłowy skompilować do HEX i wgrać do pamięci mikrokontrolera?
Wspominałeś coś o Bascom, tam masz wszystko żeby napisać program, skompilować go a nawet wgrać od razu do pamięci. Jak masz kompatybilny z Bascom'em programator to nie potrzebujesz nic więcej.
Tak samo będzie jak będziesz używał AVR Studio, masz wszystko a dotego totalnie za darmo. Jedyny wymóg to kompatybilny programator...
Zadawaj bardziej precyzyjnie pytania, bo nie będziemy umieli Ci pomóc.
No to jak jest taki stan rzeczy, to powiem Ci... Odpuść sobie:)
Skoro piszesz że używasz programów dla osób które nie wiedzą tyle ile powinny wiedzieć, to moim zdaniem branie się za modernizację programu deasemblowanego, jest w Twoim przypadku niewykonalne. Dla mega specjalisty byłaby to strasznie ciężka i żmudna robota.
Chodzi o to że to co chcesz zrobić zapewne nie da efektu, jaki oczekujesz.
Tak jak pisałem wyżej, "wsad" jak raczyłeś nazywać program zapisany we Flashu megi, jest kodem maszynowym mikrokontrolera w postaci binarnej. Jeżeli uda Ci się go odczytać i deasemblować, to będziesz miał kod maszynowy w postaci tekstowej, takiej w której będziesz znał tylko instrukcje i ich kolejność. Kod ten, będzie różnił się od tego pisanego przez człowieka, że będzie pozbawiony komentarzy, etykiet. Stałe i zmienne nie będą miały nazw symbolicznych, takich jak ludzie używają podczas tworzenia kodu, będą to po prostu czyste wartości (w przypadku stałych) lub wartości adresów (w przypadku zmiennych).
Poradzę Ci zatem, poczytaj stronkę którą Ci poleciłem, poszukaj trochę materiałów tu na forum, w literaturze. Zapoznaj się bliżej z architekturą mikrokontrolera i zacznij pisać programy od początku samemu. Za jakiś czas zrozumiesz co miałem na myśli, odradzając Ci metodę która chciałeś zastosować.
Podstawy mam ale to są podstawy i to na atmega 8, do którego sie ostatnio zbliżyłem z dwa lata temu.
Ok to inaczej zapytam aby mieć janość. Z Modyfikacji w programie mogę zrezygnować pod warunkiem przebudowy układu. Jednak to musiałbym zrobić na nowej płytce a przez to nowej atmedze. Czy w takim razie w prostej linii robiąc kopię układu elektronicznego, będę w stanie przynajmniej skopiować zawartość i wgrać do nowej atmegi?
Jeżeli pamięć flash jest zabezpieczona przed odczytem to nie. Jeżeli nie jest zabezpieczona przed odczytem, to jak najbardziej możesz tak zrobić.
Wspominałeś coś o AVRdude, myślę że z jego pomocą, jesteś w stanie sprawdzić czy pamięć jest zabezpieczona i jeżeli nie jest zabezpieczona, odczytać ją i zapisać w postaci pliku hex czy bin na kompie, a później ewentualnie tym plikiem zaprogramować kolejny mikrokontroler. Ale jak to zrobić to Ci już nie doradzę, bo ja nigdy tym sprzętem się nie bawiłem. Myślę że z pomocą helpa i ewentualnie kolegów z forum dasz radę to w miarę szybko ogarnąć.
I w zasadzie nic więcej w tym temacie się chyba nie da powiedzieć, ani zrobić.
✨ Użytkownik pyta o możliwość zgrania wsadu z układu opartego na mikrokontrolerze ATmega16, który został zakupiony od osoby trzeciej. W przeszłości korzystał z ATmega8 i prostego programu do zgrywania wsadów, jednak program na ATmega16 jest zablokowany. Odpowiedzi wskazują, że jeśli pamięć flash jest zabezpieczona bitem lock w FUSE BITS, to odczyt jest niemożliwy. Użytkownik powinien skontaktować się z poprzednim właścicielem w celu uzyskania oryginalnego kodu. W przypadku braku kontaktu, sugeruje się użycie programatora równoległego do odblokowania mikrokontrolera. Wspomniano również o programach Bascom i AVR Studio, które mogą być użyte do programowania, ale nie do odczytu z zablokowanej pamięci. Użytkownik rozważa również możliwość skopiowania układu elektronicznego i wgrania zawartości do nowej ATmegi, co jest możliwe tylko, jeśli pamięć nie jest zabezpieczona. Wygenerowane przez model językowy.