Avrdude ser_drain(): read error, stk500_getsync()
W internecie istnieje wiele opisów jak podłączyć mikrokontroler avr do esp i zdalnie (OTA) aktualizować jego firmware. Niestety używając do tego programu avrdude napotykamy na problem. Pod macos-em wszystko działa poprawnie. Pod windows-em wyskakuje błąd ser_drain(): read error.
Błąd ser_drain(): read error
Przy próbie odczytu procesora przez sieć pojawia się taki lub podobny komunikat:
avrdude -carduino -pm8 -Pnet:192.168.1.149:23
avrdude: ser_drain(): read error: The parameter is incorrect.
avrdude: ser_drain(): read error: The parameter is incorrect.
avrdude: ser_drain(): read error: The parameter is incorrect.
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x53
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x74
avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x65
avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x70
avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x3a
avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x20
avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x31
avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x36
avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x0d
avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x0a
avrdude: ser_drain(): read error: The parameter is incorrect.
avrdude done. Thank you.
Rozwiązanie problemu
Problem został opisany tutaj:
https://savannah.nongnu.org/bugs/?48767#comment5
A ktoś o nicku ccooper21 umieścił poprawione źródła na githubie:
https://github.com/ccooper21/avrdude/tree/master/avrdude
Niestety nie znalazłem tam wersji skompilowanej. Postanowiłem skompilować źródła przy pomocy MinGW. Tak powstała działająca wersja avrdude.exe, którą można pobrać poniżej.
avrdude -carduino -pm8 -Pnet:192.168.1.149:23
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e9307 (probably m8)
avrdude: safemode: Fuses OK (E:FF, H:00, L:00)
avrdude done. Thank you.
Download
Jak wykorzystać poprawiony avrdude ?
Tak poprawiony avrdude może być użyty do wgrywania firmware-u do mikrokontrolerów avr takich jak Atmega8, Atmega328P itp. Sposób podłączenia atmegi do ESP-01 opiszę w jednym z kolejnych postów.