Mantener datos en flash al reprogramar - PIC32

#1
Hola a todos!

Estoy desarrollando un dispositivo electrónico basado en el microcontrolador PIC32 y ahora estoy enfrentando el problema de guardar el Número de Serie del equipo sin perder esa información al hacer un update del firmware.

El problema es que al reprogramar el PIC se borra toda la memoria flash, reseteando así el Número de Serie.

La reprogramacíon se hace a través del ejemplo dado por Microchip "HID Bootloader". A partir de MPLAB IDE exporto un .HEX y lo cargo con el software del Bootloader. Al exportar verifico que el área dedicada a la Program Flash no se superponga con el área donde se encuentra el Número de Serie, pero no está funcionando bien.

Alguien tiene alguna idea de como hacer que los datos permanezcan ante una reprogramación?
Muchas gracias!!
 
#2
Desconozco como funcionan los pic, pero las flash se borran por páginas, si quieres conservar algo tendrá que estar alejado de las direcciones del programa para que "caiga" en otra página.
Lee el datasheet para saber de que tamaño son las páginas, lo malo es que perderás una entera para guardar solo el serial.
 
#3
Scooter, gracias por la respuesta.

Si, la flash funciona por páginas, en el pic32 cada página es de 4096 bytes, y efectivamente, el borrado es por página como mínimo. Por como diseñé el código, el número de serie está alojado en la página más alejada del código en la flash. El problema que estoy teniendo es no saber como hacer que al momento de programar no se borre todo el contenido de la flash y me preserve la página que contiene en número de serie.

Muchas gracias igual por la ayuda!
 
#4
Nunca he usado pics, pero en el AT80c51ED2 no pasaba eso si no recuerdo mal, solo se pisaba el trozo necesario.... ahora que pienso no te lo aseguro, me parece que FLIP (la aplicación de atmel) lo borraba entero.
Otra opción es que intentes hacer IAP (In Aplication Programming) en lugar de usar un programador. Dejar una parte mínima del firmware con un cargador y el número de serie para cargar el resto del firm. Eso si que lo hacía sin pegas el atmel. Habían unas rutinas en la rom que se llama y graban la flash sin salir de tu aplicación.
Esta opción sería la mejor porque podrías incluir mas seguridad para evitar que cualquiera lo flashee y por ejemplo que se pueda hacer a distancia por gprs o como yo hacía sin detener la aplicación de usuario (grabando la nueva a otra área de memoria, claro, sin pisar la anterior)
 
#5
Scooter!
Muchisimas gracias solucioné el problema :)
"Dejar una parte mínima del firmware con un cargador y el número de serie para cargar el resto del firm." fue la frase que me prendió la lamparita.
Te agradezco mucho la ayuda y tu tiempo.
Un abrazo
 

Temas similares

Arriba