TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: thinredline en 17 de Abril de 2008, 05:49:00

Título: Calcular el CRC del programa de un PIC16F76 guardado en un archivo .bin
Publicado por: thinredline en 17 de Abril de 2008, 05:49:00
Buenas a todos,

Ayer coloque esta consulta en el subforo PROGRAMADORES (pero no sé cual es el más indicado, y la verdad es que me urge el asunto :?).

El problema es que necesito identificar, con Checksum y CRC el programa que hay grabado en un PIC16F76. Para el checksum, no tengo problema, porque leo el PIC con mi programador, un ALL-11 de HI-LO Systems y su sofware asociado, y automaticamente me da el Checksum. Para el CRC, se complica el asunto, hasta ahora salvaba a un archivo binario el programa leido y calculaba el CRC de ese archivo con un programa llamado WINHEX. Pero recientemente, me he dado cuenta que el software del programador guarda en el binario, por defecto, todo el buffer del programador (desde la dirección 0000 hasta la 4FFF) y que el PIC16F76 solo tiene 8K de memoria  FLASH (esto sería desde la dirección 0000 hasta la 1FFF, como así tambien lo indica el software del programador).

Por otro lado, creo que la familia 16F7X utiliza words de 14 bits, por lo que no tengo ni idea hasta que dirección debo guardar los datos leidos para tener la seguridad de que estoy calculando el CRC del programa (solo la memoria FLASH) grabado en el PIC (ni un dato más ni un dato menos, porque afectaria al cálculo del CRC). Según mis calculos podría ser: Memoria FLASH = 8K (words) x 14 bits/word = 8192 x 14 = 114.688 bits : 8 bit/word (que parece que es lo que guarda el programador) = 14.336 words = 14K (desde la dirección 0000 hasta la 3800).

Comentaros, también, que el programador que utilizo trabaja con words de 8 bits (o sea bytes).

¿Son correctos mis cálculos?¿hasta que dirección debería guardar para calcular el CRC solamente de lo que haya en la FLASH?

Un saludo y gracias.
Título: Re: Calcular el CRC del programa de un PIC16F76 guardado en un archivo .bin
Publicado por: jfh900 en 17 de Abril de 2008, 11:06:04
Efectivamente los cálculos están bien echos. Aunque la memoría no se llene, puedes calcular el CRC con toda la memoria.

Un saludo
Título: Re: Calcular el CRC del programa de un PIC16F76 guardado en un archivo .bin
Publicado por: thinredline en 17 de Abril de 2008, 12:30:08
¿O sea de la 0000h hasta la 1FFFh (8KB)? ¿o desde la 0000h hasta la 3800h (14KB)? ¿o otras?

Hay que tener en cuenta que mi programador trabaja en bytes (8-bit word) y el PIC16F76 trabaja con 14-bit words, por lo que si solo guardo de la 0000h hasta la 1FFFh, me faltarian bits, pero si guardo de la 0000h a la 3FFFh (16KB) me sobrarian y el CRC no seria el de la memoria FLASH del PIC sino de algop más, y por lo tanto distinto al del programa grabado en el PIC.

Un saludo y muchas gracias por tu ayuda. :-/
Título: Re: Calcular el CRC del programa de un PIC16F76 guardado en un archivo .bin
Publicado por: jfh900 en 17 de Abril de 2008, 16:51:59
Ni te faltan ni te sobran bits ya que:

1FFF x 14 = 3FFF x 8

Todo depende de cuantos bits tome tu sistema. Si el grabador trabaja con 8 bits por palabra tendrás que escribir o leer hasta 3FFF.

Un saludo.