arduino / ArduinoCore-megaavr

Arduino Core for the ATMEGA4809 CPU
103 stars 62 forks source link

Arduini Nano Every avrdude EEPROM writing issue. #120

Closed mcuee closed 1 year ago

mcuee commented 1 year ago

Ref: https://github.com/avrdudes/avrdude/issues/1069#issuecomment-1216763433

For my official Arduini Nano Every board, it does not work with EEPROM writing, using latest avrdude git. I also tried different binaries (including Arduino version of avrdude 6.3 and 7.0) and none of them works.

I tend to believe it is a MuxTO FW issue on the SAM D11.

Interestingly I have a Nano 4808 clone and it works better (still got the RSP_ILLEGAL_MEMORY_TYPE warning message but it works in the end).

PS C:\work\avr\avrdude_test\avrdude_bin> mode COM7 baud=12 dtr=on > nul
PS C:\work\avr\avrdude_test\avrdude_bin> mode COM7 baud=12 dtr=off > nul

PS C:\work\avr\avrdude_test\avrdude_bin> .\avrdude.exe -C .\avrdude.conf -patmega4809 -cjtag2updi
 -PCOM7 -b115200 -Ueeprom:w:entest_256B.eep:i

avrdude.exe: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.29s

avrdude.exe: Device signature = 0x1e9651 (probably m4809)
avrdude.exe: reading input file entest_256B.eep for eeprom
avrdude.exe: writing 256 bytes eeprom ...

Writing |                                                   
 | 0% 0.00savrdude.exe: jtagmkII_paged_write(): bad response to write memory command: RSP_ILLEGAL_MEMORY_TYPE
Writing | #############                                      
| 25% 0.01savrdude.exe: jtagmkII_write_byte(): fatal timeout/error communicating with programmer (status -1)
 ***failed;
avrdude.exe: jtagmkII_write_byte(): fatal timeout/error communicating with programmer (status -1)
 ***failed;
avrdude.exe: jtagmkII_write_byte(): fatal timeout/error communicating with programmer (status -1)
 ***failed;

Debug message with -vvvv.

avrdude.exe: jtagmkII_write_byte(.., eeprom, 0xc, ...)
avrdude.exe: jtagmkII_write_byte(): Sending write memory command:
avrdude.exe: jtagmkII_send(): sending 11 bytes
avrdude.exe: Send: . [1b] . [1d] . [00] . [0b] . [00] . [00] . [00] . [0e] . 
[04] . [c4] . [01] . [00] . [00] . [00] . [0c] . [14] . [00] . [00] o [6f] { [7b] = [3d]
avrdude.exe: jtagmkII_recv():
avrdude.exe: ser_recv(): programmer is not responding
avrdude.exe: jtagmkII_recv(): Timeout receiving packet
mcuee commented 1 year ago

Ref: https://github.com/arduino/ArduinoCore-megaavr/issues/103

Looks like there is some hurdle to compile the FW even if I want to try the latest git instead of the factory FW.

mcuee commented 1 year ago

The above issue #103 has been fixed.

New binary can be downloaded here: https://github.com/arduino/ArduinoCore-megaavr/suites/7956541379/artifacts/339906755

mcuee commented 1 year ago

The following PR from avrdude seems to be able to work around the firmware issue in terminal mode. Normal mode may be fixed using similar method as well.

I will close this one.