jueves, 7 de abril de 2011

Bootloader HID/CDC para PIC18F2550

La novedad de uso de periféricos USB debido a la extensión del microcontrolador de Microchip, el PIC18F2550, ha supuesto una mejora en la programación de los mismos. Antes, cualquier dispositivo se preparaba para poderlo reprogramar mediante un puerto serie típico, lógicamente esto se hacía en microcontroladores de gama media/alta, que pudiesen albergar en su interior un pequeño programa de carga, residente hasta que fuese utilizado.


Ya he creado varios proyectos en los que se ha hecho imprescindible actualizaciones, ya sean por bugs encontrados como para incluir nuevas funcionalidades; éstas actualizaciones son tediosas cuando tienes que llevar un programador para ello.

Bootloader CCS

La solución adoptada es la de implementar un pequeño bootloader, que podemos usar directamente ya que microchip lo facilita para usarlo en sus placas de desarrollo, e incluso podemos generar nuestro bootloader específico usando el compilador PIC C Compiler de CCS, éste último tiene un ejemplo para usar en nuestros dispositivos muy sencillo de modificar y que seguro que os viene bien.

El ejemplo tiene por nombre Ex_usb_bootloader.c (no lo pongo por aquí por derechos pero lo encontráis en nuestra descarga PIC C Compiler 4.114), lo podemos modificar y en nuestro proyecto lo único que tenemos que hacer es añadir la siguiente línea:

                     #include    "usb_bootloader.h"


Gracias a esta línea nuestro programa se cargará justo después del bootloader evitando sobreescribirlo.

El bootloader de CCS, utiliza los protocolos USB para simular un puerto serie y a través de ese puerto realiza la descarga de software, además el mismo compilador incluye un terminal serie adaptado para ese uso.
En este compilador he realizado casi todos mis proyectos por lo que me ha sido más fácil utilizar este bootloader para ellos, aunque estoy desarrollando un buen bootloader con los fuentes de Microchip debido al uso de las directivas HID y las ventajas que eso me reporta, tanto a mí como a mis clientes.

Bootloader MICROCHIP.

En cuanto al bootloader facilitado por Microchip, he de decir que está más optimizado por su tamaño en memoria y que además incluye protocolos HID, de modo que no necesitamos controladores en el ordenador que usemos para su programación. También podemos encontrar el software necesario para descargar el fichero de programa a nuestro dispositivo.

El programa básico está preparado para trabajar con el 18F4550 y utiliza el pin 4 del puerto B, lo que nos puede traer problemas cuando nuestra aplicación usa ese pin. Ese pin tiene que estar a nivel bajo para que el dispositivo entre en modo bootloader.
Microchip facilita también el código fuente, con lo cual, podemos modificar a nuestro antojo y colocarlo en el pin que menos usemos para poder usar ese bootloader en todos nuestros diseños.
También usa el pin 1 del puerto D para conectar el led que indica la entrada en funcionamiento del PIC, y lógicamente en el 18F2550 no tenemos puerto D, habría que modificarlo.

A continuación os pongo un enlace a un artículo de NEOTEO en el que se comentan los cambios a realizar en el bootloader de microchip para adaptarlo a nuestro proyecto.


Fuentes

No hay comentarios:

Publicar un comentario