Autor Tema: Necesito información sobre como diseñar software de grabación¿?  (Leído 3579 veces)

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

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Hola! Me gustaría saber donde puedo conseguir información de como hacer software de grabación para PICs. Me explico: lo que no se es como se pasan los datos del .HEX al protocolo ICSP para grabar el PIC; p.e. ahora mismo estoy trabajando con un 18f4550, el tamaño del .hex que genero es de 30kbytes y cuando lo grabo en el PIC este programa(utilizando Winpic800) apenas ocupa un 30% de la memoria de programa que es de 32kbytes. Teniendo en cuenta que el tamaño de la palabra para este PIC es de 16 bits... las cuentas no me salen. Quiero decir con esto, que deduzco que los bytes del .HEX no se copian de forma literal(o eso creo) en la memoria del PIC. También he visto en MPLAB que hay diferentes formatos de .HEX(8, 16 y32) pero no entiendo muy bien.... Si pudiera alguien explicarme como pasar del .HEX a bytes para grabar el PIC... Gracias a todos de antemano!!!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Necesito información sobre como diseñar software de grabación¿?
« Respuesta #1 en: 01 de Noviembre de 2006, 09:36:39 »
Hola! Me gustaría saber donde puedo conseguir información de como hacer software de grabación para PICs. Me explico: lo que no se es como se pasan los datos del .HEX al protocolo ICSP para grabar el PIC; p.e. ahora mismo estoy trabajando con un 18f4550, el tamaño del .hex que genero es de 30kbytes y cuando lo grabo en el PIC este programa(utilizando Winpic800) apenas ocupa un 30% de la memoria de programa que es de 32kbytes. Teniendo en cuenta que el tamaño de la palabra para este PIC es de 16 bits... las cuentas no me salen. Quiero decir con esto, que deduzco que los bytes del .HEX no se copian de forma literal(o eso creo) en la memoria del PIC. También he visto en MPLAB que hay diferentes formatos de .HEX(8, 16 y32) pero no entiendo muy bien.... Si pudiera alguien explicarme como pasar del .HEX a bytes para grabar el PIC... Gracias a todos de antemano!!!

Microchip tiene toda la información que necesitas sobre cómo grabar sus micros.

Estas hojas de datos que son como application notes, se suelen llamar "programming specifications".  Tienes para los 16F, 18F, 18FJ, etc.

Si lees en el manual del Assembler del pic (MPASM) , que también te puedes bajar de su página en el sector Development Tools, podrás ver una explicación del archivo .HEX.

Este archivo es "texto plano ASCII" , y será siempre mucho más grande que el código binario ya grabado en el pic.

Tiene infromación de la dirección de memoria donde se grabará el dato, el dato en sí está en hexa pero en ascii, lo cual significa que 16 bits, se representan por 4 caracteres, es decir el doble de bytes.  También tiene un checksum.

Si buscas en el foro, hay información al respecto del archivo .HEX
- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Necesito información sobre como diseñar software de grabación¿?
« Respuesta #2 en: 01 de Noviembre de 2006, 13:14:06 »
Le he echado un ojo al manual del MPASM y creo que me ha quedado bastante claro. Aun con esto tengo una última duda: ¿qué es lo que hacen los softwares de grabación(IC-PROG, WINPIC800, etc.) con el checksum? Es decir.... es evidente que el PIC que estamos grabando no va a calcular un CRC y te va a pedir retrasmisión de datos :D. Lo unico que se me ocurre es que a la hora de verificar, lea los datos del PIC y calcule el polinomio de nuevo y lo compare con el checksum original, pero aun así me parece algo extraño... Gracias a todos!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado omix

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 244
Re: Necesito información sobre como diseñar software de grabación¿?
« Respuesta #3 en: 08 de Noviembre de 2006, 18:03:32 »
Le he echado un ojo al manual del MPASM y creo que me ha quedado bastante claro. Aun con esto tengo una última duda: ¿qué es lo que hacen los softwares de grabación(IC-PROG, WINPIC800, etc.) con el checksum? Es decir.... es evidente que el PIC que estamos grabando no va a calcular un CRC y te va a pedir retrasmisión de datos :D. Lo unico que se me ocurre es que a la hora de verificar, lea los datos del PIC y calcule el polinomio de nuevo y lo compare con el checksum original, pero aun así me parece algo extraño... Gracias a todos!

Hola, el software de programación de un pic, cuando procesa un fichero .hex, lo que hace con el checksum es comprobar que los datos que hay en el fichero .hex son correctos, es decir, se realiza la "suma" de los bytes que aparecen en cada linea, excepto el byte de checksum y se compara el checksum calculado con el checksum que aparece en el .hex y si no coinciden es que dicha linea contiene almenos un error.

En cuanto a la verificación de la grabación del micro lo que se hace es, una vez programado, se lee el contenido del micro y se compara con el buffer del software donde esta el codigo que acabas de programar, si son iguales es que se ha programado todo correctamente.

Saludos.

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Necesito información sobre como diseñar software de grabación¿?
« Respuesta #4 en: 09 de Noviembre de 2006, 22:48:48 »
Gracias por tu respuesta omix, realmente me ha quedado claro: muy buena explicación :-/. Tambien tengo la duda sobre como se graba "la palabra de configuración".... es decir, he leido que al menos para leerla existe un comando ICSP especial. ¿Se tratan estas direcciones como las demas dentro del archivo hexadecimal o están al principio o al final o algo raro :D?(No pone nada al respecto en el manual de MPASM...)  es simplemente para saber si se graba como el resto de memoria de programa, o no. Gracias, saludos a todos!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado ESTECA55

  • PIC24H
  • ******
  • Mensajes: 1404
Re: Necesito información sobre como diseñar software de grabación¿?
« Respuesta #5 en: 09 de Noviembre de 2006, 23:10:02 »
Hola, aca adjunto algo que puede llegar a ser util,

Protocolo de programación de dispositivos Microchip PIC
Hay que esforzarse por ser el mejor, no creerse el mejor

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Necesito información sobre como diseñar software de grabación¿?
« Respuesta #6 en: 10 de Noviembre de 2006, 10:50:42 »
Gracias por el archivo,esteca55. Ahí pone lo siguiente: "....Los registros de identificación del dispositivo, ID Locs, serán los primeros que deberán cargarse...." ¿Quiere decir esto que también serán estos registros los primeros que encontraré en el archivo .hex?. Saludos!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado ESTECA55

  • PIC24H
  • ******
  • Mensajes: 1404
Re: Necesito información sobre como diseñar software de grabación¿?
« Respuesta #7 en: 10 de Noviembre de 2006, 11:13:10 »
Hola,

Citar
¿Quiere decir esto que también serán estos registros los primeros que encontraré en el archivo .hex?

no se si  lo primero encontraras en el hex va a ser la palabra de configuracion, por ejemplo, hay veces compilando en el MPlab, al cargar el hex en otro prograpara para grabar, como el ICprog, no aparecen dicha confg.
Creo que deberias encontrar el metodo de edentificar en el *.hex cuando esta o no dicha info.

Saludos
Hay que esforzarse por ser el mejor, no creerse el mejor

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Necesito información sobre como diseñar software de grabación¿?
« Respuesta #8 en: 10 de Noviembre de 2006, 13:32:09 »
Lo de que MPLAB no guarda la palabra de configuración ya lo pregunté en otro post... parece ser que la unica forma de asegurarse de que se guarda en el .hex es declarar el estado de los fuses en el código utilizando una directiva de preprocesador(en C18, p.e es #pragma, creo recordar). Parece ser que lo que le indicas a MPLAB sobre la palabra de configuración sólo es válido cuando utilizas el mismo MPLAB como software de grabación(usando alagún programador de Microchip). Saludos y gracias!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado omix

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 244
Re: Necesito información sobre como diseñar software de grabación¿?
« Respuesta #9 en: 10 de Noviembre de 2006, 16:27:38 »
Hola, los ficheros .hex normalmente estan ordenados por la direccion de los datos a escribir (aunque no tiene porque ser asi, ya que se especifica en cada bloque de datos en que dirección se han de escribir), es decir, se empezaria almacenando desde la direccion 0x0000 hasta la direcciona 0x3FFFFF (en el caso de los micros de la serie 18F), con lo cual si siguen este orden los IDs aparecerian antes que los bits de configuración del micro, ya que se encuentran a partir de la dirección 0x200000, y luego aparecerian los bits de configuracion (0x300000).

Claro que todo esto depende muchas veces del compilador, puesto que si no pones en el código los bits de configuración, normalmente los compiladores no incluyen esta información en el .hex, como es el caso del compilador hitech.

Saludos.

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Necesito información sobre como diseñar software de grabación¿?
« Respuesta #10 en: 15 de Noviembre de 2006, 15:51:29 »
Hola! me ha surgido una nueva duda que aunque no tiene mucho que ver con lo anterior, la expongo aqui para no abrir un nuevo hilo.... El caso es que me gustaría saber como se genera el reloj en ICSP. Es decir, estoy intendando hacer un programador autonomo(pic graba pic...) pero no tengo muy claro como generar el reloj en el master. En realidad no tengo ni idea de como el resto de protocolos serie(SPI, I2C, UART) generan un reloj a nivel fisico, como siempre me limitio a conectar SCK-master con SCK-esclavo y a poner datos en la linea...por esto me surge la duda con ICSP. Saludos!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado omix

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 244
Re: Necesito información sobre como diseñar software de grabación¿?
« Respuesta #11 en: 18 de Noviembre de 2006, 17:09:33 »
Hola de nuevo, para generar el reloj en ICSP, lo tienes que hacer tu a mano, es decir, tienes que dar un pulso a la pata del micro que hayas seleccionado para que sea la linea de reloj en el ICSP, con cada bit que le envies por la pata de datos del ICSP. En el caso de otros protocolos como I2C o SPI, si estan implementados por hardware, el propio hardware es el que genera la señal de reloj y si son implementados por software, pues evidentemente es la rutina que lo implementa la que lo tiene que hacer.

Un Saludo.


 

anything