¿Cómo leer el programa actual desde un Arduino?

14

Adquirí un PCB Arduino con un ATmega2560 , ya programado con el cargador de arranque Arduino y algún programa. Tengo el sketch , 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 mediante un convertidor de USB a serie conectado a TX0 y RX0 y no hay ISP interfaz.

Aparentemente hay código para leyendo en el gestor de arranque Arduino , pero no tengo idea de qué herramienta usar para acceder a él, ya que no hay un elemento de menú en el IDE de Arduino.

¿Qué software necesito para leer el programa de Arduino?

    
pregunta AndreKR

5 respuestas

1

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 gestor de arranque utilizando AVRDUDE ... Pero en el mejor de los casos, creo que Tomará un tiempo elegante para lograrlo.

    
respondido por el vicatcu
8

He volcado una memoria de Duemillenova con ATMega328P con el siguiente comando:

avrdude -C avrdude.conf -v -v -v -v -p atmega328p -c stk500 -U flash:r:"c:/arduino.hex":r -P\.\COM2 -b57600
    
respondido por el user17555
7

¿El hilo Backup AVR with avrdude responde 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 la pizarra mostrada:

  • 11 = MOSI
  • 12 = MISO
  • 13 = SCLK

Consulte la hoja de datos del controlador que pin exacto utilizar. Hay bastantes sitios web en Internet que escriben sobre la programación de los AVR utilizando un Arduino, por ejemplo: enlace

    
respondido por el jippie
3

Hasta donde puedo ver el código fuente del gestor de arranque Arduino , no hay forma de" volcar "toda la memoria de este. 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 inicio * /"

Como tal, supongo que no tendrá suerte si no quiere usar ISP, cambie el cargador de arranque o cargue un boceto para hacerlo.

    
respondido por el RJR
2

Pensé que había una opción de menú para eso, pero no lo estoy encontrando ahora. Si tiene un programador de ISP, puede usar AVR Studio para leer la imagen de memoria del chip y guardarlo en un archivo HEX, que le permitiría restaurarla por los mismos medios.

Editar

En respuesta a tu comentario, ¡eso es fácil! Necesitas asimilar dos diagramas de información para lograrlo. El primero es la asignación de pines Arduino / ATMega2560.

ElsegundoeselencabezadoISP/AVRPinMapping:

Armados con estas dos imágenes, deberías poder ver cómo se cablean.

  • Ejecutar un cable de DIG50 a Dragon ISP encabezado pin 1
  • Ejecutar un cable desde VCC hasta el pin 2 del encabezado ISP Dragon
  • Ejecutar un cable desde DIG52 a Dragon ISP encabezado pin 3
  • Ejecutar un cable desde DIG51 al pin 4 del encabezado ISP Dragon
  • Ejecutar un cable desde RESET hasta el pin 5 del encabezado ISP Dragon
  • Ejecutar un cable de GND a Dragon ISP encabezado pin 6

Con los que estén en su lugar, deberías poder usar AVR Studio para leer el archivo Hex del chip; avísame si necesitas más información.

    
respondido por el vicatcu

Lea otras preguntas en las etiquetas