pymcuprog
pymcuprog copied to clipboard
Error using chip erase
By setting fuses, I have enabled CRC scan of boot section during boot. The CRC scan fails.
Then, I perform chip erase by running:
sudo pymcuprog erase -i updi -d avr64ea48
That does not work, and produces following output:
pyedbglib.protocols.jtagice3protocol - ERROR - JTAGICE3 error response code 0x43: 'AVR8_FAILURE_CRC_FAILURE: CRC error'
pymcuprog.nvm - WARNING - AVR8_FAILURE_CRC_FAILURE: CRC error
pymcuprog.pymcuprog - ERROR - Operation failed with Jtagice3ResponseError: AVR8_FAILURE_CRC_FAILURE: CRC error
The chip erase works when using Microchip Studio: Device Programming -> Memories -> Device -> Erase Now. I assume chip erase should work the same way in pymcuprog.
Hi @strawberryhacker
Yes, this is a bit of a tricky one for pymcuprog... the catch here is that Studio actually automatically and secretly resets the fuse value after an erase (fuses are untouched through an erase), and we did not want to build in this knowledge to pymcuprog.
A possible workaround is to write the corrected fuse value using pymcuprog, and use the chip-erase-locked-device switch to get in. This will perform a UPDI-key-based erase, and immediately write the fuse.
for example on my tiny1627:
pymcuprog write -m fuses -o 5 -l 0xC7 --chip-erase-locked-device
will do this.