Adquirí un PCB Arduino con un ATmega2560 , ya programado con el cargador de arranque Arduino y algún programa. Tengo el boceto , pero antes de jugar con él, me gustaría hacer una copia de seguridad del binario actual que está en el controlador. Como la mayoría de los Arduinos, está conectado a la PC usando un convertidor de USB a serie conectado a TX0 y RX0 y no hay una interfaz ISP .
Aparentemente hay un código para leer en el gestor de arranque Arduino , pero no tengo idea de qué herramienta usar para acceder a él, ya que no hay ningún elemento de menú en el IDE de Arduino.
¿Qué software necesito para leer el programa desde Arduino?
Respuestas:
El gestor de arranque Arduino es una variante del protocolo STK500 original (1.x) . El carácter 't' (ASCII 0x74) es el comando "Leer página". Entonces, tal vez sea posible extraer el programa a través del puerto serie a través del cargador de arranque usando AVRDUDE ... Pero, en el mejor de los casos, creo que tomará un tiempo elegante para hacerlo.
fuente
He descargado una memoria de Duemillenova con ATMega328P con el siguiente comando:
fuente
-v
necesarios cuatro s?./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:r:"/tmp/dump.bin":r -P /dev/ttyUSB0
; escribir:./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:w:"/tmp/dump.bin":r -P /dev/ttyUSB0
; verificar:./avrdude -C ../etc/avrdude.conf -v -v -v -v -p ATmega32u4 -c arduino -b 19200 -U flash:v:"/tmp/dump.bin":r -P /dev/ttyUSB0
¿ El AVR de respaldo con hilo avrdude responde a su pregunta? Básicamente, puede leer toda la memoria de un AVR siempre que el fusible de protección no esté configurado.
Esta es la configuración que uso para ATtiny's y ATmega's.
En el tablero que se muestra:
Consulte la hoja de datos del controlador qué pin exacto usar. Hay bastantes sitios web en Internet que escriben sobre la programación de AVR utilizando un Arduino, por ejemplo: http://hlt.media.mit.edu/?p=1229
fuente
Por lo que puedo ver desde el código fuente del gestor de arranque Arduino , no hay forma de 'volcar' toda la memoria de él. El gestor de arranque admite un modo 'monitor' que le permite volcar un byte de memoria a la vez. Sin embargo, según los comentarios del código fuente "/ * las funciones del monitor solo se compilarán cuando se use ATmega128, debido a las restricciones de tamaño del bloque de arranque * /"
Como tal, supongo que no tienes suerte si no quieres usar ISP, cambiar el gestor de arranque o subir un boceto para hacerlo.
fuente
else if(ch=='t') {
.Pensé que había una opción de menú para eso, pero no la encuentro en este momento. Si tiene un programador de ISP, puede usar AVR Studio para leer la imagen de memoria del chip y guardarla en un archivo HEX, que le permitiría restaurarla de la misma manera.
Editar
En respuesta a tu comentario, ¡eso es fácil! Necesita asimilar dos diagramas de información para llevarlo a cabo. El primero es el mapeo de pin Arduino / ATMega2560.
El segundo es el mapeo del pin del encabezado ISP / AVR:
Armado con estas dos imágenes, deberías poder ver cómo conectarlo.
Con esos en su lugar, debería poder usar AVR Studio para leer el archivo Hex del chip; avíseme si necesita más orientación.
fuente