martes, 11 de mayo de 2021

 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.

 Como se observa, un bootloader se divide en cuatro secciones, las cuales se explicarán siguiendo el orden de las flechas de la figura:

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.

 Los cambios de página cuando el PIC está en funcionamiento son realizados automáticamente, sin embargo, para realizar saltos hacia una página de memoria distinta a la que se encuentra en ejecución en ese momento, es necesario modificar manualmente el valor del registro PCLATH en el código ASM.

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