El bootloader del microcontrolador PIC18F45K50 es proporcionado de forma gratuita por el fabricante Microchip en la librería MLA (Microchip Libraries of Applications), dentro de esta librería además del bootloader, se encuentra el programa HIDBootloader, el cual permite realizar la comunicación USB con la PC.
Tanto el bootloader como las aplicaciones, se desarrollan en el software MPLAB X IDE proporcionado gratuitamente por Microchip.
El espacio de memoria que ocupa es de la dirección 0x0000 a la dirección 0x0FFF.
Soporta el desarrollo de aplicaciones en lenguaje Ensamblador y C.
La aplicación del usuario comienza a partir de la dirección de memoria 0x1000,
Las inicialización de variables, se realiza sin variantes, por ejemplo:
AUX1 EQU 0x02
Los vectores de las interrupciones de alta y baja prioridad son re-direccionados desde el bootloader de la dirección de memoria 0x0008 --> 0x1008 y de 0x0018 --> 0x1018.
Soporta re-programación de los bits de configuración del microcontrolador, pero se recomienda hacerlo solo en caso de ser absolutamente necesario.
La edición del bootloader debe realizarse utilizando la versión PRO del compilador XC8, esto debido a que el programa podría ocupar más memoria que el bloque: [0x0000 - 0x0FFF] .
La creación de aplicaciones en lenguaje ensamblador requiere cambios mínimos para poder ser guardada mediante bootloader. Solo es necesario modificar la dirección de memoria en la que comienza el programa, esto se logra con la siguiente instrucción:
ORG 0x1000
En la línea 5 del programa ensamblador del código, se tiene la instrucción ORG 0x1000, que indica el inicio de la aplicación del usuario en la dirección de memoria posterior al bootloader. La programación de los bits de configuración solo se realiza si es necesario.
Puede observarse que la asignación de memoria a las variables, configuración de los puertos, velocidad de operación y evaluación de bits se realiza sin variante alguna.
Para que una aplicación compilada en XC8 sea compatible con el bootloader, es necesario realizar dos modificaciones en las propiedades del proyecto.
Dentro de la interfaz de MPLAB X IDE, click derecho en el nombre del proyecto y luego en propiedades.
La primera modificación a realizar se muestra en la imagen los pasos son los siguientes:
En la sección Categories , ubicar y dar click en la opción XC8 linker.
Dar click en Option categories y en el listado elegir Memory model.
Localizar el apartado ROM ranges y ecribir la siguiente línea:
default,-0-FFF,-1006-1007,-1016-1017
4. Dar click en Apply.
La segunda modificación se muestra en la Imagen, los pasos son los siguientes:
En la sección Categories , ubicar y dar click en la opción XC8 linker.
Dar click en Option categories y en el listado elegir Additional options.
Localizar el apartado Codeoffset y ecribir la siguiente línea:
0x1000
4. Dar click en OK.
El código describe una aplicación escrita en XC8 que enciende un LED de forma intermitente cada segundo. La líbrería necesaria para realizar la compilación es:
xc.h
Si el usuario desea modificar los fusibles de configuración del microcontrolador, se debe agregar la librería correspondiente al modelo del dispositivo, en este caso:
p18f45k50.h
Para conocer más sobre el uso de XC8, consultar el manual de usuario y listado de librerías que se encuentra en la carpeta de instalación del compilador: C:/ProgramFiles (x86)/Microchip/xc8/v1.41/docs.
Guardar una aplicación en el microcontrolador mediante bootloader, hace necesario contar con un programa que pueda realizar esta operación desde la PC. Microchip provee el programa HIDBootloader, de interfaz sencilla que facilita la comunicación USB con el microcontrolador.
Inicialmente el HIDBootloader indicará que no se ha realizado comunicación con el microcontrolador. Establecer la comunicación USB-Bootloader basta con conectar el cable USB al puerto de la PC, previamente conectado al microcontrolador, e ingresar al modo bootloader (Dirección de memoria 0x001C), mediante Hardware (recomendado) o Software. La interfaz indicará si la conexión se ha realizado de forma exitosa.
Modo Bootloader:
BOOT + RESET
Modo Demostración:
DEMO + RESET
Antes de intentar entrar en Modo Bootloader o Modo Demostración es recomendable asegurarse que los pines RB2 y RB1 no estén conectados a señales externas.
Tras presionar RESET el microcontrolador verifica si RB2 o RB1 están habilitados, de ser así, inicia un conteo y si este cumple 3 segundos el microcontrolador salta a la aplicación del ususario, si no hay aplicación o existe un problema en la memoria, el microcontrolador entra en Modo Bootloader.
Establecida la comunicación, dar click en File --> Import Firmware Image, o teclear Ctrl+O. Se abrirá el explorador de Windows donde se debe seleccionar el archivo .hex generado por MPLAB X IDE, este archivo se encuentra en la ruta:
C:.../Proyecto/Proyecto.X/dist/default/production.
La interfaz de usuario indicará si el archivo hexadecimal se ha cargado con éxito, como se muestra en la Imagen. A continuación dar click en Program --> Erase/Program/Verify Device, lo cual iniciara el proceso de borrar, escribir y verificar la memoria del microcontrolador, si se ha completado de forma satisfactoria, la interfaz lo indicará como se muestra en la Imagen.
Finalmente, para que la aplicación comience a funcionar, se hace RESET en el microcontrolador por Hardware o presionando el botón Reset Device en la interfaz de HIDBootloader.
contacto@beedev.com.mx
2022 BeeDev