Copia de seguridad AVR con avrdude

Estoy experimentando mucho con ATtiny AVR y no puedo permitirme comprar un nuevo AVR para cada experimento, así que pensé en un script de respaldo. La idea es que pueda devolver mi AVR a los valores predeterminados de fábrica después de haberlos usado. Especialmente los fusibles y la calibración son complicados aquí y quiero poder recuperarlos, ya que pueden cambiar los parámetros de "arranque", la velocidad del reloj y la eficiencia energética.

La idea es hacer una copia de seguridad de mi AVR con el siguiente script:

#!/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

La única excepción es la memoria fuseN, pero no uso ATxmega y eso no me importaba.

EDIT1 : utilizo un Arduino Duemanilove alimentado por ATmega168 con un boceto ArduinoISP, que emula stk500v1, para programar mis dispositivos. No se admite la programación de alto voltaje.

EDIT2 : Logré desbloquear con éxito mi ATtiny45 con mi Arduino también usando la información en http://www.rickety.us/2010/03/arduino-avr-high-voltage-serial-programmer/

Ahora la pregunta es la siguiente: la secuencia de comandos de copia de seguridad parece funcionar según lo diseñado, pero antes de "bloquear" mi AVR, ¿la programación de los archivos resultantes devolverá el AVR a los valores predeterminados de fábrica?

Primero: ¿Tiene un programador AVR de alto voltaje? Si no lo tiene, obtenga uno y luego preocúpese por escribir la configuración predeterminada, porque en ciertos casos lo necesitará para desmantelar el AVR.

Respuestas (1)

Según su secuencia de comandos, parece que está utilizando una placa STK500. Puede usar el STK500 para hacer programación de alto voltaje con los chips attiny, por lo que siempre puede restablecer la mcu a los valores predeterminados de fábrica.

Hay ciertas cosas que no podrá arreglar con su secuencia de comandos, por ejemplo, si configura DWEN o desactiva la funcionalidad de reinicio, no podrá usar la interfaz ISP.

Tengo que verificar DWEN en la hoja de datos más adelante este fin de semana. Estoy de acuerdo con el reinicio de desactivación, que es un riesgo conocido/calculado. Mi STK500 es en realidad un Arduino Duemanilove que ejecuta ArduinoISP s/w, por lo que dudo que la programación de alto voltaje sea una opción.