A continuación enumero algunas de las herramientas que se disponen:
Piklab-> Editor
Mplab->Editor + compiladores (con wine)
Mplabx ->Editor + compiladores
CCS->Editor y compilador de C (con wine), pero también existe una versión sin IDE para Linux.
SDCC->Compilador para Lenguaje C.
GPUtils_>Conjunto de herramientas para pics (Compilador, simulador)
Personalmente yo recomiendo Piklab como IDE para programar, ya que es altamente personalizable y es compatible con casi todos los lenguajes y compiladores que se usan con PIC, y como Lenguaje/Compilador, pues con el que uno se sienta mas a gusto.
Para programar la memoria flash del PIC en Linux, existen muchas herramientas de Hardware/Software, prácticamente las mismas que en Windows, para el caso del Pickit2, se usa el paquete PK2CMD, coloco un link con un tutorial del blog desdelinux, de como usar PK2CMD:
http://blog.desdelinux.net/como-grabar-microcontroladores-pic-desde-linux-pk2cmd/
Para Windows casi todos los fabricantes de compiladores para PIC incluyen su propio bootloader, por ejemplo Mikroelectronica y CCS, en el caso de Linux una buena opción es el "Tiny Bootloader for Linux" de Ferezvi que es una versión de "Tiny PIC bootloader" de Claudiu Chiculita que ya existía para Windows.
Ahora describiré como usar el Tiny Bootloader en Linux, antes de ello debemos disponer de un circuito con PIC y un programador (solo se usa una vez para grabar el bootloader)
1) Descargar y descomprimir : http://www.etc.ugal.ro/cchiculita/software/tinybld198.zip
2) Acceder a la carpeta "picsource", en ella encontraremos el código fuente en assembler y los archivos "HEX" para diferentes combinaciones de PIC/Frecuencia de Reloj, si nuestro caso coincide con alguno de los archivos listados saltar al paso 7), de no ser el caso, toca modificar alguno de los archivos "ASM" que resulte mas compatible, en mi caso era un PIC16f877a @ 12MHZ, que si observamos las imágenes, no se encuentra listado.
![]() |
Lista de archivos para la serie 16f |
![]() |
Lista de archivos para la serie 18f |
4) Instalar MPLAB, se puede descargar de aquí:
http://download.informer.com/win-1192947495-b5455fc8-5c3f1fdb/mplab_ide_8_91.zip, se ejecuta usando wine.
3) Abrir y modificar el código fuente a nuestra necesidad (en caso de no estar el hex disponible en las listas de arriba), para mi caso (16f877a @ 12MHZ) yo usare el archivo "tinybld16f.asm", en este archivo debemos modificar las siguientes lineas:
Linea 2 (Escoger PIC): LIST P=16F877A, F=INHX8M
Linea 3 (Frecuencia de Reloj):xtal EQU 12000000
Linea 4 (Baud Rate): baud EQU 9600
Modificar linea de código Fuses de configuración:
__CONFIG _HS_OSC & _CP_OFF & _WRT_OFF & _BODEN_ON & _PWRTE_ON & _LVP_OFF & _DEBUG_OFF
Añadir la directiva include (de acuerdo al PIC):
#include "p16f877A.inc"
4) Copiar los siguientes archivos en una carpeta nueva, podemos nombrarla "Bootloader":
bankswitch.inc
icdpictypes.inc
spbrgselect.inc
Estos archivos también se encuentran en la carpeta "picsources".
tinybld16f.asm (Con las modificaciones hechas)
5) Crear un proyecto en MPLAB de acuerdo al PIC que se usara, usar la carpeta Bootloader y añadir todos los archivos que ella contiene al proyecto.
6) Compilar el proyecto, y si no hay errores se generara un archivo "tinybld16f.hex"
7) Grabar el archivo "tinybld16f.hex" en el pic, usando cualquier grabador, en mi caso tengo un pickit2 con pk2cmd.
8) Instalar el bootloader para Linux, en el PC.
http://sourceforge.net/projects/tinybldlin/files/tinybldlin/tinybldlin-0.6/
En sourceforge disponemos de archivos de instalación, por código fuente y por paquete .deb.
Hasta aquí ya tenemos el bootloader grabado en el PIC y podemos montar el pic en nuestro circuito y proceder a probar el bootloader.
Para ello después de instalar, abrimos TinyPIC bootloader for GNU/Linux, conectamos y energizamos nuestro circuito.
Con el boton "Browse ubicamos nuestro hex"
Con el boton "check pic" verificamos que el bootloader y el pic son reconocidos
Con el boton "write flash" escribimos el hex en el pic.
Tener en cuenta que inmediatamente antes de pulsar en "check PIC" o en "write flash" se debe inducir un reset en el PIC.
Tener en cuenta también que al escribir nuestro programa la frecuencia de reloj es la misma a la que trabaja el bootloader, la velocidad de la comunicación serial si puede variar.
![]() | ||
Pulsando "Check PIC" |
En la siguiente captura se muestra el resultado de grabar un archivo al PIC, por medio del Bootloader.
Por ahora es todo, como ventaja del bootloader debo decir que facilita bastante el proceso de depuración y evita el uso de un grabador.
Saludos y hasta una próxima entrada.