Compilador: CCS
PIC18F4550
Bien, pues tengo el bootloader proporcionado por CCS (ex_usb_bootloader.c) corriendo y funcionando bien en el PIC. Lo que le quiero añadir ahora es que borre la EEPROM cada vez que se programa. El escenario es el siguiente: hay cargado un programa en el pic, tenemos una version nueva/modificada del mismo programa, y la queremos cargar de forma que sus variables en la EEPROM se reseteen a su valor inicial, y no cargar el valor que hubo la última vez, que es lo que hace ahora. Para solucionar eso se tendria que borrar la EEPROM antes de escribir el programa, correcto?
El software ya lo tengo. Leo un archivo .hex y se lo envio al firmware línea por línea.
He provado ésto, sin éxito
Código:
#define EEPROM_SIZE getenv("DATA_EEPROM")
#define EEPROM_START getenv("EEPROM_ADDRESS")
#define EEPROM_END (EEPROM_START + (EEPROM_SIZE-1))
Código:
void load_program(void){
//...
/* Borrar EEPROM */
unsigned int32 addr_ee;
for(addr_ee=EEPROM_START; addr_ee<EEPROM_END-EEPROM_ERASE_SIZE+1; addr_ee+=EEPROM_ERASE_SIZE)
erase_program_eeprom(addr_ee);
//se escribe el programa al pic
}
Lo que se ha de hacer es simplemente eso, no? un bucle recorriendo la memoria eeprom y borrarla. Porque no me funciona? Hay alguna otra forma?