BOOTLOADER EN MICROCONTROLADOR PIC
3.3.2 Introducción al bootloader
Un bootloader o arrancador es un software
que se ejecuta después de un reset de sistema, este firmware ofrece la posibilidad a la plataforma de realizar
diferentes funciones grabadas en diferentes partes de la memoria flash [40].
Un bootloader como grabador, es un firmware
que es capaz de grabar datos en la memoria de programa de un microcontrolador y
ejecutarlos [30]. En otras palabras,
es un programa que guarda programas en la
memoria flash. Su uso no es nuevo,
existen plataformas que lo usan como base para su funcionamiento, como Arduino.
El uso de esta
herramienta de grabado es
útil para este proyecto, ya que el módulo de programación es similar al de un PLC comercial, ambos contando con modo
de programación y ejecución, comunicación serial y grabado secuencial de instrucciones en la
memoria de programa.
3.3.3 Estructura de bootloader para grabado
Para crear un bootloader con la función de grabado hay
que tener en cuenta varias consideraciones que son requeridas para que tenga un
óptimo funcionamiento:
1.
Es
necesario un módulo de comunicación que interactúe con el microcontrolador y la
PC.
2.
Tener
un método para la selección de grabado o ejecución.
3.
Contar
o crear algún programa de PC que
procese y transmita los bytes de un
archivo hexadecimal hacia el PIC.
4.
El microcontrolador
debe tener la posibilidad de escribir, leer y borrar la memoria flash y EEPROM sin necesidad de un grabador convencional.
5.
El firmware debe contar con una protección
de ejecución de grabado y de programa principal.
6.
Contar
con una protección de sobre escritura en el fragmento de memoria flash en donde se almacena el bootloader [39].
Generalmente el bootloader se almacena en la parte baja de
la memoria de programa como se muestra en la Figura 3.10.
Figura 3.10 Estructura de bootloader.
1. Salto
a bootloader: Esta sección contiene el cambio a la página
de memoria donde se localiza el bootloader
y el salto a la dirección donde se almacena.
2. Bootloader: Aquí se almacenan las configuraciones, la
rutina de recepción de bytes, el
grabado de la memoria flash y el
método de selección.
3. Salto
a programa principal: Este
salto es resultado de la decisión tomada en el método de selección y es el
cambio al modo ejecución.
4. Programa
principal: En esta sección
de la memoria se almacena el programa grabado anteriormente por el bootloader. Es el programa principal que
ejecutará el microcontrolador.
Complementando, un cambio de página en la memoria, es un incremento en el registro PCLATH el cual complementa a PCL, en ambos registros se almacena el contador de programa. Ya que PCL tiene un ancho de 8 bits, cada cambio de página se dará cuando este alcance la dirección 0xFF hasta llegar al tope de la memoria flash. Para el PIC16f887, la memoria flash es de 8k, por lo que la última dirección es 0x1FFF [28]. Con esto se concluye que se cuenta con 0x1F o 31 páginas. En la Figura 3.9 se muestra la distribución de registros del PC (Program Counter).
Figura 3.11 Distribución de PC.
El método de
selección de ejecución, es una toma de decisión que ejecuta el PIC para hacer el salto a la rutina de
grabado de la memoria flash o al
programa de usuario. Esta selección puede ser a través de software como lo
realiza Arduino o a través de hardware, lo más usual para esta tarea suele ser
a través de hardware, tomando la decisión si el estado de un pin se encuentra
en uno u otro [30,39]. En este proyecto se implementará a través de hardware
con un interruptor deslizable de dos estados. El diagrama implementado para
este selector se puede observar en el Tema
3.5 en la Figura 3.16.


No hay comentarios:
Publicar un comentario