TODOPIC
Lenguajes de programación para PC => C, C#, C++ => Mensaje iniciado por: jonathanPIC888 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.
(http://i822.photobucket.com/albums/zz150/MoyanoJonathan/VISORDEARCHIVOS.jpg)
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:
(http://i822.photobucket.com/albums/zz150/MoyanoJonathan/Distribucindememoria.jpg)
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:
-
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
-
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
-
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.
-
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 !
-
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!
-
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!
-
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:
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 ;-)