martes, 26 de febrero de 2013

Bootloader AN1310 - Video

Hola!,

En esta entrada voy a subir mi primer video tutorial que hice para que vean lo fácil que es cargar los programas al PIC teniendo un bootloader.

Este post extiende al anterior: Bootloader - AN1310

Saludos!

PD: Pido disculpas si es que no se entiende pero estuve luchando varias horas con el editor de videos para poder mezclar la captura de pantalla con lo que filmaba desde el celular :)


domingo, 24 de febrero de 2013

Bootloader - AN1310

En esta entrada voy a hablar del Bootloader que utilizo para programar mi PIC16F88.

Un Bootloader es una porción de código estática dentro del pic que se ejecuta antes del código que nosotros programaremos. Cuando se activa permite comunicarse con la PC para realizar actualizaciones del programa que debe ejecutar el pic. Esto permite que el pic se programe a sí mismo sin necesidad de un grabador de pics.

Este código generalmente se encuentra en la parte más alta de la memoria de programa y no debe ser modificado por el programa que nosotros hagamos

¿Cuál es la ventaja de utilizar un bootloader? La ventaja más significativa es que podemos construir un circuito con un código base, soldar todos sus componentes y a medida que desarrollamos el software o descubrimos bugs, mediante el bootloader le actualizamos su firmware.

Como desventaja, hay menos espacio en el chip para nuestro código.

En la siguiente imagen podemos ver de forma simple cómo se ve un pic normal y uno con bootloader:




AN1310


Hay varios Bootloader disponibles para el pic16f88 y hasta podríamos hacernos el propio pero en lugar de eso vamos a utilizar el que nos provee Microchip, el AN1310.

El AN1310 es un Bootloader bastante pesado ya que ocupa unas 1000 palabras de programa (el PIC16F88 tiene 4096 palabras). Está escrito en assembler y debemos compilarlo para cada tipo de pic en particular ya que cambian las posiciones de memoria.

Para descargarlo debemos ir a la siguiente dirección:

Este es el esquema que debe tener el circuito que hagamos para conectar nuestro pic:


Para el PIC 16F88 en lugar +3.3V utilizaremos los +5V que venimos usando en los posts anteriores.

Para explicarlo brevemente, se utilizan las líneas RXD y TXD del puerto serial para cargar los datos al pic mediante la interfaz USART mientras que se utiliza la línea de control RTS para provocar un "Reset" del pic.

Este reset por software es muy útil para que luego de cargar un programa se pueda probar o frenar el mismo. 

Interfaz del programa:


Al conectar nuestro pic mediante el circuito presentado anteriormente al puerto serial de la pc y hacer click en el botón "bootloader Mode" (el cuadrado rojo), y si todo está conectado ok, veremos lo siguiente:


Cargaremos el mismo programa que vengo haciendo en los primeros posts con algunos cambios que mostraré más adelante y haciendo click en write device pasará el programa a nuestro pics pocos segundos:


Luego de cargar el programa hacemos click en el botón "Run application firmware" (el verde) y podremos ver nuestro programa funcionado.

En el manual de este bootloader podremos encontrar muchas más opciones.

Configuración que debe tener nuestro programa para que funcione correctamente:


Para que un programa hecho en MPLABX cargue correctamente utilizando el bootloader debemos modificar las opciones del linker de XC8 para que no sobreescriba los sectores de memoria reservados:


Para el PIC 16F88 las opciones son: --ROM=default,-e40-fff --RAM=default,-7E-7F

Lo que estamos indicándole es: Para la memoria rom usá el espacio default excepto las posiciones entre E40 y FFF. Para la memoria RAM usá el espacio default excepto las posiciones entre 7E y 7F.

Acabo de subir a GitHub el proyecto PIC16F88_03_TestBootLoader con el programa del led intermitente más la configuración anterior y el proyecto PIC16F88_04_Bootloader_20Mhz con la configuración necesaria para compilar el bootloader. Hay que tener en cuenta que el bootloader se compila en assembler así que tienen que tener habilitado el compilador MPASMX que se encuentra en la carpeta de instalación del MPLABX.

Repositorio:

Saludos,


Fuentes:
TinyPIC - http://www.etc.ugal.ro/cchiculita/software/picbootloader.htm
AN1310 - http://ww1.microchip.com/downloads/en/AppNotes/01310a.pdf


martes, 19 de febrero de 2013

Mi repositorio en GitHub

Hola, esta entrada va a ser bastante corta.

Acabo de crear el repositorio "programandopics" en GitHub para poder compartir el código que voy haciendo para así tener todos los ejemplos de pics juntos.

La dirección es:

https://github.com/jgquiroga/programandopics

Ya están subidos los ejemplos para encender un led de forma intermitente.

Saludos!
Related Posts Plugin for WordPress, Blogger...