Autor Tema: Bootloader USB-HID para PIC18F47J53 a full.  (Leído 18571 veces)

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

Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Bootloader USB-HID para PIC18F47J53 a full.
« en: 15 de Enero de 2011, 12:09:10 »
Hola a todos,
Siguiendo con la saga Bootloader a Full, quiero presentarles la ultima actualización de Bootloaders disponibles para los microcontroladores PIC.  En la versión anterior mostrada en Bootloader USB para PIC18F4550 a full. se entendió la funcionalidad de un Bootloader y el potencial que esto tiene para el desarrollo de aplicaciones que puedan ser actualizadas por los usuarios finales.

Con la versión anterior, se debía contar con un Driver para pudiera ser instalado el PIC cuando es conectado al puerto USB y este ingrese a modo Bootloader. Se empezaron a tener problemas con equipos de 64 bits, luego con Windows Seven, salieron actualizaciones de Microchip para solucionarlos pero queda claro que al tener un Driver personalizado para la aplicación USB, habrán posibles incompatibilidades y requiere actualizaciones permanentes. La solución a todo esto es la que se ha presentado de manera elegante por Microchip y es cambiar el modo USB a HID, de esta manera no se requiere Driver alguno y se logra compatibilidad con el equipo que sea.

Hardware persentado para usar el Bootloader
Para esta prueba, se ha utilizado el modulo EMm47J53 de la empresa OCTOPLUS.


El modulo EMm47j53, es el sistema de desarrollo más pequeño que existe para el microcontrolador pic18f47j53 de la empresa microchip®. Pertenece a la familia OCTOPLUS-mini. En el encontraras todo lo necesario para trabajar con este poderoso microcontrolador. Algunas características de este microcontrolador son:

•   Arquitectura Harvard - RISC con Núcleo de procesamiento tipo PIC18 de Microchip.
•   Velocidad de oscilador máxima de 48MHz con bus interno de 12MHz.
•   Puerto USB Full-Speed 2.0.
•   128KB de memoria Flash, 4KB de memoria RAM.
•   13 canales ADC de 12 bits.
•   3 Comparadorores análogos.
•   2 Módulos SCI para comunicación RS232.
•   Modulo SPI
•   Modulo I2C.
•   4 temporizador de 8 bits y 4 temporizador de 16bits.
•   7 Canales PWM
•   1 temporizador RTC con funciones de calendario y alarma.
•   13 pines con sensor Capacitivo.
•   Tecnología XLP de Microchip(Hasta 9nA en modo DeepSleep).



Lo que hace del modulo EMm47J52 un producto realmente practico y poderoso, es que tiene la capacidad de reprogramar su memoria FLASH  directamente desde el puerto USB, lo que se puede interpretar como un programador USB embebido en el mismo sistema.  
El modulo EMm47J53 lleva incorporado el microcontrolador PIC18F47J53 encapsulado QFP-44, que ofrece 29 puertos I/O, un conector USB mini-AB, un pulsador para RESET, un pulsador en pin RB2, un cristal de 12MHz,capacitores y resistencias mínimas necesarias para un correcto funcionamiento.



El sistema EMm47J53, tiene la capacidad de auto-programar la memoria FLASH del microcontrolador, esto lo logra  usando un función que es programada con anterioridad en nuestro taller de fabricación, con lo que al conectar el dispositivo al puerto USB este se identificara con el PC como un dispositivo “PIC18F47J53 Bootloader” . El Bootloader es un pequeño código residente en la memoria FLASH del MCU, que se encarga de tomar los datos provenientes del puerto USB, organizarlos y grabarlos en las posiciones de memoria FLASH correspondientes, logrando así reprogramar en cualquier momento casi la totalidad de su memoria, permitiendo cambiar el funcionamiento del dispositivo diseñado.   Cuando se dice “casi”, es porque como usuarios, no podemos permitir que ese pequeño código Bootloader pre--programado en taller sea borrado o sobrescrito. De hacerlo, perderemos la capacidad de auto-programación, y sería necesario que se acercara a nuestra oficina o a la oficina de su distribuidor autorizado más cercano para que le sea reprogramada nuevamente el código Bootoloader.
Para proteger esas posiciones de memoria, lo único que hay que hacer es escribir el código sobre una “plantilla” que es suministrada en el CD junto al sistema. Esta plantilla nos asegura que no serán sobrescritas o borradas las posiciones de memoria FLASH que nos interesan.

El modulo EMm47J53, puede ser alimentado desde el puerto USB, y así aprovechar para alimentar el protoboard sin necesidad de llevar un adaptador.  Pero esta opción tiene una limitación, y es que no se debe conectar motores, reles, o circuitos que consuman más de 300mA. Si no se tiene en cuenta esta advertencia, puede dañar su computador. Ahora bien, se puede aprovechar la conexión del puerto USB para alimentar circuitos muy pequeños como leds, display, pulsadores e interruptores.

Alimentación por USB para el modulo EMm47J53


Alimentación por fuente externa para el modulo EMm47J53


SE DEBE TENER MUCHO CUIDADO EN LA CONEXIÓN Y DEBIDA SELECCIÓN DE FUENTE PARA EL MODULO. SI NO ESTA SEGURO SI EL CIRCUITO QUE VA A CONECTAR EL MODULO CONSUME MENOS DE 300mA, ES MEJOR QUE SELECCIONE ALIMENTACION EXTERNA




DISTRIBUCIÓN OCTOPLUS-mini







Características del código Bootloader

El Código Bootloader fue desarollado por MICROCHIP® bajo C18 usando USB HID evitando la previa instalación de un DRIVER en el PC para el correcto funcionamiento. Esto me permite poder crear mi propia aplicación en el MCU, incluyendo comunicación USB y en ningún momento existirá interferencia entre modo Bootloader y modo USER. Todas las interrupciones están disponibles que para que sean usadas por el usuario sin ningún tipo de restricción.
El código Bootloader ha sido desarrollado por MICROCHIP®  para sea ejecutado en forma eficiente y con la menor cantidad de líneas de programación posibles. Es decir, el código Bootloader ocupa 1.8KB de memoria FLASH y usa solo 640B de la memoria RAM para su ejecución.  El código reside en las primeras posiciones de la memoria FLASH 0X00000 – 0X00FFF.




Para implementar el Bootloader, se puede descargar el código fuente desde la pagina de Microchip Microchip Application Libraries

Una vez descargado el archivo, se instala en el equipo, lo cual toma varios minutos pues ahora Microchip en este solo paquete entrega todos sus programas de ejemplo y notas de aplicación incluyendo USB, ETHERNET, CAN, etc.

Después de la instalación aparece una carpeta en el DiscoDuro "C:\Microchip Solutions v2010-08-04"

Estos son todos los archivos instalados y estan resaltado los que nos interesan.

Ahora solo resta tener instalado C18 en el PC y claro esta MPLAB. Se abre el proyecto con el bootloader que nos interesa y compilamos...


MPLAB


Ahora ya generado el archivo HEX con el Bootloader desde C18, resta tener PICKIT3 o similar para descargar como primera y ultima vez el código al microcontrolador. Después de programado con el PICKIT3, el usuario actualizara el programa que sera ejecutado por el microcontrolador usando modo Bootloader y no mas el PICKIT3 o cualquier otro programador externo.



Prueba del Bootloader


Para probar que el procedimiento anterior quedo bien, se conecta el modulo al puerto USB, se oprimen los pulsadores RESET y RB2 al tiempo y luego de un segundo liberar solo RESET, asi al iniciar el microcontrolador este detectara que se quiere estar en modo Bootloader y así Windows debería reconocerlo e instalarlo sin pedir driver alguno, al final lo podríamos encontrar en el Administrados de Dispositivos.

Detección de Microcontrolador en modo Bootloader



En la ruta: "C:\Microchip Solutions v2010-08-04\USB Device - Bootloaders\HID - Bootloader" Encontraremos un archivo.exe llamado HIDBootLoader.exe, esta es la aplicación que servirá para enviar el archivo .hex de nuestros futuros proyectos al microcntrolador.

Aplicación para programar por Bootloader HID.



Ya solo queda probar programandole un pequeño proyecto y verificar su funcionamiento.

Adjunto proyecto para usar Bootloader USB-HID. Enciende y apaga un LED en el pin RA0 usando C18 y CCS 4.114.



Como usar CCS Con el BOOTLOADER
Muchas personas estamos acostumbrados a programar en CCS,  pero este ultimo esta presentando problemas al compilar código que sea compatible con el Bootloader HID. Cuando se usaba CCS y se programaba el microcontrolador con Bootloader, este no hacia absolutamente nada!! Lo mas extraño es que con versiones anteriores a la 4.084 de CCS si funcionaba. Pero como este microcontrolador PIC18F47J53 es muy nuevo y solo de la 4.114 lo tiene en lista, procedo a explicar el problema.

Cuando se compila un proyecto en C18 que funciona sin problemas, el archivo .hex generado tiene la siguiente estructura:

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



Ahora si hacemos lo mismo con CCS, obtenemos lo siguiente:
Citar
:0410000004EF08F001
:08100800F86AD09EEA6AE96A69
:10101000FF0E0F01486FC29CC29E4951E00B1F0991
:0C102000496F256BD16AD26A8A900300E8
:020000040001F9
:08FFF8009AF73DFF61F880F962
:00000001FF
;PIC18F47J53
;CRC=DA4D  CREATED="14-Ene-11 18:56"


Hay un cambio en la estructura del archivo hex.


Este problema anterior se ve reflejado en que cuando se le da "Open Hex File" con la aplicación "HIDBootLoader.exe" de Microchip, el de C18 va sin problemas, pero el de CCS es cargado en 0x00 toda la memoria.... Por eso al programar en el microcontrolador un proyecto usando CCS, este simplemente NO HACE NADA, esta en blanco!!!

Viendo este problema, hay una solución poco ortodoxa pero da buen resultado.

PASO1. Abrir el proyecto que adjunto pero no desde el IDE de CCS, hacerlo desde MPLAB.  (Se debe revisar que este bien configurada la ruta del .exe de CCS desde MPLAB)

Project - Open


PASO2 Compilar el proyecto.
Proyecto de CCS desde MPLAB.


Este archivo .hex de CCS si lo dejamos tal cual como quedo después de compilar no funcionara si lo descargamos por Bootloader, es por eso que se debe cambiar el formato usando la herramienta de exportar .hex de MPLAB.
PASO3 Exportar archivo hex.




PASO4 Ahora si, ya se puede programar el microcontrolador usando la aplicación Bootloader de Microchip.



Esta solución planteada da los resultados esperados, pero es un poco molesto hacerlo siempre después de compilar. Nuestro amigo JIM encontró otra solución al problema y nos la explica en el siguiente post.


Es atacar el problema desde la raíz y modificar la aplicación "HIDBootLoader.exe" gracias a que Microchip nos entrega el código fuente de ella en VisualC++

continuara...
« Última modificación: 27 de Junio de 2011, 16:42:57 por LABmouse »

Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Bootloader USB-HID para PIC18F47J53 a full.
« Respuesta #1 en: 15 de Enero de 2011, 12:17:41 »
Continuara...
« Última modificación: 15 de Enero de 2011, 17:02:48 por LABmouse »

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Bootloader USB-HID para PIC18F47J53 a full.
« Respuesta #2 en: 15 de Enero de 2011, 15:50:16 »
¡¡¡ GRACIAS !!!

Muchas gracias Ernesto. Este hilo es oro disfrazado de texto.

¡¡¡ GRACIAS !!!

Desconectado LABmouse

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Bootloader USB-HID para PIC18F47J53 a full.
« Respuesta #3 en: 15 de Enero de 2011, 17:00:49 »
Cuéntame Manolo, si es la solución al problema que tenias?

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18310
    • MicroPIC
Re: Bootloader USB-HID para PIC18F47J53 a full.
« Respuesta #4 en: 15 de Enero de 2011, 18:14:58 »
Te contaré en cuanto lo pruebe, pero tardaré, porque ahora no tengo el circuito. Gracias.

Desconectado monchales

  • PIC10
  • *
  • Mensajes: 1
Re: Bootloader USB-HID para PIC18F47J53 a full.
« Respuesta #5 en: 30 de Julio de 2012, 11:34:53 »
trabajando como bootloader se pueder hacer degugger en el microcontolador?

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Bootloader USB-HID para PIC18F47J53 a full.
« Respuesta #6 en: 30 de Julio de 2012, 12:20:30 »
El bootloader sirve para programarlo nada más  ;-)
No contesto mensajes privados, las consultas en el foro

Desconectado BEXTIXTOX

  • PIC16
  • ***
  • Mensajes: 108
Re: Bootloader USB-HID para PIC18F47J53 a full.
« Respuesta #7 en: 28 de Agosto de 2012, 14:12:13 »
oye LABmouse
me lanza un error ala hora de compilar lo interpreto como que no encuentra el archivo??

Debug build of project `C:\Microchip Solutions v2012-07-18\USB\Device - Bootloaders\HID\Firmware - PIC18 Non-J\HID Bootloader PIC18F4550 Family.mcp' started.
Preprocessor symbol `__DEBUG' is defined.
Tue Aug 28 12:09:00 2012
----------------------------------------------------------------------
Couldn't locate build tool.  Check tool locations.
----------------------------------------------------------------------
Debug build of project `C:\Microchip Solutions v2012-07-18\USB\Device - Bootloaders\HID\Firmware - PIC18 Non-J\HID Bootloader PIC18F4550 Family.mcp' failed.
Preprocessor symbol `__DEBUG' is defined.
Tue Aug 28 12:09:00 2012
----------------------------------------------------------------------
BUILD FAILED


Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Bootloader USB-HID para PIC18F47J53 a full.
« Respuesta #8 en: 28 de Agosto de 2012, 14:17:18 »
Tenes instalado C18?
No contesto mensajes privados, las consultas en el foro

Desconectado BEXTIXTOX

  • PIC16
  • ***
  • Mensajes: 108
Re: Bootloader USB-HID para PIC18F47J53 a full.
« Respuesta #9 en: 28 de Agosto de 2012, 14:37:56 »
si lo tengo instalado el 3.3 y lo configure desde proyect > select lenguage toolsuite > c18
aaa.. y me aparese la imagen que adjunte CREO es un posible erro pues me aparesen algunas "X"

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Bootloader USB-HID para PIC18F47J53 a full.
« Respuesta #10 en: 28 de Agosto de 2012, 16:26:54 »
Claro! Al instalarlo te falto tildar algunas cosas y no te lo direcciono. Ahora hacerlo manualmente  ;-)
No contesto mensajes privados, las consultas en el foro

Desconectado BEXTIXTOX

  • PIC16
  • ***
  • Mensajes: 108
Re: Bootloader USB-HID para PIC18F47J53 a full.
« Respuesta #11 en: 01 de Septiembre de 2012, 14:15:08 »
zuky ya estoy mas avanzado ya solucione el error de MPLAB y te explico poco

 intento hacer el bootloader con el 18F4550 se que ya hay un tema con el 4550 pero estoy en este hilo por que implementas CCS que es el que yo utilizo
1 el micro cuando lo conecto me lo reconoce la pc y el led destella
2 realice un proyecto sencillo en ccs en versiones 4.084 y 4.093 pues mencionas que el ccs 4.084 no da conflictos
3 ala hora de cargar el archivo (echo en CCS) en el ejecutable de MPLAB (pdfsusb) me lanza un error como en la imagen
4 intentando dar solución realizo la solución como mencionas abriendo el proyecto CCS desde MPLAB pero en el paso 1 me lanza otro error (adjunto)

podrías darme alguna idea para dar solución

Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Bootloader USB-HID para PIC18F47J53 a full.
« Respuesta #12 en: 01 de Septiembre de 2012, 14:30:07 »
El .cof?  :?
No contesto mensajes privados, las consultas en el foro

Desconectado BEXTIXTOX

  • PIC16
  • ***
  • Mensajes: 108
Re: Bootloader USB-HID para PIC18F47J53 a full.
« Respuesta #13 en: 01 de Septiembre de 2012, 14:56:49 »
ops.. hay esta el original

Desconectado BEXTIXTOX

  • PIC16
  • ***
  • Mensajes: 108
Re: Bootloader USB-HID para PIC18F47J53 a full.
« Respuesta #14 en: 01 de Septiembre de 2012, 15:31:18 »
y ahora aqui es donde tengo que modificar?? en donde indicas


 "Esta solución planteada da los resultados esperados, pero es un poco molesto hacerlo siempre después de compilar. Nuestro amigo JIM encontró otra solución al problema y nos la explica en el siguiente post. "

SOLUCION 2 A BOOTLOADER HID CON CCS


 

anything