TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: c4_esp_VR 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 ;-)
-
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...
-
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.
-
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