Autor Tema: Lectura de archivo .hex en VC# para grabar en memoria EEPROM  (Leído 8113 veces)

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

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 326
Lectura de archivo .hex en VC# para grabar en memoria EEPROM
« en: 13 de Noviembre de 2010, 14:19:32 »
Hola tengo una duda sobre como manejar los datos provenientes de un archivo .hex.
En estos días porté la aplicación ejemplo sobre como visualizar archivos de Suky y le hice una pequeña modificación para que solo leyera archivos .hex.

Ahora luego de leer el articulo del maestro RedPIC sobre como está compuesto el archivo .hex: http://www.todopic.com.ar/foros/index.php?topic=23342.0

Tengo dudas sobre como filtrar los datos del hex en Visual C# para obtener solo el dato y la dirección donde tiene que ir ..como lo muestro en la figura y luego ir guardando los datos y las direcciones de los mismos en un arreglo para transmitirlo por USB:

La idea sería crear un arreglo de datos y direcciones y poderlo enviar por USB para que el PIC se encargue de grabar la memoria EEPROM..he estado mirando como lo hace el pickit2 ...pero la verdad es que no entiendo muy bien como lo hace  :huh:

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Lectura de archivo .hex en VC# para grabar en memoria EEPROM
« Respuesta #1 en: 14 de Noviembre de 2010, 19:15:19 »
Hola!
Yo los leía linea a linea. Si la linea empieza con ":00" entonces tiene datos. Luego lees (de esa linea) cuatro caracteres mas para ver la dirección a la que pertenecen, etc. No es demasiado complicado leer el archivo.

Que hacer con eso una vez que lo has leído es otra cosa :P
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 326
Re: Lectura de archivo .hex en VC# para grabar en memoria EEPROM
« Respuesta #2 en: 15 de Noviembre de 2010, 00:48:21 »
Muchas gracias ariel , con el ejemplo que me diste en ucontrol entendí como hay que trabajar con el archivo ...ahora estoy viendo todas las alternativas Suky también me mostró como hacer lo que necesito igual que el la aplicación del PICKIT2 asi que está en estudio.
Gracias por responderme

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: Lectura de archivo .hex en VC# para grabar en memoria EEPROM
« Respuesta #3 en: 23 de Noviembre de 2010, 12:45:27 »
Muchas gracias ariel , con el ejemplo que me diste en ucontrol entendí como hay que trabajar con el archivo ...ahora estoy viendo todas las alternativas Suky también me mostró como hacer lo que necesito igual que el la aplicación del PICKIT2 asi que está en estudio.
Gracias por responderme

Si puedes coloca como solucionaste el problema, hice un programa en java para pasar el programa con el bootloader serial de microchip de los PIC24, cuando tenga tiempo lo comparto con todos. Eso lo hice con el fin de agregarlo a un programa que actualiza el programa del pic en cualquier momento que yo lo decida remotamente.

Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 326
Re: Lectura de archivo .hex en VC# para grabar en memoria EEPROM
« Respuesta #4 en: 23 de Noviembre de 2010, 15:45:23 »
El tema es que todavía no lo soluciono...voy de a poco...pero en cuanto termine lo posteo asi lo ven.

Fidodido...si podés explicar cuando tengas tiempo como hiciste para tratar el archivo hex estaría bueno  :mrgreen: mientras yo sigo investigando como hacerlo en C#

Saludos !

Desconectado manwenwe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2211
Re: Lectura de archivo .hex en VC# para grabar en memoria EEPROM
« Respuesta #5 en: 23 de Noviembre de 2010, 16:09:34 »
Igual consigues algo de ayuda prácticando "ingeniería inversa":

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1960

Ahí está el código fuente de la aplicación de grabación del PICKIT2...creo que está en C++...

Suerte!
Ojo por ojo y todo el mundo acabará ciego - Mahatma Gandhi -

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: Lectura de archivo .hex en VC# para grabar en memoria EEPROM
« Respuesta #6 en: 23 de Noviembre de 2010, 16:17:04 »
El tema es que todavía no lo soluciono...voy de a poco...pero en cuanto termine lo posteo asi lo ven.

Fidodido...si podés explicar cuando tengas tiempo como hiciste para tratar el archivo hex estaría bueno  :mrgreen: mientras yo sigo investigando como hacerlo en C#

Saludos !

Bueno yo programo en C30, entonces lo que hice fue colocar un monitor de puerto para ver que transfería el programa bullybootloader al PIC, intenta escaneando el puerto! si ya lo quieres hacer por USB no sabría como ayudar.

Si es así la transferencia del archivo cambia segun que tipo de PIC uses si es de 8, 16, "24", o 32 bit, es decir como el pic hace el arreglo de los registros.

Mira lo que hice yo para un PIC24Fj128ga010:

1. leer el .hex
2. Organizar el .hex por posicion de memoria:
2.1 Guardo cada linea del .hex en un arreglo de string[]
2.2 las posiciones 3, 4 y 5 de cada linea son la dirección de memoria, entero tipo hexadecimal. Organiza tu vector de menor a mayor.
2.3 las posiciones 1 y 2 indican cuantos bytes vamos a transferir al PIC, es decir 10 = 12 bytes, 0C = 9 bytes, 08 = 6 bytes y 04 = 3 bytes.
2.4 la posición 6 es el tipo de datos, nunca entendí para que eran esto, pero viendo el scaner de puertos me di cuenta que primero envia los datos 8 y luego los 0.

Esto es lo que me acuerdo ahora, luego te voy comentado del resto, espero que esto te ayude en algo!
  


Desconectado jonathanPIC888

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 326
Re: Lectura de archivo .hex en VC# para grabar en memoria EEPROM
« Respuesta #7 en: 23 de Noviembre de 2010, 23:15:55 »
Citar
Insertar Cita
Igual consigues algo de ayuda prácticando "ingeniería inversa":

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1960

Ahí está el código fuente de la aplicación de grabación del PICKIT2...creo que está en C++...

Si estuve mirando el código del pickit2 que está en C#...pero hay que estudiar el código fuente como un todo..por que si mirás solamente una función del mismo no entendes nada...por eso decidí empezar desde 0...además aprendes muchas cosas en el camino  :mrgreen:
Citar
Bueno yo programo en C30, entonces lo que hice fue colocar un monitor de puerto para ver que transfería el programa bullybootloader al PIC, intenta escaneando el puerto! si ya lo quieres hacer por USB no sabría como ayudar.

Si es así la transferencia del archivo cambia segun que tipo de PIC uses si es de 8, 16, "24", o 32 bit, es decir como el pic hace el arreglo de los registros.

Mira lo que hice yo para un PIC24Fj128ga010:

1. leer el .hex
2. Organizar el .hex por posicion de memoria:
2.1 Guardo cada linea del .hex en un arreglo de string[]
2.2 las posiciones 3, 4 y 5 de cada linea son la dirección de memoria, entero tipo hexadecimal. Organiza tu vector de menor a mayor.
2.3 las posiciones 1 y 2 indican cuantos bytes vamos a transferir al PIC, es decir 10 = 12 bytes, 0C = 9 bytes, 08 = 6 bytes y 04 = 3 bytes.
2.4 la posición 6 es el tipo de datos, nunca entendí para que eran esto, pero viendo el scaner de puertos me di cuenta que primero envia los datos 8 y luego los 0.

Esto es lo que me acuerdo ahora, luego te voy comentado del resto, espero que esto te ayude en algo!

hasta ahora yo he llegado hasta el punto 2.1....y estoy estudiando como hacer lo demás...por lo demás me ayuda mucho gracias  ;-)




 

anything