(PIC) Borrar EEPROM con bootloader

Iniciado por LiLou, 20 Marzo 2014, 09:16 AM

0 Miembros y 1 Visitante están viendo este tema.

LiLou

Hola, antes que nada, a lo mejor es una obviedad para muchos lo que pido, pero es la 1a vez que programo para PICs (de echo, no soy ni ingeniero electrónico, sino informático).

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 :(

#define EEPROM_SIZE getenv("DATA_EEPROM")
#define EEPROM_START getenv("EEPROM_ADDRESS")
#define EEPROM_END (EEPROM_START + (EEPROM_SIZE-1))


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?

LiLou

Ya lo tengo. El que lo quiera, que me lo pida.

más de 500 visitas, 0 respuestas, wow...

gmola17

Por favor podrías compartir el código y decirme en que parte del archivo ex_ubs_bootloader.c va colocado? ya que estoy plantado con el mismo problema, gracias.