Sichern Sie AVR mit avrdude

7

Ich experimentiere intensiv mit ATtiny AVRs und kann es mir nicht leisten, für jedes Experiment einen neuen AVR zu kaufen. Deshalb 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. Insbesondere Sicherungen und Kalibrierungen sind hier schwierig. Ich möchte sie wiederherstellen können, da sie die Startparameter, die Taktrate und die Energieeffizienz ä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 Sicherungsspeicher, aber ich benutze ATxmega nicht und das war mir einfach egal.

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

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

Die Frage lautet nun wie folgt: Das Sicherungsskript scheint wie geplant zu funktionieren. Wird die Programmierung der resultierenden Dateien den AVR auf die Werkseinstellungen zurücksetzen, bevor ich meinen AVR "gemauert" habe?

Jippie
quelle
3
Erstens: Haben Sie einen Hochspannungs-AVR-Programmierer? Wenn Sie dies nicht tun, besorgen Sie sich eine und machen Sie sich dann Gedanken über das Schreiben von Standardeinstellungen, da Sie diese in bestimmten Fällen benötigen, um den AVR zu debricken.
AndrejaKo

Antworten:

5

Aus Ihrem Skript geht hervor, dass Sie eine STK500-Karte 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 Rücksetzfunktion deaktivieren, können Sie die ISP-Schnittstelle nicht verwenden.

lajos
quelle
Ich muss DWEN später am Wochenende im Datenblatt überprüfen. Ich stimme dem Deaktivieren des Zurücksetzens zu, das ein bekanntes / berechnetes Risiko darstellt. Mein STK500 ist eigentlich ein Arduino Duemanilove, auf dem das ArduinoISP s / w ausgeführt wird. Daher bezweifle ich, dass Hochspannungsprogrammierung eine Option ist.
Jippie