Autor Tema: Borrar flash  (Leído 1774 veces)

0 Usuarios y 3 Visitantes están viendo este tema.

Desconectado c4_esp_VR

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
    • www.muchotrasto.com
Borrar flash
« en: 02 de Noviembre de 2011, 06:49:36 »
Hola compañeros,

Resulta que tengo un sistema anti-tamper con un botón y me gustaría que cuando saltase poder borrar el programa o la flash del microcontrolador desde el propio micro...¿es esto posible?.

Entiendo que se podrían meter un boot que dependiendo de si una entrada está a 1 o a 0 ejecute un programa de ejecución normal o un programa que borre la flash donde se sitúa el programa normal, ¿no?. Esto que suene fácil...tiene pinta de ser muuuuuyyy complicado... :? :? :?

Alguna idea de por donde empezar...

Mil gracias todopicforeros  ;-)

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Borrar flash
« Respuesta #1 en: 02 de Noviembre de 2011, 11:15:58 »
es sencillo, lo primero que tienes que hacer es colocar el codigo de borrado al final de la memoria, ya que si borras el "borrador de flash" se quedara el programa pillado y puede que no se borre todo.

para borrar tienes que borrar por sectores, dependiendo del pic algunos van por 64bytes, otros por 32, 16... eso ya lo debes mirar en el datasheet

y hacer esto:

TBLPTR=sector que quieras borrar;
EECON1bits.EEPGD=1;
EECON1bits.CFGS=0;
EECON1bits.WREN=1;
EECON1bits.FREE=1;
EECON2=0x55;
EECON2=0xAA;
EECON1bits.WR=1;

en TBLPTR debes escribir la direccion de memoria (es un registro de 24bits), como borra de sector en sector tienes que apuntar a cualquier direccion del sector, es decir si quieres borrar el primer sector, y tu pic borra de 64bytes en 64bytes, poniendo en TBLPTR cualquier numero desde el 0->63 borraras ese sector, para el sector 2, cualquier numero entre 64->127...

Desconectado c4_esp_VR

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 735
    • www.muchotrasto.com
Re: Borrar flash
« Respuesta #2 en: 03 de Noviembre de 2011, 04:09:25 »
Citar
lo primero que tienes que hacer es colocar el codigo de borrado al final de la memoria

¿Te refieres a poner el código de la función de borrado al final de la memoria?. ¿cómo se haría esto?, es decir, reservar una dirección específica de memoria de la flash en el microcontrolador para poner dicha función.

Muchas gracias.

Desconectado MerLiNz

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2463
Re: Borrar flash
« Respuesta #3 en: 03 de Noviembre de 2011, 06:58:27 »
en C18 tienes que editar el archivo .lkr que corresponde a tu pic y con #pragma code nombre=direccion te vale

en ccs y demas nose como va


 

anything