SlideShare una empresa de Scribd logo
1 de 12
Descargar para leer sin conexión
2011


   BootLoader USB
   Multiplataforma para
   el PIC18F4550
   Implementación de un BootLoader para el PIC18F4550 con conexión USB
   utilizando la clase CDC (Communications Device Class) y desarrollo de la
   aplicación de escritorio en un entorno Multiplataforma que permita la carga de
   programas de usuario desde PCs con diferentes Sistemas Operativos.




                                                           Biblioman
                                              www.AquiHayApuntes.com
                                                          28/01/2011
BootLoader USB Multiplataforma para el PIC18F4550

En este artículo trataremos sobre como implementar un BootLoader con conexión USB para
PIC18f4550. El BootLader se comunicará con una aplicación de escritorio Multiplataforma para que lo
podamos utilizar desde el Sistema Operativo que deseemos.

¿Qué es un BootLoader?

Un BootLoader para Microcontroladores se puede definir como un programa residente en el
Microcontrolador (en este caso un PIC) que facilita la carga de los programas del usuario.

El BootLoader hay que programarlo en el PIC de forma convencional a través de un programador
externo como el ICD-U64, ICD3, PICkit 3, etc. Una vez programado el BootLoader la carga de los
programas de usuario se hacen directamente a través de un canal de comunicación, este canal puede
ser el puerto serie, paralelo o USB de nuestro ordenador, en este caso el archivo .HEX se transfiere al
PIC a través de una pequeña aplicación de escritorio que hace de interfaz entre el PC y el firmware
del Microcontrolador, pero también se suelen utilizar otros buses de comunicación como el bus
CAM, SPI, I2C, etc.

Ventajas de utilizar un BootLoader

Los BootLoaders llevan ya tiempo utilizándose en el mundo de los Microcontroladores y su uso ha
sido fundamental en el éxito de muchos proyectos populares como: Arduino, Pinguino, Netduino,
etc. Estos proyectos basan su éxito en facilitar al usuario una plataforma económica con la que
empezar a programar los Microcontroladores y para ello es fundamental el abaratar costes, como el
no tener que utilizar un programador externo para cargar las aplicaciones de usuario. Estas placas de
desarrollo vienen ya con el Bootloader cargado en la memoria flash del PIC, por lo que no se necesita
de ningún Hardware adicional para empezar a programar el Microcontrolador insertado en la placa
de desarrollo.

Pero esta no es la única ventaja de utilizar un BootLoader, otra ventaja la tenemos en que podemos
actualizar el programa de usuario cargado en el Microcontrolador de manera fácil y sin necesidad de
sacar el Micro fuera de la placa donde esté montado. Por ejemplo un módulo de control instalado en
un automóvil que utilice Microcontroladores no se desmonta para actualizar su software, su
actualización se realiza a través de puntos de control (SetPoints) accesibles por el técnico de
mantenimiento y que se comunican con la unidad de control a través de un canal de comunicación
como el bus CAN (muy utilizado en la industria automovilística).

Inconvenientes

El inconveniente principal e inevitable de utilizar un BootLoader, ya podéis imaginar cual es, el gasto
de memoria ROM que implica el tenerlo cargado en la memoria del PIC de forma permanente, pero
este no es el único inconveniente que tenemos cuando utilizamos un BootLoader, la reubicación en
memoria del vector o vectores de interrupción (cuando sea necesario) provoca un incremento en la
latencia del Micro, de tal forma que cada vez que se produzca una interrupción será necesario
ejecutar dos instrucciones mas como mínimo para reubicar los vectores de interrupción en las
nuevas posiciones de memoria.




Biblioman                             www.AquiHayApuntes.com                                   Página 2
BootLoader USB Multiplataforma para el PIC18F4550

Si queremos utilizar debuggers en circuito como el ICD-U64 hay que tener en cuenta también el
rango de direcciones reservadas para cargar el programa de depuración (normalmente registros de la
parte alta de la memoria ROM).

Lógicamente todo este tipo de inconvenientes está estrechamente relacionado con la ubicación del
BootLoader (parte alta o baja de la memoria Flash), en el siguiente punto veremos algunas
consideraciones que nos pueden ayudar a determinar en qué posición de la memoria cargar el
BootLoader.

Consideraciones de diseño

Una de las metas que debe perseguir el diseño de un Bootloader y que muchas veces es tema de
discusión, es que debe de ocupar el menor espacio posible en la memoria flash del Micro, sin
embargo esto es relativo y depende del canal de comunicación que se utilice para cargar la aplicación
de usuario en el Microcontrolador, por ejemplo: si utilizamos un Microcontrolador que implementa
el módulo necesario para una conexión USB como el PIC18F4550 y queremos que el bootloader
utilice ese canal de comunicación para cargar el programa de usuario, el firmware del Bootloader
debe de incluir el “stack” correspondiente a la comunicación USB. Por lo tanto un Bootloader que
utilice como canal de comunicación un puerto USB siempre ocupara mas memoria ROM que otro que
utilice un puerto COMM serie.

Otro tema que se tiene que tener en cuenta en el diseño del Bootloader es la protección de las
direcciones de memoria donde está cargado el BootLoader para evitar su sobre escritura. Esto se
puede hacer de dos formas: por software o por hardware.

        Protección por software: cuando la protección es por software es el propio firmware del
        BootLoader el que se tiene que encargar antes de escribir en la memoria flash un nuevo
        programa de usuario que las direcciones implicadas en la operación de escritura no
        pertenezcan a las direcciones donde está guardado el propio BootLoader.
        Protección por Hardware: algunos dispositivos pertenecientes a la familia PIC18 como el
        PIC18F46J11 y otros, permiten la protección contra escritura de un número determinado de
        registros de la parte baja de la memoria flash a través de los fusibles de configuración del
        PIC. Sin embargo la mayoría de dispositivos solo permiten la protección de escritura de los
        registros del principio de la memoria Flash. Si queremos utilizar la protección por hardware
        para estos dispositivos deberemos ubicar el BootLoader al principio de la flash, por contra si
        utilizamos la parte alta de la memoria para cargar el bootloader tendremos el inconveniente
        de tener que re direccionar el vector o vectores de interrupciones, con el incremento en la
        latencia que ello implica.

Por tanto no existe una solución única para todos los casos, siempre dependerá de las características
del PIC a utilizar, del tipo de protección que queramos emplear, de si vamos a utilizar debuggers o
no, etc.




Biblioman                            www.AquiHayApuntes.com                                   Página 3
BootLoader USB Multiplataforma para el PIC18F4550

Empezando con el BootLoader

El trabajo de diseñar un BootLoader para Microcontroladores que cargue la aplicación de usuario a
través de un puerto de comunicación del PC se puede dividir en dos apartados, por un lado está el
diseño del propio BootLoader que tendremos que cargar en el Microcontrolador y por otro lado está
el diseño de la aplicación de escritorio necesaria para poder enviarle el archivo .HEX al Bootloader.

En este ejemplo vamos a utilizar un BootLoader con conexión USB que utiliza la clase CDC
(Communications Device Class) para comunicarse con el PC, esta clase se caracteriza por crear un
puerto COMM virtual en el ordenador donde se conecta el dispositivo y no necesita la instalación de
ningún driver en el Sistema Operativo para su funcionamiento (en Windows es necesario la
instalación del archivo .INF).

La parte correspondiente al firmware del BootLoader de este tutorial está basado en el ejemplo
EX_USB_BOOTLOADER.C que trae el compilador de CCS y que podemos encontrar en el directorio
donde instalamos el compilador, si en la instalación dejamos la opción por defecto ese directorio será
C:Archivos de programaPICCExamples.

El principio de funcionamiento en que se basa un BootLoader para saber si debe de cargar una nueva
aplicación de usuario o ejecutar la que en ese momento se encuentre en la memoria flash del PIC es
la siguiente: después de un reset en el PIC el BootLoader espera la llegada de un evento que
determine qué acción ejecutar, ese evento puede ser provocado por Hardware (por ejemplo el
cambio de estado en un determinado PIN del PIC) o por Software (la llegada de un determinado
comando por un canal de comunicación como la USART del PIC).

En este ejemplo utilizaremos la detección de un evento Hardware que consiste en chequear el
estado de la patilla RD0 del PIC, si está a nivel bajo el BootLoader procederá a cargar una nueva
aplicación de usuario en la memoria ROM del PIC, si RD0 es diferente de cero (Nivel Alto) se
ejecutará la aplicación de usuario que en ese momento tenga cargado el PIC.

En la figura de abajo se muestra un diagrama de estados de este escenario:




Biblioman                             www.AquiHayApuntes.com                                  Página 4
BootLoader USB Multiplataforma para el PIC18F4550

Como hemos comentado antes el firmware del BotLoader se puede programar para que utilice los
registros de la parte alta o baja de la memoria flash del PIC, nosotros utilizaremos la parte baja de la
memoria ROM para ubicar allí nuestro BootLoader y nos ahorraremos el tener que re direccionar los
vectores de interrupción.

En realidad el trabajo en cuanto a programación se refiere de hacer esto se reduce bastante si nos
ayudamos del Wizard que incorpora CCS. Según se muestra en la figura de abajo con un solo clic de
ratón seleccionamos el lugar donde queremos ubicar el Bootloader y el asistente se encargará de
generar el código necesario. Para ello genera un archivo que se llamará:
Nombre_del_Proyecto_bootloader.h incluyendo todo lo necesario para que el BootLoader trabaje en
la parte alta o baja de la memoria ROM según hayamos elegido.




Una imagen más detallada de como quedaría mapeada la memoria ROM del PIC la tenéis en la figura
de abajo. En ella se puede ver como el vector de reset ahora apunta al comienzo del programa del
BootLoader, este determinará según sea el estado de RD0 si debe ejecutar la aplicación de usuario
(RD0=1) guardada en memoria o cargar una nueva aplicación de usuario (RD0=0).




Biblioman                             www.AquiHayApuntes.com                                   Página 5
BootLoader USB Multiplataforma para el PIC18F4550




Diseño de la Aplicación de escritorio

Una vez que tenemos programado el firmware del BootLoader en nuestro Pic necesitamos una
aplicación de escritorio que nos permita enviarle el archivo .HEX a él, para ello tenemos dos
opciones:

       Utilizar la aplicación SIOW.exe que incorpora CCS y que podemos acceder a ella desde el
       propio IDE de programación seleccionando Tools-> Serial Port Monitor. Nos aparecerá la
       ventana de la figura de abajo en la que tendremos que pulsar sobre el icono “Download
       Software” para seleccionar el archivo .HEX a cargar y enviárselo al BootLoader.




Biblioman                           www.AquiHayApuntes.com                                Página 6
BootLoader USB Multiplataforma para el PIC18F4550

        Diseñar nuestra propia aplicación de escritorio, para ello hay que tener en cuenta que la
        comunicación entre el Bootloader cargado en el PIC y la aplicación de escritorio debe de ser
        bidireccional y que el protocolo de comunicación serie debe de implementar un control de
        flujo de datos por software. Esto debe de ser así ya que la velocidad en que la aplicación
        manda los datos al microcontrolador es mayor que la capacidad que tiene el BootLoader en
        recibir esos datos, decodificarlos y grabarlos en la memoria Flash del PIC. Para ello el
        BootLoader utiliza tres caracteres de control: ACK, XON y XOFF. Cada vez que el BootLoader
        recibe una línea de datos correcta envía un ACK, si el buffer de recepción se llena envía un
        XOFF para que la aplicación de escritorio deje de enviar datos momentáneamente, cuando
        esté listo de nuevo enviará un XON para que la aplicación reanude la transmisión de datos.

Para el desarrollo de la aplicación de escritorio se ha utilizado el lenguaje de programación C++ a
través del Framework QtCreator.

¿Qué es Qt?

Qt es un conjunto de librerías o bibliotecas que se caracterizan por ser independientes de la
plataforma donde se ejecutan y que nos permiten generar interfaces gráficas (GUIs) para muchos
sistemas operativos (incluyendo sistemas embebidos) de forma rápida y sencilla. Qt fue creado por la
compañía Trolltech en el año 1994 y vendida a Nokia en el año 2008 donde continua su desarrollo, a
partir de la versión 4.5 existe una versión con licencia LGPL.

Originalmente Qt solo trabajaba con el lenguaje C++ pero actualmente existen módulos (bindings)
para otros lenguajes como Python, Java, Perl, Ruby, PHP, etc.

Aplicaciones que han utilizado Qt para su desarrollo tenemos entre otras las siguientes: Google Earh,
Skype, VLC Media Player, Editores de texto como FocusWriter, Qt Creator, ect.

Qt Creator es un entorno de desarrollo integrado (IDE) de software libre y multiplataforma
desarrollado por Nokia y es con el que se ha realizado la aplicación de escritorio para el BootLoader.

En las siguientes figuras se muestra el IDE trabajando en diferentes sistemas operativos:




Biblioman                             www.AquiHayApuntes.com                                  Página 7
BootLoader USB Multiplataforma para el PIC18F4550

Windows:




Linux:




Biblioman                www.AquiHayApuntes.com              Página 8
BootLoader USB Multiplataforma para el PIC18F4550

Ventajas de utilizar Qt

        Es un proyecto de Código Abierto y gratuito, de libre distribución.
        Es Multiplataforma su código se puede compilar en diferentes sistemas operativos:
        Windows, Linux, MAC y sistemas embebidos como un teléfono móvil, sin necesidad de hacer
        cambios en el código fuente.
        La compilación es a código nativo con instrucciones máquina y no en código intermedio, por
        tanto la máquina cliente donde se ejecute la aplicación no necesita la instalación de ninguna
        máquina virtual como en el caso de Java o .NET
        Al utilizar C++ como lenguaje de programación podemos acceder directamente a los puertos
        del ordenador a través de librerías, sin la necesidad de tener que utilizar librerías dinámicas
        (.dll) de terceras partes.
        Con Qt Creator tienes el mismo IDE para trabajar en diferentes sistemas operativos. Por
        ejemplo la plataforma .NET se puede decir que es “Multiplataforma” gracias al proyecto
        Mono, pero el IDE en Windows (Microsoft Visual Studio) es totalmente diferente al IDE para
        Linux (MonoDevelop).
        Qt Creator al igual que cualquier IDE moderno permite crear fácilmente interfaces gráficas
        por el método de arrastrar y soltar componentes como botones, labels, textbox, etc. Además
        permite la depuración visual de los programas por medio de la simulación del programa paso
        a paso, inserción de breakpoint, etc.

Inconvenientes

La verdad es que bajo mi punto de vista prácticamente no le veo inconvenientes, por citar algo decir
que para ejecutar las aplicaciones en un sistema que no tenga instaladas las librerías Qt se deben de
integrar en la carpeta del ejecutable todos los archivos necesarios que necesita QT para su ejecución,
eso implica que una aplicación de usuario por pequeña que sea ocupará como mínimo unos 11
Megas aproximadamente. En este aspecto lo veo exactamente igual que RealBasic.

Para empezar a trabajar con Qt se necesitan dos pre-requisitos que son: saber programar en C++ y
conocer la técnica de programación orientada a objetos. De no conocerlos puede llegar a ser un poco
frustrante el inicio con Qt.

Creando una aplicación de usuario para cargar con el BootLoader.

La única condición necesaria que tenemos que tener en cuenta en el código de nuestra aplicación de
usuario si queremos cargarla a través del BootLoader es incluir el archivo de cabecera
usb_bootloader.h, este se encarga de re direccionar los vectores de interrupción y de reset así como
de reservar el espacio en memoria utilizado por el BootLoader. Un ejemplo sencillo para comprobar
que el archivo es cargado en la ROM, podría ser el siguiente:




Biblioman                            www.AquiHayApuntes.com                                   Página 9
BootLoader USB Multiplataforma para el PIC18F4550

///////////////////////////////////////////////////////////////////////////////////////////////////
// Ejemplo de Aplicación de usuario para usar con el Bootloader //
//                                                                                                //
// www.AquiHayApuntes.com                                                                      //
//                                                                                              //
//////////////////////////////////////////////////////////////////////////////////////////////////
#include <18F4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)
//Archivo de cabecera necesario para trabajar con el Bootloader
#include "usb_bootloader.h"
void main(void)
{
   while(true){
    output_toggle(PIN_B7);
    delay_ms(1000);
    }
}

El archivo .HEX resultado de la compilación es el que le enviaremos al BootLoader a través de la
aplicación de escritorio.

Nota: Si creamos una aplicación que utilice USB la aplicación debe de incluir su propio “stack” USB. El
stack del BootLoader es solo para él, ya que la aplicación de usuario no puede acceder a las regiones
de memoria del BootLoader.

Ejecución del programa en diferentes sistemas operativos




Biblioman                              www.AquiHayApuntes.com                                  Página 10
BootLoader USB Multiplataforma para el PIC18F4550

Y un par de vídeos del BootLoader funcionando:

       En Windows:




http://www.youtube.com/watch?v=L1K5TKjMJCw

       En Linux:




http://www.youtube.com/watch?v=ncU0cdnGwhk

Biblioman                          www.AquiHayApuntes.com   Página 11
BootLoader USB Multiplataforma para el PIC18F4550

        En MAC:
        Están pendientes las pruebas en este sistema operativo, puedes seguir las
        actualizaciones de este software en el siguiente hilo del foro de aquihayapuntes.com

        Cualquier sugerencia, comentario o error que encuentres lo puedes “postear” también
        en el mismo hilo.

Fuentes de Información

CCS Custom Computer Services

Qt

Qestserialport. Librería para acceso al puerto serie.

Otra librería acceso al puerto serie.

Aplicación AN1310 de Microchip

Marcas registradas

Las marcas citadas en este artículo así como las imágenes procedentes de capturas de pantallas
pertenecen a sus respectivos propietarios su utilización en este artículo es con fines educativos y sin
ánimo de lucro.

Licencia

Autor de este artículo: Biblioman

Versión: 1.01

Página Web: http:www.aquihayapuntes.com

Email: email.Biblioman@gmail.com

Los comentarios y conclusiones hechos en este artículo son personales y no se garantiza la veracidad
de los mismos por parte del autor, para una información más amplia y precisa consultar las fuentes
citadas.

Este artículo esta bajo una licencia Creative Commons: Reconocimiento-No Comercial-Compartir
bajo la misma licencia.




Biblioman                               www.AquiHayApuntes.com                               Página 12

Más contenido relacionado

La actualidad más candente

Introduction to ARM LPC2148
Introduction to ARM LPC2148Introduction to ARM LPC2148
Introduction to ARM LPC2148Veera Kumar
 
Apuntes s7 200
Apuntes s7 200Apuntes s7 200
Apuntes s7 200edeive
 
Tablas de contactores
Tablas de contactoresTablas de contactores
Tablas de contactoresleandroi
 
Cicloconvertidores trifásicos con modulación de ancho de pulso
Cicloconvertidores trifásicos con modulación de ancho de pulsoCicloconvertidores trifásicos con modulación de ancho de pulso
Cicloconvertidores trifásicos con modulación de ancho de pulsoFrank León Aranda
 
Diseño bici electrica con motor universal
Diseño bici electrica con motor universal Diseño bici electrica con motor universal
Diseño bici electrica con motor universal Javier Linera
 
Coleccion de-circuitos II
Coleccion de-circuitos IIColeccion de-circuitos II
Coleccion de-circuitos IIelelectronico
 
Teoria s7 300-basico
Teoria s7 300-basicoTeoria s7 300-basico
Teoria s7 300-basicoGerardo Moya
 
Basic
BasicBasic
Basicvcesp
 
Plc example presentation
Plc example presentationPlc example presentation
Plc example presentationRoshit Kadiru
 
Plc Siemens Training Notes
Plc Siemens Training NotesPlc Siemens Training Notes
Plc Siemens Training Notesplc_course
 
Variadores de frecuencia_
Variadores de frecuencia_Variadores de frecuencia_
Variadores de frecuencia_Mauricio Jeria
 
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...Jomicast
 

La actualidad más candente (20)

Introduction to ARM LPC2148
Introduction to ARM LPC2148Introduction to ARM LPC2148
Introduction to ARM LPC2148
 
Apuntes s7 200
Apuntes s7 200Apuntes s7 200
Apuntes s7 200
 
Conclusion de labview
Conclusion de labviewConclusion de labview
Conclusion de labview
 
Tablas de contactores
Tablas de contactoresTablas de contactores
Tablas de contactores
 
Logo siemens ( PLC )
Logo siemens ( PLC )Logo siemens ( PLC )
Logo siemens ( PLC )
 
Cicloconvertidores trifásicos con modulación de ancho de pulso
Cicloconvertidores trifásicos con modulación de ancho de pulsoCicloconvertidores trifásicos con modulación de ancho de pulso
Cicloconvertidores trifásicos con modulación de ancho de pulso
 
Configuración Emisor Común
Configuración Emisor ComúnConfiguración Emisor Común
Configuración Emisor Común
 
Diseño bici electrica con motor universal
Diseño bici electrica con motor universal Diseño bici electrica con motor universal
Diseño bici electrica con motor universal
 
Coleccion de-circuitos II
Coleccion de-circuitos IIColeccion de-circuitos II
Coleccion de-circuitos II
 
Teoria s7 300-basico
Teoria s7 300-basicoTeoria s7 300-basico
Teoria s7 300-basico
 
Basic
BasicBasic
Basic
 
Plc example presentation
Plc example presentationPlc example presentation
Plc example presentation
 
Introduccion mplab
Introduccion mplabIntroduccion mplab
Introduccion mplab
 
Plc Siemens Training Notes
Plc Siemens Training NotesPlc Siemens Training Notes
Plc Siemens Training Notes
 
Convertidores ac,dc
Convertidores ac,dcConvertidores ac,dc
Convertidores ac,dc
 
Variadores de frecuencia_
Variadores de frecuencia_Variadores de frecuencia_
Variadores de frecuencia_
 
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
Circuitos secuenciales: Contadores, Registros de Desplazamiento y Circuito de...
 
Pic16f84
Pic16f84Pic16f84
Pic16f84
 
Lcd monitor repair
Lcd monitor repairLcd monitor repair
Lcd monitor repair
 
Estructura plc
Estructura plcEstructura plc
Estructura plc
 

Destacado

Microcontroladores pic diseño practico de aplicaciones
Microcontroladores pic diseño practico de aplicacionesMicrocontroladores pic diseño practico de aplicaciones
Microcontroladores pic diseño practico de aplicacionesCarlos Tovar
 
comunicacion pic - usb
comunicacion pic - usbcomunicacion pic - usb
comunicacion pic - usbmunlis
 
Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550 Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550 Alejandra Ruiz
 
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Franz Amaya
 
La Familia De Microcontroladores Pic
La Familia De Microcontroladores PicLa Familia De Microcontroladores Pic
La Familia De Microcontroladores PicAndres
 
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)Miguel Angel Corona Lòpez
 
Sesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladoresSesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladoresDidier Tec
 
Introduccion a arduino circuitos basicos de entrada y salida
Introduccion a arduino circuitos basicos de entrada y salidaIntroduccion a arduino circuitos basicos de entrada y salida
Introduccion a arduino circuitos basicos de entrada y salidaMoises Nuñez Silva
 
Introduccion a microcontroladores
Introduccion a microcontroladoresIntroduccion a microcontroladores
Introduccion a microcontroladorestecautind
 
Diapositivas pic 18f452 microprocesadores
Diapositivas pic 18f452  microprocesadoresDiapositivas pic 18f452  microprocesadores
Diapositivas pic 18f452 microprocesadoresjoselin33
 
Comunicación via bluetooth
Comunicación via bluetoothComunicación via bluetooth
Comunicación via bluetoothMarco Silva
 
Juego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87xJuego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87xConstructora Kaizen
 
Pic problemas resueltos
Pic problemas resueltos Pic problemas resueltos
Pic problemas resueltos GM Lamo
 

Destacado (20)

Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550Curso de microcontroladores pic18 f4550
Curso de microcontroladores pic18 f4550
 
Microcontroladores pic diseño practico de aplicaciones
Microcontroladores pic diseño practico de aplicacionesMicrocontroladores pic diseño practico de aplicaciones
Microcontroladores pic diseño practico de aplicaciones
 
comunicacion pic - usb
comunicacion pic - usbcomunicacion pic - usb
comunicacion pic - usb
 
Labview & pic
Labview & picLabview & pic
Labview & pic
 
pic 18f4550
pic 18f4550 pic 18f4550
pic 18f4550
 
Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550 Presentacion pic 16f887 y 18f4550
Presentacion pic 16f887 y 18f4550
 
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
Curso de lenguaje c para microcontroladores pic dia 1(2)(2)(2)(2)(2)(2)
 
Ejemplos de diagramas
Ejemplos de diagramasEjemplos de diagramas
Ejemplos de diagramas
 
La Familia De Microcontroladores Pic
La Familia De Microcontroladores PicLa Familia De Microcontroladores Pic
La Familia De Microcontroladores Pic
 
Curso de-mcu-proteus
Curso de-mcu-proteusCurso de-mcu-proteus
Curso de-mcu-proteus
 
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
Microcontroladores pic (josé mª angulo usategui, ignacio angulo martínez)
 
Comunicaciones serialesc#2010 ccs
Comunicaciones serialesc#2010 ccsComunicaciones serialesc#2010 ccs
Comunicaciones serialesc#2010 ccs
 
Sesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladoresSesión 3 introduccion a microcontroladores
Sesión 3 introduccion a microcontroladores
 
Introduccion a arduino circuitos basicos de entrada y salida
Introduccion a arduino circuitos basicos de entrada y salidaIntroduccion a arduino circuitos basicos de entrada y salida
Introduccion a arduino circuitos basicos de entrada y salida
 
Introduccion a microcontroladores
Introduccion a microcontroladoresIntroduccion a microcontroladores
Introduccion a microcontroladores
 
Diapositivas pic 18f452 microprocesadores
Diapositivas pic 18f452  microprocesadoresDiapositivas pic 18f452  microprocesadores
Diapositivas pic 18f452 microprocesadores
 
PEP Comida - Jasone
PEP Comida - JasonePEP Comida - Jasone
PEP Comida - Jasone
 
Comunicación via bluetooth
Comunicación via bluetoothComunicación via bluetooth
Comunicación via bluetooth
 
Juego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87xJuego de instrucciones: PIC 16F87x
Juego de instrucciones: PIC 16F87x
 
Pic problemas resueltos
Pic problemas resueltos Pic problemas resueltos
Pic problemas resueltos
 

Similar a Bootloader USB Multiplataforma para pic18f4550

teo bootloader.pptx
teo bootloader.pptxteo bootloader.pptx
teo bootloader.pptxssuser7340fe
 
Como hacer una conexión usb
Como hacer una conexión usbComo hacer una conexión usb
Como hacer una conexión usbmarcoreyes1972
 
Electonica de potencia, diodos de rectificacion
Electonica de potencia, diodos de rectificacionElectonica de potencia, diodos de rectificacion
Electonica de potencia, diodos de rectificacionBEYMARCALLECONDE
 
Evaluación de Windows CE y Linux Embedded en Dispositivos Móviles iPaq Pocket PC
Evaluación de Windows CE y Linux Embedded en Dispositivos Móviles iPaq Pocket PCEvaluación de Windows CE y Linux Embedded en Dispositivos Móviles iPaq Pocket PC
Evaluación de Windows CE y Linux Embedded en Dispositivos Móviles iPaq Pocket PCJuan Carlos Olivares Rojas
 
Tutorial proton part 2
Tutorial proton part 2Tutorial proton part 2
Tutorial proton part 2dar851112
 
Manual de usoprogramador pic
Manual de usoprogramador picManual de usoprogramador pic
Manual de usoprogramador picsetweraye5y
 
C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...
C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...
C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...ezequiel
 
Yareli martinez rios
Yareli martinez riosYareli martinez rios
Yareli martinez riosYaaree
 
8.manuales laptop xo secundaria-final dat 2013-1-rev
8.manuales laptop xo secundaria-final dat 2013-1-rev8.manuales laptop xo secundaria-final dat 2013-1-rev
8.manuales laptop xo secundaria-final dat 2013-1-revJimmy Cuadros Q
 
PROGRAMACION DE LOS PIC 2021-1.pdf
PROGRAMACION DE LOS  PIC 2021-1.pdfPROGRAMACION DE LOS  PIC 2021-1.pdf
PROGRAMACION DE LOS PIC 2021-1.pdfSistemadeEstudiosMed
 

Similar a Bootloader USB Multiplataforma para pic18f4550 (20)

teo bootloader.pptx
teo bootloader.pptxteo bootloader.pptx
teo bootloader.pptx
 
Como hacer una conexión usb
Como hacer una conexión usbComo hacer una conexión usb
Como hacer una conexión usb
 
Electonica de potencia, diodos de rectificacion
Electonica de potencia, diodos de rectificacionElectonica de potencia, diodos de rectificacion
Electonica de potencia, diodos de rectificacion
 
Evaluación de Windows CE y Linux Embedded en Dispositivos Móviles iPaq Pocket PC
Evaluación de Windows CE y Linux Embedded en Dispositivos Móviles iPaq Pocket PCEvaluación de Windows CE y Linux Embedded en Dispositivos Móviles iPaq Pocket PC
Evaluación de Windows CE y Linux Embedded en Dispositivos Móviles iPaq Pocket PC
 
Bootloader
BootloaderBootloader
Bootloader
 
Comandar un pic a través de internet
Comandar un pic a través de internetComandar un pic a través de internet
Comandar un pic a través de internet
 
Pinguino aetel
Pinguino aetelPinguino aetel
Pinguino aetel
 
Practica adicional
Practica adicionalPractica adicional
Practica adicional
 
Uso Mplab
Uso MplabUso Mplab
Uso Mplab
 
P01.Desarrollo de aplicaciones con mplab
P01.Desarrollo de aplicaciones con mplabP01.Desarrollo de aplicaciones con mplab
P01.Desarrollo de aplicaciones con mplab
 
Tutorial proton part 2
Tutorial proton part 2Tutorial proton part 2
Tutorial proton part 2
 
Manual de usoprogramador pic
Manual de usoprogramador picManual de usoprogramador pic
Manual de usoprogramador pic
 
C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...
C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...
C:\Documents And Settings\Earias\Escritorio\Pic 32\Iniciacion A La Programaci...
 
Programación de microcontroladores
Programación de microcontroladoresProgramación de microcontroladores
Programación de microcontroladores
 
Yareli martinez rios
Yareli martinez riosYareli martinez rios
Yareli martinez rios
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
MANUALES LAPTOP XO SECUNDARIA - PERUEDUCA
MANUALES LAPTOP XO SECUNDARIA - PERUEDUCAMANUALES LAPTOP XO SECUNDARIA - PERUEDUCA
MANUALES LAPTOP XO SECUNDARIA - PERUEDUCA
 
8.manuales laptop xo secundaria-final dat 2013-1-rev
8.manuales laptop xo secundaria-final dat 2013-1-rev8.manuales laptop xo secundaria-final dat 2013-1-rev
8.manuales laptop xo secundaria-final dat 2013-1-rev
 
PROGRAMACION DE LOS PIC 2021-1.pdf
PROGRAMACION DE LOS  PIC 2021-1.pdfPROGRAMACION DE LOS  PIC 2021-1.pdf
PROGRAMACION DE LOS PIC 2021-1.pdf
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 

Último

El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELmaryfer27m
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaarkananubis
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..RobertoGumucio2
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptJavierHerrera662252
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafiosFundación YOD YOD
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA241531640
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativaAdrianaMartnez618894
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx241522327
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxJOSEFERNANDOARENASCA
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptMiguelAtencio10
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxNombre Apellidos
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxazmysanros90
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadMiguelAngelVillanuev48
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxAlexander López
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son241514984
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMidwarHenryLOZAFLORE
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxMariaBurgos55
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxAlexander López
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxJOSEMANUELHERNANDEZH11
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.241514949
 

Último (20)

El uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFELEl uso delas tic en la vida cotidiana MFEL
El uso delas tic en la vida cotidiana MFEL
 
R1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en minaR1600G CAT Variables de cargadores en mina
R1600G CAT Variables de cargadores en mina
 
Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..Plan Sarmiento - Netbook del GCBA 2019..
Plan Sarmiento - Netbook del GCBA 2019..
 
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.pptTEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
TEMA 2 PROTOCOLO DE EXTRACCION VEHICULAR.ppt
 
La era de la educación digital y sus desafios
La era de la educación digital y sus desafiosLa era de la educación digital y sus desafios
La era de la educación digital y sus desafios
 
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6    CREAR UN RECURSO MULTIMEDIAActividad integradora 6    CREAR UN RECURSO MULTIMEDIA
Actividad integradora 6 CREAR UN RECURSO MULTIMEDIA
 
definicion segun autores de matemáticas educativa
definicion segun autores de matemáticas  educativadefinicion segun autores de matemáticas  educativa
definicion segun autores de matemáticas educativa
 
FloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptxFloresMorales_Montserrath_M1S3AI6 (1).pptx
FloresMorales_Montserrath_M1S3AI6 (1).pptx
 
Arenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptxArenas Camacho-Practica tarea Sesión 12.pptx
Arenas Camacho-Practica tarea Sesión 12.pptx
 
dokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.pptdokumen.tips_36274588-sistema-heui-eui.ppt
dokumen.tips_36274588-sistema-heui-eui.ppt
 
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptxCrear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
Crear un recurso multimedia. Maricela_Ponce_DomingoM1S3AI6-1.pptx
 
tics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptxtics en la vida cotidiana prepa en linea modulo 1.pptx
tics en la vida cotidiana prepa en linea modulo 1.pptx
 
Presentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidadPresentación inteligencia artificial en la actualidad
Presentación inteligencia artificial en la actualidad
 
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptxGoogle-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
Google-Meet-como-herramienta-para-realizar-reuniones-virtuales.pptx
 
El uso de las tic en la vida ,lo importante que son
El uso de las tic en la vida ,lo importante  que sonEl uso de las tic en la vida ,lo importante  que son
El uso de las tic en la vida ,lo importante que son
 
Mapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptxMapa-conceptual-del-Origen-del-Universo-3.pptx
Mapa-conceptual-del-Origen-del-Universo-3.pptx
 
Segunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptxSegunda ley de la termodinámica TERMODINAMICA.pptx
Segunda ley de la termodinámica TERMODINAMICA.pptx
 
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptxEl_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
El_Blog_como_herramienta_de_publicacion_y_consulta_de_investigacion.pptx
 
Hernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptxHernandez_Hernandez_Practica web de la sesion 11.pptx
Hernandez_Hernandez_Practica web de la sesion 11.pptx
 
El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.El uso de las TIC's en la vida cotidiana.
El uso de las TIC's en la vida cotidiana.
 

Bootloader USB Multiplataforma para pic18f4550

  • 1. 2011 BootLoader USB Multiplataforma para el PIC18F4550 Implementación de un BootLoader para el PIC18F4550 con conexión USB utilizando la clase CDC (Communications Device Class) y desarrollo de la aplicación de escritorio en un entorno Multiplataforma que permita la carga de programas de usuario desde PCs con diferentes Sistemas Operativos. Biblioman www.AquiHayApuntes.com 28/01/2011
  • 2. BootLoader USB Multiplataforma para el PIC18F4550 En este artículo trataremos sobre como implementar un BootLoader con conexión USB para PIC18f4550. El BootLader se comunicará con una aplicación de escritorio Multiplataforma para que lo podamos utilizar desde el Sistema Operativo que deseemos. ¿Qué es un BootLoader? Un BootLoader para Microcontroladores se puede definir como un programa residente en el Microcontrolador (en este caso un PIC) que facilita la carga de los programas del usuario. El BootLoader hay que programarlo en el PIC de forma convencional a través de un programador externo como el ICD-U64, ICD3, PICkit 3, etc. Una vez programado el BootLoader la carga de los programas de usuario se hacen directamente a través de un canal de comunicación, este canal puede ser el puerto serie, paralelo o USB de nuestro ordenador, en este caso el archivo .HEX se transfiere al PIC a través de una pequeña aplicación de escritorio que hace de interfaz entre el PC y el firmware del Microcontrolador, pero también se suelen utilizar otros buses de comunicación como el bus CAM, SPI, I2C, etc. Ventajas de utilizar un BootLoader Los BootLoaders llevan ya tiempo utilizándose en el mundo de los Microcontroladores y su uso ha sido fundamental en el éxito de muchos proyectos populares como: Arduino, Pinguino, Netduino, etc. Estos proyectos basan su éxito en facilitar al usuario una plataforma económica con la que empezar a programar los Microcontroladores y para ello es fundamental el abaratar costes, como el no tener que utilizar un programador externo para cargar las aplicaciones de usuario. Estas placas de desarrollo vienen ya con el Bootloader cargado en la memoria flash del PIC, por lo que no se necesita de ningún Hardware adicional para empezar a programar el Microcontrolador insertado en la placa de desarrollo. Pero esta no es la única ventaja de utilizar un BootLoader, otra ventaja la tenemos en que podemos actualizar el programa de usuario cargado en el Microcontrolador de manera fácil y sin necesidad de sacar el Micro fuera de la placa donde esté montado. Por ejemplo un módulo de control instalado en un automóvil que utilice Microcontroladores no se desmonta para actualizar su software, su actualización se realiza a través de puntos de control (SetPoints) accesibles por el técnico de mantenimiento y que se comunican con la unidad de control a través de un canal de comunicación como el bus CAN (muy utilizado en la industria automovilística). Inconvenientes El inconveniente principal e inevitable de utilizar un BootLoader, ya podéis imaginar cual es, el gasto de memoria ROM que implica el tenerlo cargado en la memoria del PIC de forma permanente, pero este no es el único inconveniente que tenemos cuando utilizamos un BootLoader, la reubicación en memoria del vector o vectores de interrupción (cuando sea necesario) provoca un incremento en la latencia del Micro, de tal forma que cada vez que se produzca una interrupción será necesario ejecutar dos instrucciones mas como mínimo para reubicar los vectores de interrupción en las nuevas posiciones de memoria. Biblioman www.AquiHayApuntes.com Página 2
  • 3. BootLoader USB Multiplataforma para el PIC18F4550 Si queremos utilizar debuggers en circuito como el ICD-U64 hay que tener en cuenta también el rango de direcciones reservadas para cargar el programa de depuración (normalmente registros de la parte alta de la memoria ROM). Lógicamente todo este tipo de inconvenientes está estrechamente relacionado con la ubicación del BootLoader (parte alta o baja de la memoria Flash), en el siguiente punto veremos algunas consideraciones que nos pueden ayudar a determinar en qué posición de la memoria cargar el BootLoader. Consideraciones de diseño Una de las metas que debe perseguir el diseño de un Bootloader y que muchas veces es tema de discusión, es que debe de ocupar el menor espacio posible en la memoria flash del Micro, sin embargo esto es relativo y depende del canal de comunicación que se utilice para cargar la aplicación de usuario en el Microcontrolador, por ejemplo: si utilizamos un Microcontrolador que implementa el módulo necesario para una conexión USB como el PIC18F4550 y queremos que el bootloader utilice ese canal de comunicación para cargar el programa de usuario, el firmware del Bootloader debe de incluir el “stack” correspondiente a la comunicación USB. Por lo tanto un Bootloader que utilice como canal de comunicación un puerto USB siempre ocupara mas memoria ROM que otro que utilice un puerto COMM serie. Otro tema que se tiene que tener en cuenta en el diseño del Bootloader es la protección de las direcciones de memoria donde está cargado el BootLoader para evitar su sobre escritura. Esto se puede hacer de dos formas: por software o por hardware. Protección por software: cuando la protección es por software es el propio firmware del BootLoader el que se tiene que encargar antes de escribir en la memoria flash un nuevo programa de usuario que las direcciones implicadas en la operación de escritura no pertenezcan a las direcciones donde está guardado el propio BootLoader. Protección por Hardware: algunos dispositivos pertenecientes a la familia PIC18 como el PIC18F46J11 y otros, permiten la protección contra escritura de un número determinado de registros de la parte baja de la memoria flash a través de los fusibles de configuración del PIC. Sin embargo la mayoría de dispositivos solo permiten la protección de escritura de los registros del principio de la memoria Flash. Si queremos utilizar la protección por hardware para estos dispositivos deberemos ubicar el BootLoader al principio de la flash, por contra si utilizamos la parte alta de la memoria para cargar el bootloader tendremos el inconveniente de tener que re direccionar el vector o vectores de interrupciones, con el incremento en la latencia que ello implica. Por tanto no existe una solución única para todos los casos, siempre dependerá de las características del PIC a utilizar, del tipo de protección que queramos emplear, de si vamos a utilizar debuggers o no, etc. Biblioman www.AquiHayApuntes.com Página 3
  • 4. BootLoader USB Multiplataforma para el PIC18F4550 Empezando con el BootLoader El trabajo de diseñar un BootLoader para Microcontroladores que cargue la aplicación de usuario a través de un puerto de comunicación del PC se puede dividir en dos apartados, por un lado está el diseño del propio BootLoader que tendremos que cargar en el Microcontrolador y por otro lado está el diseño de la aplicación de escritorio necesaria para poder enviarle el archivo .HEX al Bootloader. En este ejemplo vamos a utilizar un BootLoader con conexión USB que utiliza la clase CDC (Communications Device Class) para comunicarse con el PC, esta clase se caracteriza por crear un puerto COMM virtual en el ordenador donde se conecta el dispositivo y no necesita la instalación de ningún driver en el Sistema Operativo para su funcionamiento (en Windows es necesario la instalación del archivo .INF). La parte correspondiente al firmware del BootLoader de este tutorial está basado en el ejemplo EX_USB_BOOTLOADER.C que trae el compilador de CCS y que podemos encontrar en el directorio donde instalamos el compilador, si en la instalación dejamos la opción por defecto ese directorio será C:Archivos de programaPICCExamples. El principio de funcionamiento en que se basa un BootLoader para saber si debe de cargar una nueva aplicación de usuario o ejecutar la que en ese momento se encuentre en la memoria flash del PIC es la siguiente: después de un reset en el PIC el BootLoader espera la llegada de un evento que determine qué acción ejecutar, ese evento puede ser provocado por Hardware (por ejemplo el cambio de estado en un determinado PIN del PIC) o por Software (la llegada de un determinado comando por un canal de comunicación como la USART del PIC). En este ejemplo utilizaremos la detección de un evento Hardware que consiste en chequear el estado de la patilla RD0 del PIC, si está a nivel bajo el BootLoader procederá a cargar una nueva aplicación de usuario en la memoria ROM del PIC, si RD0 es diferente de cero (Nivel Alto) se ejecutará la aplicación de usuario que en ese momento tenga cargado el PIC. En la figura de abajo se muestra un diagrama de estados de este escenario: Biblioman www.AquiHayApuntes.com Página 4
  • 5. BootLoader USB Multiplataforma para el PIC18F4550 Como hemos comentado antes el firmware del BotLoader se puede programar para que utilice los registros de la parte alta o baja de la memoria flash del PIC, nosotros utilizaremos la parte baja de la memoria ROM para ubicar allí nuestro BootLoader y nos ahorraremos el tener que re direccionar los vectores de interrupción. En realidad el trabajo en cuanto a programación se refiere de hacer esto se reduce bastante si nos ayudamos del Wizard que incorpora CCS. Según se muestra en la figura de abajo con un solo clic de ratón seleccionamos el lugar donde queremos ubicar el Bootloader y el asistente se encargará de generar el código necesario. Para ello genera un archivo que se llamará: Nombre_del_Proyecto_bootloader.h incluyendo todo lo necesario para que el BootLoader trabaje en la parte alta o baja de la memoria ROM según hayamos elegido. Una imagen más detallada de como quedaría mapeada la memoria ROM del PIC la tenéis en la figura de abajo. En ella se puede ver como el vector de reset ahora apunta al comienzo del programa del BootLoader, este determinará según sea el estado de RD0 si debe ejecutar la aplicación de usuario (RD0=1) guardada en memoria o cargar una nueva aplicación de usuario (RD0=0). Biblioman www.AquiHayApuntes.com Página 5
  • 6. BootLoader USB Multiplataforma para el PIC18F4550 Diseño de la Aplicación de escritorio Una vez que tenemos programado el firmware del BootLoader en nuestro Pic necesitamos una aplicación de escritorio que nos permita enviarle el archivo .HEX a él, para ello tenemos dos opciones: Utilizar la aplicación SIOW.exe que incorpora CCS y que podemos acceder a ella desde el propio IDE de programación seleccionando Tools-> Serial Port Monitor. Nos aparecerá la ventana de la figura de abajo en la que tendremos que pulsar sobre el icono “Download Software” para seleccionar el archivo .HEX a cargar y enviárselo al BootLoader. Biblioman www.AquiHayApuntes.com Página 6
  • 7. BootLoader USB Multiplataforma para el PIC18F4550 Diseñar nuestra propia aplicación de escritorio, para ello hay que tener en cuenta que la comunicación entre el Bootloader cargado en el PIC y la aplicación de escritorio debe de ser bidireccional y que el protocolo de comunicación serie debe de implementar un control de flujo de datos por software. Esto debe de ser así ya que la velocidad en que la aplicación manda los datos al microcontrolador es mayor que la capacidad que tiene el BootLoader en recibir esos datos, decodificarlos y grabarlos en la memoria Flash del PIC. Para ello el BootLoader utiliza tres caracteres de control: ACK, XON y XOFF. Cada vez que el BootLoader recibe una línea de datos correcta envía un ACK, si el buffer de recepción se llena envía un XOFF para que la aplicación de escritorio deje de enviar datos momentáneamente, cuando esté listo de nuevo enviará un XON para que la aplicación reanude la transmisión de datos. Para el desarrollo de la aplicación de escritorio se ha utilizado el lenguaje de programación C++ a través del Framework QtCreator. ¿Qué es Qt? Qt es un conjunto de librerías o bibliotecas que se caracterizan por ser independientes de la plataforma donde se ejecutan y que nos permiten generar interfaces gráficas (GUIs) para muchos sistemas operativos (incluyendo sistemas embebidos) de forma rápida y sencilla. Qt fue creado por la compañía Trolltech en el año 1994 y vendida a Nokia en el año 2008 donde continua su desarrollo, a partir de la versión 4.5 existe una versión con licencia LGPL. Originalmente Qt solo trabajaba con el lenguaje C++ pero actualmente existen módulos (bindings) para otros lenguajes como Python, Java, Perl, Ruby, PHP, etc. Aplicaciones que han utilizado Qt para su desarrollo tenemos entre otras las siguientes: Google Earh, Skype, VLC Media Player, Editores de texto como FocusWriter, Qt Creator, ect. Qt Creator es un entorno de desarrollo integrado (IDE) de software libre y multiplataforma desarrollado por Nokia y es con el que se ha realizado la aplicación de escritorio para el BootLoader. En las siguientes figuras se muestra el IDE trabajando en diferentes sistemas operativos: Biblioman www.AquiHayApuntes.com Página 7
  • 8. BootLoader USB Multiplataforma para el PIC18F4550 Windows: Linux: Biblioman www.AquiHayApuntes.com Página 8
  • 9. BootLoader USB Multiplataforma para el PIC18F4550 Ventajas de utilizar Qt Es un proyecto de Código Abierto y gratuito, de libre distribución. Es Multiplataforma su código se puede compilar en diferentes sistemas operativos: Windows, Linux, MAC y sistemas embebidos como un teléfono móvil, sin necesidad de hacer cambios en el código fuente. La compilación es a código nativo con instrucciones máquina y no en código intermedio, por tanto la máquina cliente donde se ejecute la aplicación no necesita la instalación de ninguna máquina virtual como en el caso de Java o .NET Al utilizar C++ como lenguaje de programación podemos acceder directamente a los puertos del ordenador a través de librerías, sin la necesidad de tener que utilizar librerías dinámicas (.dll) de terceras partes. Con Qt Creator tienes el mismo IDE para trabajar en diferentes sistemas operativos. Por ejemplo la plataforma .NET se puede decir que es “Multiplataforma” gracias al proyecto Mono, pero el IDE en Windows (Microsoft Visual Studio) es totalmente diferente al IDE para Linux (MonoDevelop). Qt Creator al igual que cualquier IDE moderno permite crear fácilmente interfaces gráficas por el método de arrastrar y soltar componentes como botones, labels, textbox, etc. Además permite la depuración visual de los programas por medio de la simulación del programa paso a paso, inserción de breakpoint, etc. Inconvenientes La verdad es que bajo mi punto de vista prácticamente no le veo inconvenientes, por citar algo decir que para ejecutar las aplicaciones en un sistema que no tenga instaladas las librerías Qt se deben de integrar en la carpeta del ejecutable todos los archivos necesarios que necesita QT para su ejecución, eso implica que una aplicación de usuario por pequeña que sea ocupará como mínimo unos 11 Megas aproximadamente. En este aspecto lo veo exactamente igual que RealBasic. Para empezar a trabajar con Qt se necesitan dos pre-requisitos que son: saber programar en C++ y conocer la técnica de programación orientada a objetos. De no conocerlos puede llegar a ser un poco frustrante el inicio con Qt. Creando una aplicación de usuario para cargar con el BootLoader. La única condición necesaria que tenemos que tener en cuenta en el código de nuestra aplicación de usuario si queremos cargarla a través del BootLoader es incluir el archivo de cabecera usb_bootloader.h, este se encarga de re direccionar los vectores de interrupción y de reset así como de reservar el espacio en memoria utilizado por el BootLoader. Un ejemplo sencillo para comprobar que el archivo es cargado en la ROM, podría ser el siguiente: Biblioman www.AquiHayApuntes.com Página 9
  • 10. BootLoader USB Multiplataforma para el PIC18F4550 /////////////////////////////////////////////////////////////////////////////////////////////////// // Ejemplo de Aplicación de usuario para usar con el Bootloader // // // // www.AquiHayApuntes.com // // // ////////////////////////////////////////////////////////////////////////////////////////////////// #include <18F4550.h> #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN #use delay(clock=48000000) //Archivo de cabecera necesario para trabajar con el Bootloader #include "usb_bootloader.h" void main(void) { while(true){ output_toggle(PIN_B7); delay_ms(1000); } } El archivo .HEX resultado de la compilación es el que le enviaremos al BootLoader a través de la aplicación de escritorio. Nota: Si creamos una aplicación que utilice USB la aplicación debe de incluir su propio “stack” USB. El stack del BootLoader es solo para él, ya que la aplicación de usuario no puede acceder a las regiones de memoria del BootLoader. Ejecución del programa en diferentes sistemas operativos Biblioman www.AquiHayApuntes.com Página 10
  • 11. BootLoader USB Multiplataforma para el PIC18F4550 Y un par de vídeos del BootLoader funcionando: En Windows: http://www.youtube.com/watch?v=L1K5TKjMJCw En Linux: http://www.youtube.com/watch?v=ncU0cdnGwhk Biblioman www.AquiHayApuntes.com Página 11
  • 12. BootLoader USB Multiplataforma para el PIC18F4550 En MAC: Están pendientes las pruebas en este sistema operativo, puedes seguir las actualizaciones de este software en el siguiente hilo del foro de aquihayapuntes.com Cualquier sugerencia, comentario o error que encuentres lo puedes “postear” también en el mismo hilo. Fuentes de Información CCS Custom Computer Services Qt Qestserialport. Librería para acceso al puerto serie. Otra librería acceso al puerto serie. Aplicación AN1310 de Microchip Marcas registradas Las marcas citadas en este artículo así como las imágenes procedentes de capturas de pantallas pertenecen a sus respectivos propietarios su utilización en este artículo es con fines educativos y sin ánimo de lucro. Licencia Autor de este artículo: Biblioman Versión: 1.01 Página Web: http:www.aquihayapuntes.com Email: email.Biblioman@gmail.com Los comentarios y conclusiones hechos en este artículo son personales y no se garantiza la veracidad de los mismos por parte del autor, para una información más amplia y precisa consultar las fuentes citadas. Este artículo esta bajo una licencia Creative Commons: Reconocimiento-No Comercial-Compartir bajo la misma licencia. Biblioman www.AquiHayApuntes.com Página 12