Autor Tema: Calcular el CRC del programa de un PIC16F76 guardado en un archivo .bin  (Leído 2162 veces)

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

Desconectado thinredline

  • PIC10
  • *
  • Mensajes: 3
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.

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Calcular el CRC del programa de un PIC16F76 guardado en un archivo .bin
« Respuesta #1 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
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado thinredline

  • PIC10
  • *
  • Mensajes: 3
Re: Calcular el CRC del programa de un PIC16F76 guardado en un archivo .bin
« Respuesta #2 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. :-/

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Calcular el CRC del programa de un PIC16F76 guardado en un archivo .bin
« Respuesta #3 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.
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús


 

anything