TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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
-
El amigo LabMouse tuvo un problema relacionado con un PIC18.
http://www.microchip.com/forums/tm.aspx?m=525727&high=18f47j53
-
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.
-
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.... :?
-
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 :?
-
Talvez está protegida contra escritura una sección de la ROM por configuration bits.
-
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
-
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!
-
Pues te agradezco que lo intentes. Yo tuve que abandonarlo y dedicarme a otra cosa, pero si se pudiera resolver me vendría estupendamente.
-
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
-
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.
-
Claro que reviso el archivo .hex de CCS y es esto:
: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:
: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)
-
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 :(
-
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... :?
-
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!!!
-
Ansioso estoy por leerte :shock:
-
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:
#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!
-
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:
#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 {}
-
Sí, siempre trabajo con la última de CCS.
-
JIM, intente haciendo como lo dices y no me ha trabajado. Sigue pasando que escribe el microcontrolador en blanco.
-
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!
-
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!
-
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
-
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
-
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()
{
...
}
-
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!!
-
J1M LABmouse se que dan la soculion al problema pero me gustaria me pasaran el archivo C++ ya modificado
-
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.