TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Nocturno en 17 de Diciembre de 2010, 16:31:09

Título: Bootloader USB HID para PIC 24F
Publicado por: Nocturno en 17 de Diciembre de 2010, 16:31:09
Llevo unos días intentando hacer funcionar el Bootloader USB HID que proporciona Microchip en sus Microchip Solutions y no lo consigo.

Grabándole el firmware proporcionado por Microchip he conseguido que la placa se enumere e incluso sea identificada por la aplicación Downloader. De hecho, incluso se ejecuta el proceso de grabación y verificación correctamente, pero sin embargo el micro no se escribe.

Tras buscar información por ahí me encuentro que a otros usuarios les ha pasado lo mismo (http://www.microchip.com/forums/m412440.aspx)

¿Alguno de vosotros lo ha hecho funcionar?

¿Sabéis de algún otro bootloader para USB HID 24F?

Gracias
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: migsantiago en 17 de Diciembre de 2010, 16:38:04
El amigo LabMouse tuvo un problema relacionado con un PIC18.

http://www.microchip.com/forums/tm.aspx?m=525727&high=18f47j53
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: Nocturno en 17 de Diciembre de 2010, 16:44:46
Por lo que he leído el problema no es el mismo porque a Ernesto no se le enumeraba la placa y a mí sí me funciona eso.
De todas formas, muchas gracias Santiago.
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: LABmouse en 17 de Diciembre de 2010, 19:11:29
Pues parece el mismo Firmware, del que me dio guerra, déjame le damos una mirada a ver que pueda pasar, lo malo es que no tengo un PIC24 a la mano,.

Claro que!!!
Lo que me parece mas extraño es que si te detecta el USB, abres la aplicacion sin problemas, pasa bootloader, mandas la aplicacion al MCU, indica que programo sin errores y al final, no pasa nada....  :?
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: Suky en 17 de Diciembre de 2010, 20:21:50
Está seguro que no graba nada o se está implementado mal el remapeo de vectores en la aplicación?  :rolleyes: Yo por ahora tuve suerte con el Bootloader HID, implementado en PIC18Fx550 y PIC18F6xj5x... éste último si que me dio trabajo modificarlo para detectar el modo bootloader desde un teclado matricial  :?
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: migsantiago en 17 de Diciembre de 2010, 22:40:00
Talvez está protegida contra escritura una sección de la ROM por configuration bits.
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: Nocturno en 18 de Diciembre de 2010, 03:40:35
La verdad es que el problema es raro, porque hace todo el proceso como si estuviera programándose, incluida la verificación, pero no se graba.
De hecho, he probado a hacer debug poniendo un breakpoint en la parte del programa donde se programa el micro y nunca pasa por ahí.

Como decía, no soy el único al que le pasa, porque aquí también hay otro caso  :(

http://www.microchip.com/forums/m412440.aspx
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: LABmouse en 14 de Enero de 2011, 20:26:07
Hola Manolo,

Ya me ha llegado por fin un PIC24 para hacer pruebas y entender tu problema para así ayudar... Me he dado con la grandisima sorpresa con algo bien extraño.

Yo como te comentaba Santiago, tengo trabajando el Bootloader HID con un PIC18F47J53. Dio guerra pero logre que funcionara y hasta la fecha no me ha dado lata. Trabajando con C18 va perfecto, pero hoy que intentaba encontrar el detalle de tu problema, decido hacer un código en CCS para el PIC18F47J53, haciendo el corrimiento de posiciones de memoria para respetar el Bootloader  y ...  :shock:

La aplicación  MICROCHIP HID BOOTLOADER v2.6a dice que carga bien el bootloader, programar... Todo bien...

Programming Complete...
Verify Complete...
Completed Succefully...

Pero no hace absolutamente nada... le doy leer codigo y  :shock: ESTA EN BLANCO!! Tal cual como tu decías y ahora en el PIC18F47J53 cuando se usa CCS. Con C18 no le pasa eso, al leerlo si tiene código.

Entonces, quería comentarte amigo Manolo que estoy en la pelea a ver si doy con el problema.

SALUDOS!
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: Nocturno en 14 de Enero de 2011, 20:33:21
Pues te agradezco que lo intentes. Yo tuve que abandonarlo y dedicarme a otra cosa, pero si se pudiera resolver me vendría estupendamente.
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: LABmouse en 14 de Enero de 2011, 20:35:34
Manolo, tu problema se presentaba usando CCS o C30?

En C18 reviso.. Donde si me trabaja bien y encuentro que esta configurado el proyecto para generar:

HEX File Format INHX32.

pero en CCS lo máximo que tiene es:
Object File 8bitsHEX.

Sera que en ese detalle esta el problema?¿


?¿ puedes probar revisando en tu compilador que configuración tienes?¿?
Deberías tener INHX32


Título: Re: Bootloader USB HID para PIC 24F
Publicado por: LABmouse en 14 de Enero de 2011, 20:52:07
Bueno, le pedí a CCS que me diera un reporte de lo que esta generando y saca esto:

Output Files:
    Errors:           Plantilla_1.0.err
    Ext Symbols:  Plantilla_1.0.esym
    INHX32:         Plantilla_1.0.hex
    Symbols:        Plantilla_1.0.sym
    List/Sym:        Plantilla_1.0.lst
    Debug/COFF:  Plantilla_1.0.cof
    Project:          Plantilla_1.0.PJT
    Call Tree:       Plantilla_1.0.tre
    Statistics:       Plantilla_1.0.sta

Entonces si es un INHX32 el que genera... :? Bueno descartada para mi esa opción.
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: LABmouse en 14 de Enero de 2011, 20:59:54
Claro que reviso el archivo .hex de CCS y es esto:


Citar
:0410000004EF08F001
:08100800F86AD09EEA6AE96A69
:10101000FF0E0F01486FC29CC29E4951E00B1F0991
:0C102000496F256BD16AD26A8A900300E8
:020000040001F9
:08FFF8009AF73DFF61F880F962
:00000001FF
;PIC18F47J53
;CRC=DA4D  CREATED="14-Ene-11 18:56"


Ahora si veo un proyecto igual creado con C18, este genera esto:
Citar
:020000040000FA
:0600000075EF08F012008C
:0610000075EF08F012007C
:021008001200D4
:021018001200C4
:02102A000000C4
:04102C002A0EF66E24
:10103000100EF76E000EF86E00010900F550656F96
:101040000900F550666F03E1656701D03DD00900E6
:10105000F550606F0900F550616F0900F550626F3F
:1010600009000900F550E96E0900F550EA6E090023
:1010700009000900F550636F0900F550646F09001D
:101080000900F6CF67F0F7CF68F0F8CF69F060C0DD
:10109000F6FF61C0F7FF62C0F8FF0001635302E191
:1010A000645307E00900F550EE6E6307F8E2640749
:1010B000F9D767C0F6FF68C0F7FF69C0F8FF000105
:0A10C0006507000E665BBFD7120043
:0610CA00B00EF36E00EE13
:1010D00000F00E0E01D81200EA6002D0EE6AFCD7D2
:0A10E000F350E9601200EE6AFCD73D
:0610EA001CEE00F02CEEEC
:1010F00000F0F86A019C16EC08F085EC08F083EC2F
:0611000008F0FBD712000D
:041106008A701200D9
:02110A001200D1
:020000040001F9
:01FFF8009A6E
:01FFF900F710
:01FFFA003DC9
:01FFFB00FF06
:01FFFC0061A3
:01FFFD00F80B
:01FFFE008181
:01FFFF00F908
:00000001FF


Entonces si hay gran diferencia en los archivos .hex.....  Seguiré buscando 8)

Título: Re: Bootloader USB HID para PIC 24F
Publicado por: Suky en 14 de Enero de 2011, 22:12:33
Hola Manolo,

Ya me ha llegado por fin un PIC24 para hacer pruebas y entender tu problema para así ayudar... Me he dado con la grandisima sorpresa con algo bien extraño.

Yo como te comentaba Santiago, tengo trabajando el Bootloader HID con un PIC18F47J53. Dio guerra pero logre que funcionara y hasta la fecha no me ha dado lata. Trabajando con C18 va perfecto, pero hoy que intentaba encontrar el detalle de tu problema, decido hacer un código en CCS para el PIC18F47J53, haciendo el corrimiento de posiciones de memoria para respetar el Bootloader  y ...  :shock:

La aplicación  MICROCHIP HID BOOTLOADER v2.6a dice que carga bien el bootloader, programar... Todo bien...

Programming Complete...
Verify Complete...
Completed Succefully...

Pero no hace absolutamente nada... le doy leer codigo y  :shock: ESTA EN BLANCO!! Tal cual como tu decías y ahora en el PIC18F47J53 cuando se usa CCS. Con C18 no le pasa eso, al leerlo si tiene código.

Entonces, quería comentarte amigo Manolo que estoy en la pelea a ver si doy con el problema.

SALUDOS!

En CCS para usar el bootloader la versión debe ser inferior a 4.084, sino no hay manera  :(
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: LABmouse en 14 de Enero de 2011, 23:24:05
Hola amigo Suky,

Pero me resisto a pensar que no tenga manera de que trabaje CCS, si antes funcionaba, ahora debería también... Claro que tal vez este perdiendo mi tiempo tratando algo imposible, pero se me hace absolutamente necesario lograr que funcione pues la ultima versión de CCS es la que soporta el PIC18F47J53...   :?
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: LABmouse en 15 de Enero de 2011, 00:22:48
Listo amigos!,

ya esta solucionado el problema,  ya es un poco tarde, pero mañana escribiré la manera en la que se soluciona el problema...

Ya esta funcionando Bootloader USB HID con CCS 4.114.

SALUDOS y Hasta mañana!!!


Título: Re: Bootloader USB HID para PIC 24F
Publicado por: Nocturno en 15 de Enero de 2011, 03:14:39
Ansioso estoy por leerte  :shock:
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: J1M en 15 de Enero de 2011, 09:03:19
Como hacéis la reserva de memoria para el bootloader en CCS??

Creo que ahí es donde posiblemente esté el problema...

Comenta la linea que carga el usb_bootloader.h (este es el que reserva la memoria)

y pon esto:
Código: [Seleccionar]
#define CODE_START   0x1000
#build(reset=CODE_START, interrupt=CODE_START+0x08)
#org 0, CODE_START-1 {}

A mí desde que uso eso... ningún problema con los bootloaders USB HID de Microchip y el CCS ;D

Saludos!
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: LABmouse en 15 de Enero de 2011, 09:28:40
Hola JIM,

Pero si intentas lo mismo con CCS 4.117 te funciona?

El problema es de CCS para versiones superiores a 4.084... ¿Si te funciona con versiones superiores?, de ser así, seria grandioso porque no hay que hacer lo que me ha tocado para que funcione.


Estoy buscando la mejor manera de hacerlo, pues el procedimiento actual es un poco engorroso...

Yo lo hago asi:
Citar
#define LOADER_END   0xFFF                        
#build(reset=LOADER_END+1, interrupt=LOADER_END+9)   //Protege posiciones de memoria desde la 0x0000 hasta la 0x1000  

#org 0, LOADER_END {}
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: J1M en 15 de Enero de 2011, 10:09:44
Sí, siempre trabajo con la última de CCS.
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: LABmouse en 15 de Enero de 2011, 10:41:13
JIM, intente haciendo como lo dices y no me ha trabajado. Sigue pasando que escribe el microcontrolador en blanco.

Título: Re: Bootloader USB HID para PIC 24F
Publicado por: J1M en 15 de Enero de 2011, 10:45:20
Haz una prueba. Utiliza el MiEHiDLoader y dime si funciona, si es sí, te digo lo que hay que cambiar en el código fuente del software de grabación ;)

http://www.microingenia.com/electronics/upload/docs/MiE32U/MiEUSBHIDLoader_V1.1.zip

Posiblemente te pida instalar las .Net Framework. Aquí los links de descarga:
http://www.microingenia.com/electronics/upload/docs/MiE32U/Manual_BootloaderUSBHIDC32_MiE32U_V1.0.pdf

Saludos!
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: LABmouse en 15 de Enero de 2011, 10:51:05
Hola JIM, es que efectivamente lo que hay que modificar es el programa para enviar el hex al PIC, pues no interpreta bien el hex de CCS, y lo que encontré para que lo entendiera es importar el hex de CCS en MPLAb y luego exportarlo, con este tramite ahora si entiende bien el hex, pero estaba dándole miradas al código fuente de Microchip de la aplicación en VisualC para ver donde podía estar el error.


Ya mismo lo pruebo a ver que tal va!
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: J1M en 15 de Enero de 2011, 14:13:15
Estaba localizando el 'cambio' en el software... realmente es una tontería!!

En la función 'btn_OpenHexFile_Click' hay una función llamada 'extendedAddress'... simplemente hay que inicializarla a 0.

unsigned long extendedAddress = 0;

Hecho esto, el programita de Microchip, ahora tuneado por vosotros, funcionará a las mil maravillas! ;D
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: LABmouse en 15 de Enero de 2011, 15:24:32
JIM Muchas gracias por el dato, con tu desarrollo en VC++ funciona muy bien.

SALUDOS!

Amigo Manolo, acá esta el documento sobre el Bootloader,  Puedes hacer las pruebas planteadas a ver si das con la solucion al problema.

http://www.todopic.com.ar/foros/index.php?topic=33487.msg280136#msg280136
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: rmadrid25 en 22 de Enero de 2011, 10:59:56
Hola,

  Me alegro que hallan ya encontrado el fallo para la versiones nuevas del CCS.
Yo en diciembre habia hecho una prueba y la deje planteada en
http://www.todopic.com.ar/foros/index.php?topic=23135.msg279365#msg279365
por si alguien más la podía comprobar.

Yo lo que estaba haciendo era con un programa de edicion hexadecimal, copiar la cadena :020000040000FA al inicio del archivo compilado y así sí me funciona
con el compilador por defecto de microchip.

Lo que no me queda claro con el cambio que planteas J1M, es que hay que cambiar el bootloader.h por tu cadena y usar tambien el cargador modificado de MiEHiDLoader?  Tengo que actualizar el net.framework para poder probarlo.

Yo el boot loader que tengo es:

#define LOADER_SIZE                 (0xFFF)
#define LOADER_START                (0)
#define LOADER_END                  (LOADER_SIZE)
#define APPLICATION_START           (LOADER_SIZE+1)
#define APPLICATION_END             (getenv("PROGRAM_MEMORY")-1)
#define APPLICATION_ISR             (APPLICATION_START+8)

#ifndef _bootloader
 //in the application, this moves the reset and isr vector out of the bootload
 //space.  it then reserves the loader space from being used by the application.

 #build(reset=APPLICATION_START, interrupt=APPLICATION_ISR)
 #org 0, LOADER_END {}
#endif

void main()
{
...
}
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: LABmouse en 22 de Enero de 2011, 11:34:33
Hola rmadrid25,
La verdad intente por todos lados modificar la generación del archivo hex original desde CCS pero no veo como hacerle. Ta raro eso.

SALUDOS!!
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: BEXTIXTOX en 31 de Agosto de 2012, 20:46:51
J1M LABmouse se que dan la soculion al problema pero me gustaria me pasaran el archivo C++ ya modificado
Título: Re: Bootloader USB HID para PIC 24F
Publicado por: Nextar en 23 de Marzo de 2013, 02:18:41
Estaba localizando el 'cambio' en el software... realmente es una tontería!!

En la función 'btn_OpenHexFile_Click' hay una función llamada 'extendedAddress'... simplemente hay que inicializarla a 0.

unsigned long extendedAddress = 0;

Hecho esto, el programita de Microchip, ahora tuneado por vosotros, funcionará a las mil maravillas! ;D


Hola J1M solo una pregunta.. quisiera saber con que version de c++ compilaste el archivo del bootloader y que sistema operativo utilizaste. lo que pasa es que lo intente compilar con Visual C++ 2005 Express Edition, en Windows 7 de 32 bits, y cuando le doy en start debugging (F5) me aparece un pop-up indicando: this proyect is out of date.     HIDBootLoader - Debug Win32. would you like to build it? aqui le doy click en yes.
y me aparece otro pop-up indicando que no se puede encontrar el archivo especificado.

espero me puedas ayudar, no se que hacer.