Zdaje się że znalazłem niewielki błąd w AVRDUDE (testowane wersje 5.10 i 5.11) i chciałbym potwierdzić w jakich jeszcze przypadkach / kombinacjach występuje.
Mianowicie, komenda "chip erase" w zestawie komend protokołu ISP jest określona wyraźnie jako "AC 80 00 00".
W przypadku współpracy AVRDUDE i klonu programatora AVRISP MKII (USBTINY MKII), do układu docelowego fizycznie wysyłane jest "AC 8X XX XX", lub nawet "AC 9X XX XX" gdzie X to nielosowe, powtarzalne bajty ale bez żadnego powodu różne od tych właściwych. Zmieniają się gdy zmodyfikujemy linię poleceń dla avrdude (np dodamy lub usuniemy parametry), ale zawsze są powtarzalne i nie losowe.
Może trochę chaotycznie to opisuję, przykład:
Atmel Studio ze sterownikiem Jungo wysyła prawidłowe AC 80 00 00
Avrdude 5.10 wysyła AC 88 FA B2
Avrdude 5.11 wysyła AC 94 5C C2
Dowolny Avrdude z USBASP wysyła prawidłowe AC 80 00 00
Na szczęście układ docelowy rozpoznaje takie coś i wykonuje wewnętrzną instrukcję chip erase więc problem jakoś do tej pory nie został zauważony, ale buduję urządzenie które symuluje układ docelowy i zaczęło mnie zastanawiać czemu w taki sposób wykracza to po za specyfikację.
Jeśli ktoś ma wyżej wymieniony programator, klon lub oryginał, (lub inny programator) analizator stanów logicznych i chwilę wolnego czasu, niech rzuci okiem co programator śle po SPI.
Dane wysyłane w programator można również podejrzeć, dopisując do linii poleceń -vvvv, wtedy otrzymamy dokładniejszy log, i pod koniec szukamy wartości 0x80, za nią powinny być 00 00 00.
Powyższy log dowiedzie że te śmieci wysyłane są przez avrdude, i nie są wymysłem programatora. Kontaktowałem się z autorem programatora w tej sprawie, i programator obsługuje to tak: https://github.com/abcminiuser/lufa/blob/mast...ojects/AVRISP-MKII/Lib/ISP/ISPProtocol.c#L377
Pozdrawiam
Mianowicie, komenda "chip erase" w zestawie komend protokołu ISP jest określona wyraźnie jako "AC 80 00 00".
W przypadku współpracy AVRDUDE i klonu programatora AVRISP MKII (USBTINY MKII), do układu docelowego fizycznie wysyłane jest "AC 8X XX XX", lub nawet "AC 9X XX XX" gdzie X to nielosowe, powtarzalne bajty ale bez żadnego powodu różne od tych właściwych. Zmieniają się gdy zmodyfikujemy linię poleceń dla avrdude (np dodamy lub usuniemy parametry), ale zawsze są powtarzalne i nie losowe.
Może trochę chaotycznie to opisuję, przykład:
Atmel Studio ze sterownikiem Jungo wysyła prawidłowe AC 80 00 00
Avrdude 5.10 wysyła AC 88 FA B2
Avrdude 5.11 wysyła AC 94 5C C2
Dowolny Avrdude z USBASP wysyła prawidłowe AC 80 00 00
Na szczęście układ docelowy rozpoznaje takie coś i wykonuje wewnętrzną instrukcję chip erase więc problem jakoś do tej pory nie został zauważony, ale buduję urządzenie które symuluje układ docelowy i zaczęło mnie zastanawiać czemu w taki sposób wykracza to po za specyfikację.
Jeśli ktoś ma wyżej wymieniony programator, klon lub oryginał, (lub inny programator) analizator stanów logicznych i chwilę wolnego czasu, niech rzuci okiem co programator śle po SPI.
Dane wysyłane w programator można również podejrzeć, dopisując do linii poleceń -vvvv, wtedy otrzymamy dokładniejszy log, i pod koniec szukamy wartości 0x80, za nią powinny być 00 00 00.
Powyższy log dowiedzie że te śmieci wysyłane są przez avrdude, i nie są wymysłem programatora. Kontaktowałem się z autorem programatora w tej sprawie, i programator obsługuje to tak: https://github.com/abcminiuser/lufa/blob/mast...ojects/AVRISP-MKII/Lib/ISP/ISPProtocol.c#L377
Pozdrawiam