ELABORACION DE UN BOOTLOADER PARA UN PIC
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 blog 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 programa\PICC\Examples.
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:
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 tenemos 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).
Suscribirse a:
Enviar comentarios (Atom)
He entendido muy bien lo escrito en este artículo. Ahora a implementarlo. Gracias por subir esta información.
ResponderEliminarAlexei.
Which Casino Games Have the Best RTP? - TrickToAction
ResponderEliminarHow to Play Slots — The 텐벳 먹튀 Best Slot Machine RTP For the 승무패 Money — 스포츠토토 매출 샤오미 The highest RTP for 벨라가르텐 the slots 커뮤니티 베스트 in the US. The most popular games available at these casinos. The highest RTP for all slot games.