AVR mit avrdude sichern

Ich experimentiere intensiv mit ATtiny AVRs und kann es mir nicht leisten, für jedes Experiment einen neuen AVR zu kaufen, also habe ich mir ein Backup-Skript ausgedacht. Die Idee ist, dass ich meinen AVR auf die Werkseinstellungen zurücksetzen kann, nachdem ich sie verwendet habe. Besonders Sicherungen und Kalibrierung sind hier schwierig, die ich wiederherstellen möchte, da sie die „Boot“-Parameter, die Taktrate und die Energieeffizienz verändern können.

Die Idee ist, meinen AVR mit dem folgenden Skript zu sichern:

#!/bin/bash

baud=115200
avr=attiny45
dst=$avr.`date +"%Y%m%d_%H%M%S"`
port=/dev/ttyUSB0

# calibration  One or more bytes of RC oscillator calibration data.
# eeprom       The EEPROM of the device.
# efuse        The extended fuse byte.
# flash        The flash ROM of the device.
# fuse         The fuse byte in devices that have only a single fuse byte.
# hfuse        The high fuse byte.
# lfuse        The low fuse byte.
# lock         The lock byte.
# signature    The three device signature bytes (device ID).
# fuseN        The fuse bytes of ATxmega devices, N is an integer number for each fuse supported by the device.
# application  The application flash area of ATxmega devices.
# apptable     The application table flash area of ATxmega devices.
# boot         The boot flash area of ATxmega devices.
# prodsig      The production signature (calibration) area of ATxmega devices.
# usersig      The user signature area of ATxmega devices.

for memory in calibration eeprom efuse flash fuse hfuse lfuse lock signature application apptable boot prodsig usersig; do
        avrdude -p $avr -c stk500v1 -P $port -b $baud -U $memory:r:/dev/stdout:i > ./$dst.$memory.hex ||
                rm ./$dst.$memory.hex
done

Die einzige Ausnahme ist der fuseN-Speicher, aber ich benutze kein ATxmega und das war mir einfach egal.

EDIT1 : Ich verwende einen ATmega168-betriebenen Arduino Duemanilove mit ArduinoISP-Sketch, der stk500v1 emuliert, um meine Geräte zu programmieren. Hochspannungsprogrammierung wird nicht unterstützt.

EDIT2 : Es ist mir gelungen, meinen ATtiny45 auch mit meinem Arduino erfolgreich zu entmauern, indem ich die Informationen unter http://www.rickety.us/2010/03/arduino-avr-high-voltage-serial-programmer/ verwendet habe.

Nun stellt sich die Frage wie folgt: Das Backup-Skript scheint wie vorgesehen zu funktionieren, aber bevor ich meinen AVR "bricke", wird die Programmierung der resultierenden Dateien den AVR auf die Werkseinstellungen zurücksetzen?

Erstens: Haben Sie einen Hochspannungs-AVR-Programmierer? Wenn Sie dies nicht tun, besorgen Sie sich eine und kümmern Sie sich dann um das Schreiben von Standardeinstellungen, da Sie sie in bestimmten Fällen benötigen, um den AVR zu debricken.

Antworten (1)

Aus Ihrem Skript sieht es so aus, als würden Sie ein STK500-Board verwenden. Sie können den STK500 verwenden, um Hochspannungsprogrammierung mit den Attiny-Chips durchzuführen, sodass Sie die MCU jederzeit auf die Werkseinstellungen zurücksetzen können.

Es gibt bestimmte Dinge, die Sie mit Ihrem Skript nicht beheben können. Wenn Sie beispielsweise DWEN festlegen oder die Reset-Funktion deaktivieren, können Sie die ISP-Schnittstelle nicht verwenden.

Ich muss DWEN später am Wochenende im Datenblatt überprüfen. Ich stimme dem Zurücksetzen der Deaktivierung zu, das ist ein bekanntes / kalkuliertes Risiko. Mein STK500 ist eigentlich ein Arduino Duemanilove, auf dem die ArduinoISP s/w läuft, also bezweifle ich, dass Hochspannungsprogrammierung eine Option ist.