sábado, 4 de enero de 2014

Gestor de arranque FLASH para dispositivos PIC16 y PIC18

El uso de un bootloder en los PIC posibilita una programación mas fácil y sin necesidad de un programador para grabar los programas  cada vez que se modifique alguna linea.
Solo debe conectarse al puerto de la computadora y transmitirse las instrucciones del puerto COM de la computadora al USART del PIC a través de un circuito RS232 como funciona este gestor de arranque que nos permite que el propio microcontrolador se programe a si mismo con las intrucciones del programa que deseamos correr en el PIC, bueno aquí la información proporcionada por Microchip y que se ha sido traducido.


Esto es traducido del documento de Microchip AN851:

INTRODUCCIÓN

Entre las muchas características integradas en dispositivos microcontroladores FLASH de Microchip es la capacidad mejorada de la memoria del programa de auto-programarse. Esta es una característica muy útil que se ha incluido deliberadamente para dar al usuario la capacidad para realizar operaciones de sector de arranque "Bootloading".
Los dispositivos como el PIC18F452 están diseñados, con un designado "Bloque de arranque", que es una pequeña sección de memoria de  programa protegida asignada específicamente para el grupo de instrucciones específicas del gestor de arranque (bootload firmware).
Esta nota de aplicación demuestra una muy poderosa implementación del gestor de arranque para el PIC16F87XA y la familia de microcontroladores PIC18F. La codificación para las dos familias de dispositivos es ligeramente diferente, sin embargo, la funcionalidad es esencialmente la misma. Los objetivos de esta aplicación subrayan un rendimiento de funcionalidad máxima, mientras el  requerimiento de espacio de código es mínimo.

FIRMWARE

Funcionamiento básico

La figura 1 resume el diseño esencial del firmware, en el gestor de arranque. Los datos se reciben a través del módulo USART,  configurado en modo asíncrono para la compatibilidad con RS-232 , y se hace pasar a través del modulo transmisor-receptor. El sistema filtra y analiza los datos, y almacena la información en una memoria intermedia de datos de la RAM. El intérprete de comandos evalúa la información del comando
en la memoria para determinar que se debe hacer (es decir, ¿Son los datos a escribir en una unidad de memoria? ¿Es la lectura de datos desde una unidad de memoria? ¿El firmware necesita la versión para ser leído?). Una vez que la operación es realizada, los datos se pasan de nuevo a la unidad transmisora / receptora para ser transmitida de vuelta a la fuente, así se cierra el bucle de control de flujo por programa.


COMUNICACIONES
El módulo USART del microcontrolador se utiliza para
recibir y transmitir datos,  está configurado como un UART (Unidad Asincona Receptora Transmisora)
para ser compatible con la comunicaciones RS-232  el
dispositivo puede ser configurado en una aplicación de carga en el arranque del
sistema a través de su interfaz de serie estándar. los
siguientes parámetros de comunicación son utilizados:
• 8 bits de datos
• Sin paridad
• 1 bit de parada
El ajuste de la velocidad de transmisión es variable dependiendo de la
aplicación. Velocidad en Baudios se discute más adelante.


EL BUFER DE RECEPCION-TRANSMISION
Todos los datos se mueven a través de un búfer (referido como el Buffer Receptor-Transmisor). El búfer tiene un máximo de 255 bytes de tamaño. Esta es la longitud máxima de paquetes soportada por el protocolo. Sin embargo, algunos dispositivos no admiten el tamaño de paquetes tan grande debido a la limitaciones de su memoria memoria.
La Figura 2 muestra un ejemplo de la asignación de la memoria intermedia en el PIC18F452.
Una característica útil de la memoria intermedia de recepción / transmisión es que mantiene su memoria entre los paquetes, permitiendo una muy rápida repetición y replica  de las operaciones. Es decir, si un paquete vacío se envía, los datos almacenados actualmente en la memoria serán ejecutados como se acaban de recibir.


INTERPRETE DE COMANDOS
El intérprete de comandos decodifica y ejecuta diez diferentes comandos, siete comandos de base y tres
comandos especiales. Una lista completa de los comandos es proporcionada en el Apéndice A. Los comandos de basicos permiten leer, escribir y borrar las operaciones en todos los tipos de memoria no volátil. Los otros tres comandos son para operaciones especiales, como repetir el último comando, replicar los datos, y restablecer el dispositivo.
Tenga en cuenta que los dispositivos PIC18F tienen mayor acceso y control de la memoria que los dispositivos PIC16F. Por ejemplo, los dispositivos PIC16F no tienen acceso a la memoria de configuración, por lo que no utilizan los comandos deconfiguración. Por lo tanto, no todas las instrucciones son disponible en el gestor de arranque del PIC16F.


Organización de la memoria

USO DE LA MEMORIA PROGRAMA
Actualmente, los dispositivos PIC18F reservan los primeros 512 bytes de memoria del programa para el bloque de arranque. Futuros dispositivos pueden expandir esto, dependiendo de los requisitos de aplicación
para estos dispositivos. Sin embargo, este gestor de arranque es diseñado para ocupar el bloque de arranque como esta designado actualmente, de 512 bytes (o 256 palabras) de memoria. La figura 3 muestra
un mapa de memoria del PIC18F452. La la zona de arranque puede ser de código protegido para evitar la sobre escritura accidental del programa de arranque.
Los microcontroladores PIC16F87XA mejorados están diseñados para utilizar las primeras 256 palabras de memoria de programa. La figura 4
muestra el mapa de memoria del PIC16F877A. al igual que el
PIC18F452 y otros dispositivos PIC18F, la la zona de arranque
pueden protegerse contra escritura para evitar el borrado accidental del programa de arranque.

REASIGNAR VECTORES
Al reinicio de hardware, los vectores de interrupción se encuentran dentro de la zona de arranque y no puede editarse si el bloque es protegido,  se reasignan a través de software a la ubicación paralela más cercana fuera del bloque de arranque.
La reasignación es simplemente una ramificación de las interrupciones, así  en el PIC18F los usuarios deben tener en cuenta un manejo adicional de 2 ciclos de instrucción para manejar las interrupciones. Al REINICIO hay algunas condiciones que revisar en el arranque, por lo que la latencia de REINICIO es
un 10 ciclos de instrucción adicionales (como se ve en el ejemplo de código fuente).
Para dispositivos PIC16F87XA, la latencia de interrupción es de ciclos adicionales 9 de instrucción en la parte superior de las 3 a 4 que hay normalmente, y la latencia de REINICIO es de 18 ciclos de instrucción. Esta latencia adicional proviene de ahorro datos de contexto de dispositivo de memoria compartida. El código de ejemplo  utiliza ubicaciones 7DH, 7EH y 7Fh para almacenar el
PCLATH, el estado y los registros W, respectivamente. El código fuente se puede cambiar, pero los datos guardados deben permanecer en el área de memoria compartida.

USO DE LA MEMORIA DE DATOS
La última ubicación de datos en la memoria del dispositivo (Figura 5) se reserva como a modo de bandera no volátil del arranque.
Esta ubicación contiene FFh por defecto, lo que indica el modo de arranque. Cualquier otro valor en esta ubicación indica el modo de ejecución normal.

Protocolo de Comunicación

El gestor de arranque emplea una comunicación básica de protocolo que es robusto, fácil de usar, y fácil de
aplicar.

FORMATO DE PAQUETES
Todos los datos que se transmiten hacia o desde el dispositivo siguen el formato del paquete básico:
<STX> <STX> [<DATA> <DATA> ...] <CHKSUM> <ETX>
donde cada <...> representa un byte y [...] representa el campo de datos.
El inicio de un paquete se indica con dos caracteres de control 'Inicio del texto'(<STX>), y se termina con un solo carácter de control'Final del texto' (<ETX>). El último byte antes de <ETX> es el complemento a dos del byte menos significativo de suma de todos los bytes de datos.
El campo de datos está limitada a 255 bytes de datos. Si más bytes son recibidos, entonces el paquete es ignorado hasta el próximo par de  <STX> que se reciba.

LOS CARACTERES DE CONTROL
Hay tres caracteres de control que tienen significado especial. Dos de ellos, <STX> y <ETX>, se mencionaron ya anteriormente. El último carácter no  mostrado es el "Data
Enlace Escape ', <DLE>. El Cuadro 1 presenta un resumen de los tres caracteres de control.


Incompleto continuo despues...

No hay comentarios:

Publicar un comentario