Welcome! Log In Create A New Profile

Advanced

Recuperar Firmware

Posted by matute333 
Recuperar Firmware
October 14, 2015 09:52AM
Hola gente, una consulta para los que saben, hay manera de recuperar el firmware una vez cargado en la placa? osea de ver o modificar el firm que ya esta cargado en caso de no tener el archivo original, como para recuperar las configuraciones basicas. Estube buscando y no encontre nada al respecto.

En este caso en particual es de una impresora ya armada (imposible contactarse con el fabricante) en la cual no me reconoce un termistor cuando lo cambie, por lo que necesitaria modificarlo en el firm y no quiero cargar un firm desde cero y volver a calibrar todo de nuevo ya que el resto de las configuraciones esta perfecto (steps, temp, etc.)

Les agradezco cualquier pista, saludos.

Edited 1 time(s). Last edit at 10/14/2015 09:53AM by matute333.
Re: Recuperar Firmware
October 14, 2015 11:00AM
Auto-respuesta: Probe con el comando 503 pero no devuelve nada, se ve que no esta habilitada desde el firm la lectura de la EEPROM, por lo cual no hay solucion sencilla posible, mas que configurar todo desde cero
Re: Recuperar Firmware
October 14, 2015 01:38PM
Que tal Matute333, en general los microcontroladores con tecnología de memoria Flash no estan pensados para poder recuperar el firmware que se les baja, es más, Atmel incorpora en todos sus micros unos switches que se llaman "lock bits" que permiten adicionar una seguridad extra bloqueando cualquier operación de lectura de la Flash de programa y/o también usando encriptación al momento de grabarla. Hay casos que esto se logra (en la jerga se lo llama "dump") pero para ello hay que sobreescribir porciones del codigo y meterle de prepo alguna especie de boot en el inicio para que el soft se lea y saque a si mismo por algun puerto.

Suponiendo que puedas hacer una lectura de la Flash de programa, lo que obtendrías no seria el "source" de tu programa si no un archivo binario que solo podrias ver y modificar con un editor hexadecimal y en donde toda la información estaria codificada.

Dentro del protocolo STK500 de Atmel [atmel.com] que es el usado para comunicar el Arduino con la PC hay un comando llamado STK_READ_PAGE (HEX 0x74) , pero la verdad nunca lo use y habria que investigar el tema. Por lo que vi escupe bloques de 256bytes de a uno a la vez.
Seguramente requerirá algun hardware a medida para poder "pescar" el output que devuelve que me imagino sera por puerto serie y rearmar luego todo el archivo binario. La verdad un laburo.

Veo de hacer un par de pruebas, si consigo algo te cuento.

Saludos!

Edited 1 time(s). Last edit at 10/14/2015 01:52PM by Posete.
Re: Recuperar Firmware
October 14, 2015 05:06PM
Gracias por la data Posete, la verdad entre el laburo de hacer eso y configurar todo de nuevo me parece que voy a calibrar desde cero. La ley del menor esfuerzo grinning smiley
Re: Recuperar Firmware
October 15, 2015 11:17AM
Que tal Matute333 logre hacer un dump tanto de la Flash como de la EERPOM del ArduinoMega2560. Para eso use este programador de Atmel -> [articulo.mercadolibre.com.ar] conectado al puerto ICSP (es el único conector de 6 pines en 2x3 que tiene la placa) y el soft PROGISP.

Desde luego para que esto funcione los lockbits no deben estar seteados y los archivos obtenidos estaran en formato binario.

Saludos
Pablo
Attachments:
open | download - Clipboard01.jpg (264.8 KB)
Re: Recuperar Firmware
October 15, 2015 02:02PM
OJO CON ESTO!!

Mirando un poco veo que el Arduino2560 no tiene el 100% de su Flash disponible para programa, hay 8k que contienen un bootloader que hace posible que la placa tenga conectividad USB con la PC. Se se modifica esta porción de la Flash se perderá la posibilidad de grabarlo desde el IDE de Arduino.

The ATmega2560 in the Mega2560 has larger memory space :

Flash 256k bytes (of which 8k is used for the bootloader)
SRAM 8k bytes
EEPROM 4k byte

Yo use para hacer el dump un grabador para micros de Atmel donde normalmente se lee y escribe el 100% de la Flash para proyectos de microcontroladores NO-ARDUINO. Hay que tener sumo cuidado de no tocar este espacio de 8k sino el Arduino quedará turulo y no podra bootear. Desde luego esto se arregla sobreescribiendo con una imagen sana del bootloader (la cual ya mismo voy a guardar). El IDE de Arduino desde luego, esta preparado para generar el codigo y grabarlo sin tocar este sector de booteo.

Mirando el archivo que baje encontre... 3 bloques de (casi) 8k todos con la misma información, uno en 0x1E000, otro en 0x2E000 y otro al final en 0x3E000.

Adjunto la imagen que baje de mi placa Arduino2560 virgen (de origen china) en caso que alguien la necesite si se le desprograma. Es el mismo dump, pero uno esta en binario y el otro en formato HEX de Intel.

Volviendo al tema origianl es posible bajar y recuperar un Firmware, pero si se lo quiere modificar este espacio reservado debe estar intacto.

Saludos
Pablo
Attachments:
open | download - flash-arduino2560.bin (256 KB)
open | download - flash-arduino2560.hex (76.8 KB)
Sorry, only registered users may post in this forum.

Click here to login