Sei sulla pagina 1di 12

BootLoader para 18F2550

(Entrenador NeoTeo)
ELECTRNICA
etiquetas: tutoriales
http://www.neoteo.com/19871-bootloader-para-18f2550-entrenador-neoteo/

Un BootLoader es un pequeo conjunto de instrucciones que forman un programa y se graban, en


este caso en un microcontrolador, para permitir un posterior manejo y actualizacin de sus
programas internos (firmware) sin necesidad de utilizar programadores (hardware) especficos. Es
decir, utilizas un programador (o quemador) de microcontroladores una nica vez para cargarle el
mencionadoBootLoader al microcontrolador y luego te bastar con una sencilla aplicacin en tu
ordenador para cambiar a tu antojo el funcionamiento de tus sistemas. Todo mediante una vulgar
conexin al puerto USB. Las plataformas modernas que se asemejan a Arduino (incluida sta)
utilizan este sistema de programacin y NeoTeo no poda quedar afuera. Ahora la programacin
est al alcance de todos.
Es imposible resumir en un sumario de pocas palabras las infinitas ventajas que posee un
BootLoader. Slo debes imaginarte la situacin: tu hardware, tu ordenador y un cable de conexin
USB entre ambos. Eso es todo lo que necesitas para transformar al entrenador NeoTeo en
un voltmetro, en unvideojuego, en un operador de servomotores y en miles de cosas ms. A pesar
de que el conector ICSP es una de las herramientas maestras de las que dispone una persona que
se dedica a experimentar con microcontroladores, la utilizacin de un BootLoader te ahorra el uso
de un hardware adicional de trabajo como es el programador (o quemador).

Un ejemplo de las miles de ventajas que puedes tener sera este: T le has vendido a Max una
aplicacin y luego de un tiempo de uso l te expresa su lamento y pesar sobre algunas deficiencias
del producto, mientras te comenta que deseara que hagas algunas mejoras para lograr un
funcionamiento ptimo y acorde a sus necesidades. Qu deberas hacer en esa
situacin? Pedirle a Max que desarme todo el equipo y te lo enve? Imposible. Viajar t de un
pas a otro para cambiar dos lneas de programa, conectar el hardware programador y demorar
menos de cinco minutos en resolver el problema? De locos! En cambio, si el sistema inicial posee
la sencilla carga previa de unBootLoader, le envas a Max un pequeo archivo por correo
electrnico y l mismo podr actualizar la versin de firmware con un elemental cable USB
conectado a su ordenador. As trabajan Arduino, Amicus y todas las plataformas similares que
compiten en la web. As de sencillo y tentador. Quieres verlo? Observa como se cambia de una
aplicacin a otra diferente en apenas algunos segundos:
El principio de funcionamiento de un BootLoader es fcil de comprender. Se trata de un pequeo
software, que se instala en un microcontrolador y ocupa un pequeo espacio de memoria dentro
de l. Su nica funcionalidad es servir de anfitrin para permitir la programacin o reprogramacin del microcontrolador sin necesidad de un hardware especfico, a veces costoso y que
no es sencillo de armar ni utilizar. Toda la tarea de reinstalar un nuevo software para lograr
diferentes trabajos por parte del microcontrolador, o al menos una actualizacin del firmware ya
existente y funcional, se resume a un cable que une el microcontrolador con el ordenador. Puede
ser una conexin por puerto serie (COM) o, lo que es mejor an y que se utiliza en la actualidad, por
puerto USB. Aqu tienes otro ejemplo de cmo funciona un sistema de carga con BootLoader (carga
un programa que enciende el LED amarillo)
El resto del trabajo lo realiza una aplicacin instalada en el ordenador que ser la encargada
dedetectar la peticin de grabacin desde el microcontrolador y cargarle un nuevo programa o,
como mencionamos antes, actualizar el existente. Si el microcontrolador no realiza un llamado de
solicitud anunciando una conexin para una grabacin de datos, el ordenador interpretar la
conexin como un hecho natural y atender a la aplicacin existente y funcional dentro del
microcontrolador trabajando en conjunto con este dispositivo y realizando las operaciones que la
aplicacin requiera. Por ejemplo, el Voltmetro NeoTeo. Tambin puede suceder que no necesites
conectar nunca tu aplicacin a un ordenador para que realice su trabajo y cumpla una tarea.

Por ejemplo: algunos de los carteles de LEDs que indican el recorrido de un transporte de pasajeros.
Ese es un claro ejemplo donde el desarrollo no se utiliza enlazado a un ordenador. El empleado
que se encarga de diagramar los viajes conecta un ordenador porttil mediante un cable USB,
ejecuta una aplicacin y con un simple clic del ratn cambia los textos del cartel indicador.
Otros sistemas ms modernos y sofisticados le transmiten al cartel la actualizacin de informacin
mediante un enlace Wi-Fi. Y cmo cargan la informacin recibida dentro del microcontrolador?
Mediante el BootLoader anfitrin que el microcontrolador ya posee en su interior.
La Ley De Moore al acecho
Adems, el camino irreversible de la miniaturizacin y la alta integracin de los semiconductores nos
entregan da a da dispositivos ms pequeos y en encapsulados (package) muy difciles de
manipular. La mayora de los microcontroladores poderosos del mercado comienzan a aparecer en
encapsulados muy pequeos. Esto significa que retirarlos de una placa, colocarlos en un
programador y luego restituirlos al PCB donde cumplen su funcin es un trabajo imposible de realizar
sin destruir al menos una docena de pines y/o calcinar el dispositivo y/o las vas del PCB. Por lo
tanto, amigos, los tiempos de gloria del 16F84A, del 16F628A y hasta del mismo 18F2550 (que
utilizamos en nuestra placa de entrenamiento) estn llegando a su final. Quizs la visin de quien
escribe estas lneas pueda parecer algo pesimista. Pero si se detienen a observar la mayora de (por
no decir todas) las placas de entrenamiento que comercializan las marcas lderes en
microcontroladores, notarn que poseen versiones de montaje superficial para sus MCU
(microcontroladores) y los medios de programacin son el ICSP (con hardware programador) y por
medio de BootLoaders. Estos ltimos pueden ser por puerto serie o por puerto USB.
Para muestra, basta el botn que acabas de ver: MPLAB Starter Kit for PIC 18F MCU (que sera el
primer escaln para comenzar a trabajar en el mundo de Microchip MPLAB utilizando los PIC de
la lnea 18F) trabaja mediante el uso de BootLoaders. Toda la intervencin con el hardware se limita
a conectar un cable USB y a cargar nuestros programas. El soldador (cautn) ya comienza a
desaparecer de la mesa de trabajo del desarrollador. En su lugar comienzan a abundar
otras herramientas virtualesque ayudarn a reducir en forma notoria muchos mtodos de prueba y
error utilizados hasta ahora. Ya no bastar con que el sistema funcione en el simulador dentro del
ordenador sino que tambin deber hacerlo en la placa de entrenamiento. Pues entonces si hacia all
vamos, adaptemos nuestra placa de entrenamiento NeoTeo con el 18F2550 e ingresemos al
futuro nosotros tambin.
Una solucin de cdigo abierto
Microchip posee herramientas gratuitas que se pueden descargar desde su sitio web y nos pueden
ayudar a desarrollar aplicaciones con un mnimo de inversin y con la posibilidad de adquirir un
aprendizaje muy importante. Dentro de las posibilidades que ofrece el sitio para trabajar
conBootLoaders encontramos una aplicacin dedicada a la familia del PIC 18F4550 mediante la
conectividad USB que este microcontrolador brinda. Sobre esta plataforma basaremos nuestro
trabajoadaptando el programa base que Microchip ofrece para satisfacer nuestras necesidades
de uso dentro de la placa de entrenamiento NeoTeo.

Por ejemplo: en el BootLoader ofrecido (para el 18F4550) se utiliza el puerto D para colocar un LED
indicador de estado. El 18F2550 no posee puerto D y en consecuencia tendremos que efectuar
alteraciones all. Por otro lado, un pulsador ubicado en el pin 4 del puerto B (en el desarrollo de
Microchip para el 18F4550) nos resulta incmodo ya que el puerto B de nuestro entrenador estara
dedicado a un LCD alfanumrico y al bus I2C. Esta sera entonces otra variante a realizar sobre el
programa original. Dicho nuevamente: partiendo de un sistema base reformaremos
el BootLoaderoriginal para migrar desde un 18F4550 a un 18F2550. Atencin!: Esto no termina
aqu. Avanza a la siguiente pgina y comencemos a trabajar. Manos a la obra!

Dentro de las cosas necesarias para desarrollar la aplicacin de este artculo encontramos el
software que utilizaremos para armar nuestro BootLoader a medida. Para esto necesitamos tener
instalado en nuestro ordenador el entorno de trabajo MPLAB en su ltima versin (8.50 al momento
de escribir este artculo), el compilador MPLAB C para PIC18 (que en realidad es una versin de
evaluacin por 60 das que puede desinstalarse y reinstalarse en forma indefinida) y por ltimo
necesitaremos la libreraMicrochip Applications Library donde encontraremos una cantidad muy
generosa de material para desarrollar programas y aplicaciones. Por supuesto, dentro de este
paquete se halla la aplicacin (USB Framework) que utilizaremos en este artculo, esto es, el
conjunto de archivos BootLoader para diversas familias de microcontroladores, entre ellas, la que
utiliza nuestra placa entrenadora. Un detalle a destacar en este punto es que creemos que no es
necesario detallar un tutorial con todos los pasos para que instales estos programas. Lo fundamental
que debes saber es que son gratuitos y que si tienes alguna duda durante el proceso, la instalacin
completa de todas las opciones presentadas es la mejor alternativa.

Comienza el trabajo de reforma


Una vez instaladas las aplicaciones, encontraremos dentro de nuestro ordenador y en la
rutaC:Microchip SolutionsUSB Device BootloadersHID BootloaderHID Bootloader Firmware for
PIC18 Non J Devices el cdigo fuente a utilizar para nuestro propsito. Pero antes debemos
saber qu vamos a reformar y por qu lo haremos. En nuestro caso particular, realizaremos una
adaptacin del hardware y software original para que se transforme en un instrumento compatible
con nuestra placa entrenadora. Cabe aclarar que el conjunto de archivos encontrados en la ruta
indicada estn preparados con las placas de entrenamiento de Microchip, por lo tanto nos
cruzaremos con mltiples asignaciones y reservas de hardware que para nuestro objetivo son
innecesarias. Por ejemplo, dentro de uno de los ficheros a reformar existen pines del PIC18F4550
asignados a conexiones con el bus SPI, entre tantos pines reservados que para nuestro objetivo
primario no tienen utilidad. En otros casos, pines reservados del puerto D no existen dentro del
PIC18F2550.
El Hardware
El programa bsico que viene para trabajar con el 18F4550 posee un interruptor en el pin 4 del
puerto B que se utiliza para indicarle a la placa de entrenamiento que deseamos iniciar el sistema
de carga de una nueva aplicacin al PIC mediante el uso del BootLoader. En nuestra aplicacin
(nuestra entrenadora) el puerto B estara reservado para la conexin de un display LCD y para
el bus de datos I2C, por lo que sera apropiado utilizar otros pines libres para colocar este
pulsador. El pin 2 del puerto C es una buena opcin para este propsito. Por otro lado, el LED que

indica la entrada en funcionamiento del PIC en el modo de carga de una nueva aplicacin se ubica
en el pin 1 del puerto D en los archivos que corresponden al 18F4550.

Nuestro PIC no posee puerto D; por lo tanto no tenemos otra opcin que cambiar la ubicacin de
este indicador luminoso hacia el pin 1 del puerto C. De este modo, podemos notar y observar que
necesitamos construir una pequea placa con un pulsador y un par de LEDs para adaptar nuestra
entrenadora al trabajo con un sistema de pre-carga o BootLoader. El aspecto del circuito y la placa
es muy sencillo: se destaca el pulsador para activar el modo BootLoader y los LEDs indicadores de
estado. Gracias al uso de conectores hembra utilizados en la placa entrenadora NeoTeo, es muy
simple organizar un pequeo circuito impreso para que el sistema final resulte cmodo, agradable y
eficaz. Por lo tanto, queda claro entonces que hemos utilizado los pines RC0, RC1, RC2 y GND para
conectar la nueva placa en nuestra entrenadora. Estas asignaciones de pines debemos trasladarlas
al Software en el prximo paso .

Nuestra entrenadora con la flamante placa instalada

La misma situacin pero ensayando con un LCD

El turno del Software

Slo un archivo del cdigo ejemplo que ofrece Microchip deber ser cambiado por las razones
mencionadas en los textos anteriores. Este archivo se encuentra en la ruta de acceso que
mencionamos antes y es io_cfg.h. El nombre del archivo es muy explcito en su funcin: io_cfg es
donde se configuran los pines de entrada y salida del proyecto. Todos los dems archivos
involucrados en el directorio son compatibles para una gran cantidad de microcontroladores PIC 18F,
entre ellos el que utiliza nuestra placa entrenadora, el 18F2550. Los modelos soportados
son PIC18F4553/4458/2553/2458, PIC18F4550/4455/2550/2455, PIC18F4450/2450 y
PIC18F14K50/13K50. Por lo tanto, cualquiera de estos microcontroladores que utilice nuestro
proyecto final podr funcionar con este programa BootLoader siempre que tengamos en cuenta
una correcta distribucin de pines de acuerdo a nuestra necesidad de aplicacin en el Hardware.
Hay muchas definiciones (#define) dentro del archivo indicado que escapan del uso sencillo y
didctico que deseamos brindar en este artculo. Por ejemplo, las utilizadas para el uso de un
potencimetro (restato, resistor variable) o de tarjetas FLASH de almacenamiento masivo de datos
(SD / MMC). Todas esas definiciones y asignacin de pines fueron comentadas ya que slo estamos
detrs de un objetivo simple: Cargar un archivo BootLoader y manejar nuestro desarrollo libre
de programadores de PICs nicamente con un cable USB. Esto es ideal para actualizaciones de
firmware en tareas de campo. Las ampliaciones que la experiencia nos exija pueden esperar.
Primero debemos comprender bien qu estamos haciendo y el potencial que tiene este desarrollo de
manejar las actualizaciones de software de la manera ms sencilla a la que se pueda acceder con
elementos de uso diario. Este razonamiento de comprensin y familiarizacin con las herramientas
es vlido tanto para nosotros como para nuestros clientes o aquellas personas a las que les
brindamos nuestros desarrollos.
Resumiendo los cambios de Software: Slo un archivo hay que reformar: io_cfg.h. Si utilizas la
placa entrenadora NeoTeo, te dars cuenta de manera muy fcil cmo y dnde hemos realizado la
reforma si husmeas en el archivo indicado. Notars muchas lneas comentadas con la clsica doble
barra inclinada (//).
Resumiendo el Hardware: Una elemental placa pequea que puedes realizar en pocas horas
utilizando elementos de uso habitual en cualquier desarrollo. Resistores un pulsador, un
capacitor, un impreso sencillo y algunos pines de conexin.

Comencemos
Esto es el inicio del trabajo con BootLoaders en las aplicaciones ofrecidas a terceros. Como en todo
orden de la vida, existe gente convencida de que se trata de lo mejor en actualizacin de Firmware
a distancia (con posibilidad de ejecucin por el mismo cliente) y otros insisten con que la tcnica
del ICSP(In Circuit Serial Program) es la mejor ya que es uno mismo el que supervisa el trabajo de
actualizacin y puede solucionar cualquier accidente que por error pueda generar el cliente. Como
mencionamos ms arriba, Microchip ofrece en la actualidad sistemas que son capaces de
conectarse a la web de manera automtica y actualizar su firmware sin que el usuario se entere.
Es decir, hay muchos mtodos y formas de trabajar con pre-cargadores de archivos
o BootLoaders.Nosotros te traemos el inicio de cmo lograr resultados exitosos desde el primer
intento. Es por esto que te ofrecemos al final del artculo dos archivos donde encontrars todo lo
necesario para comenzar. En el fichero Archivos_Unicos encontrars el HEX que debes grabar
en el PIC con un grabador convencional de PICs (quemador = PicKit2/Pickit3/ICD2/ICD3/GTP-USB
+, etc) y al finalizar su grabacin conectars tu desarrollo (o nuestra placa entrenadora) a cualquier
puerto USB de tu ordenador para que el trabajo sea identificado como una interfaz HID. Importante:
Para que esta operacin se realice con xito, debers insertar el conector USB manteniendo pulsado
el botn SW (BootLoader). La imagen obtenida muestra el comienzo del proceso mientras
el BootLoader se instala en la raz de Dispositivos de Interfaz de Usuario (HID)

Una vez conectado el sistema con el BootLoader pre-grabado en el PIC, detectado por el ordenador,
instalado y listo para ser utilizado, los LEDs comenzarn a encender en forma alternada. Esta es
la seal de que el BootLoader est listo para recibir el programa principal de trabajo. Ese ser el
momento en que todo estar preparado para iniciar el funcionamiento del pequeo software que
utilizars para cargar los resultados de tus "firmwares" en el PIC con slo usar un cable USB. Un
software gratuito, muy sencillo de utilizar y muy intuitivo (a pesar de estar desarrollado en ingls)
elHIDBootLoader es un programa que podrs ofrecer a terceros para que ellos mismos actualicen el
firmware del desarrollo que le has vendido, entregado, regalado o prestado (este programa est
includo en los archivos que te ofrecemos para descargar). En primera instancia, el programa
detectar la conexin al dispositivo y su estado de BootLoader iniciado presentando una pantalla
como la siguiente, donde el botn para abrir una fila del tipo HEX se habilita.

Lo que contina es muy fcil de intuir. Pulsando el botn Open Hex File acceders al archivo a
cargar dentro del PIC para programarlo con la real aplicacin del desarrollo, por ejemplo, con el
programa para hacer funcionar un termmetro I2C o un reloj en tiempo real RTC. El paso siguiente
es programar el PIC con el botn Program / Verify y all comenzar el proceso de grabacin.
Primero se borrar cualquier dato contenido en la zona a programar dentro del PIC y una vez limpios

los registros de memoria se dar paso a la programacin del dispositivo. Por ltimo, el programa
efecta un control y verificacin de las tareas realizadas emitiendo un mensaje satisfactorio
cuando todo transcurri con normalidad.

Adems de este fichero HEX pre-armado por nosotros y separado en un archivo aparte para que no
te confundas (Archivos_Unicos), en el fichero BOOTLOADER_NEOTEO est todo lo necesario
para trabajar y modificar este desarrollo, es decir, todo lo que MPLAB necesita para que puedas
reformar la aplicacin a tu medida. Claro est, los archivos anteriores tambin estn all. Ahora slo
restan conceptos que t sers el nico capacitado para resolver. Saber cundo te encuentras frente
a una aplicacin que necesita actualizaciones con tu presencia o no. Saber cundo se justifica
utilizar unBootLoader o cundo un conector ICSP es suficiente. Luego de toda esta explicacin con
palabras y grficos, deseas ver todo lo explicado en un video para que no te queden dudas?
Aqu lo tienes.
Fascinante verdad? Pues esto no termina aqu, contina hasta la prxima pgina y entrate de los
secretos que nadie cuenta y son los que hacen posible que el sistema funcione a la
perfeccin. Avanza hacia la prxima pgina.

Tal como mencionamos al principio, el BootLoader es un programa anfitrin que reside dentro del
microcontrolador y se utiliza para facilitar la programacin de estos dispositivos. A pesar de ser un
programa pequeo, ocupa espacio de memoria interna en el microcontrolador que no podr
sobrescribirse ya que de ese modo estaramos pisoteando y arruinando las lneas de cdigo del
programa BootLoader con nuestro cdigo de aplicacin. Para evitar esta catstrofe debemos
reservar un espacio para que el BootLoader se acomode dentro del microcontrolador y slo sea
activado mediante el pulsador (SW) dedicado a este propsito. Este pequeo programa anfitrin que
se desarrolla con esta aplicacin se ubicar en la parte ms baja del mapa de memoria del PIC
ocupando hasta la direccin 0xFFF. Por lo tanto todos los programas que intentemos
cargar debern grabarse desde la posicin 0x1000 en adelante. De lo contrario, romperemos el
programa BootLoadery el sistema desarrollado no funcionar.
Cmo se realiza esto? El los programas escritos en lenguaje ASM se utilizan las directivas ORG
para indicar el posicionamiento de los vectores de inicio de programas. En C o en C18 tambin se
hacen llamadas a lenguaje ASM para mapear los vectores de RESET, es decir, a partir de qu
posicin dememoria comenzar a funcionar el PIC si el botn SW (BootLoader) no es activado al
momento de conectar el desarrollo al puerto USB. En el caso de cualquier lenguaje BASIC bastar
con una declaracin ubicada en una nica lnea. Por ejemplo en Proton sera DECLARE
PROTON_START_ADDRESS = $1000
Hay sistemas que utilizan menos espacio de memoria interna para el programa BootLoader, en los
que el vector de reset de una aplicacin se ubica en 0x0800. Como habrs observado siempre,
nuestra intencin es guiarte, ayudarte y recorrer juntos el camino que resulte ms sencillo y cmodo
para el inicio. MPLAB posee una herramienta para visualizar la cantidad de memoria ocupada por el
programa y nuestro BootLoader (ejemplo extrado de la librera de Microchip) ofrece la siguiente
imagen entrando en la vista de este parmetro.

Resumen final
Antes de lanzarnos a disear aplicaciones con un sistema de BootLoader debemos tener en claro si
la aplicacin justifica su uso. La experiencia nos dir si es necesario o no. Vender un sistema
de letreros luminosos a una empresa de vehculos de transporte de larga distancia con sede en
Estambul merece utilizar este sistema de actualizacin a distancia realizado por algn tcnico local o
directivo de la empresa. Construir una pequea central que controle la temperatura y la humedad de
nuestra habitacin no justifica este trabajo ya que el ICSP nos soluciona todo el problema en
cuestin de minutos. Es decir, a partir de ahora y con las herramientas en la mano, el que sabe y
decide eres t.
Por ltimo, y como es lgico entender, el pulsador y los LEDs indicadores de funcionamiento
debern estar integrados en tu construccin final de manera permanente si deseas utilizar el
mtodo de pre-cargador (BootLoader). RC2 (para nuestra aplicacin) siempre debe estar polarizada
en un estado alto al encender el sistema o al conectarlo al puerto USB. Caso contrario, el programa
interpretar un estado bajo y de ese modo creer que queremos cargar un nuevo programa. Por lo
tanto, esto no es algo que se pueda utilizar slo para cargar el programa al microcontrolador sino
que es parte del Hardware final y definitivo. En cambio, los pines que operan
los LEDs indicadores pueden ser reutilizados dentro del Hardware para otras funciones. Comparte
tus experiencias, mejora nuestro desarrollo y cuntanos tus resultados. Cerramos con la frase que
siempre te decimos: t y tu ingenio sabrn hacerlo mejor.
HEX y CargadorDownload
Proyecto completoDownload
MPLABPgina de Microchip
C18Pgina de Microchip
Libreras completasPgina de Microchip

Potrebbero piacerti anche