domingo, 5 de junio de 2011

Herramientas de desarrollo en Microcontroladores PIC en Linux

Cuando estaba en cuarto semestre aprendí por fuerza a programar pics, en realidad debí aprender eso desde segundo semestre pero por deficiencias docentes de la escuela nunca me enseñaron, mucho menos yo intenté aprender algo por mi cuenta aunque si quería. En fin...

Para el proyecto de Adquisición de datos, tanto la materia de teoría como la de laboratorio requerian el uso de pics, yo no sabia programar nada de eso, no tenia idea. Total que un fin de semana tuve un encerron digno de un programador y logre sacar esos proyectos ñ_ñ

 Así acabé... ¬_¬

Tiempo después me pregunté si existian herramientas libres para el desarrollo. Me enteré primeramente de Arduino pero lo descarté dado que hay mucha más documentación en internet sobre el desarrollo con PICs. Otra razón por la que descarte Arduino fue porque ya habia comprado un programador, para ser más exacto compré el Master-Prog, poco después me enteré investigando que ese programador es un clon del PicKit2 de Microchip y que por esa razón si era posible utilizarlo en Linux ya que la misma microchip provee el driver.

Por otra parte... ya tenia el programador pero y los compiladores?
Encontré las versiones libres de lenguaje ensamblador para PICs y lenguaje C. Para programar en ensamblador hago uso de la suite GPUtils, que incluye el compilador, y el linkeador que pasa el codigo asm a lenguaje maquina, es decir el código hex que se graba en el pic. Para programar en C encontré SDCC (Small Device C Compiler). La verdad me gustó mucho ese compilador, muy amigable, fácil de aprender, versátil etc.

Ok ya con esto era suficiente para empezar a desarrollar con PICs y... zas! como rayos sabré si el programa funciona como debe ser antes de implementarlo físicamente... Faltaba el simulador, fui ahí cuando me dí cuenta de que la electrónica está un tanto retrasada en el ámbito del software libre, practicamente no encontré un buen simulador libre, así que tuve que hacer uso del wine para instalar el conocido proteus. Ahora mismo que redacto el post me estoy enterando que existe uno que se llama SPICE que es un simulador de circuitos libre, lo probaré después porque aun no lo instalo ;)

Bueno, si eres un geek warrior del código amante del bloc de notas de windows o el gedit de gnome no tendra problema a la hora de compilar desde consola, pero si eres un desarrollador menos frikieado que prefiere usar IDEs, el entorno más usado para programar micros en linux es PikLab =D

Listo, creo que ya tenemos las herramientas mínimas necesarias para desarrollar, el programador, el compilador y el simulador. El uso de tablillas de prueba es opcional aunque si recomendado, no se fien siempre de los simuladores ;)

Ahora si! A darle! =P
Siendo así... los que ya llevan un tiempo usando Linux (o toda la vida como @erickchias ¬¬ xD) saben que deben buscar los paquetes .deb o .rpm según la distro que usen. En ubuntu es muy fácil instalar todos los paquetes mencionados puesto que ya están en los repositoros, solo se van a la consola y escriben :
sudo aptitude install nombre_paquete

Para otras distros como Fedora, "Fedora en verdecito" (OpenSUSE xD), Debian, Arch, etc debemos descargar los paquetes en caso de que no vinieran en los repositorios, o igual podemos agregar el enlace a los repositorios y listo, no pienso meterme en esto.

Bueno después de haber instalado Piklab, GPUtil, SDCC y el proteus si quieren... el siguiente pasó es instalar el driver del programador, se hace lo mismo. Está será la parte que explicaré, como instalar y usar por línea de comandos el programador D=

Antes de comenzar la instalación es importante mencionar que el Master-Prog solo es un clon del pickit2 en cuanto a hardware puesto que tiene un firmware diferente, el cual fue programado por el que vende el master-prog. Aun así el proveedor nos da la opción de "actualizar" el firmware por el original del pickit2. Eso fue lo que hice, actualizar el firmware para poder usarlo como si de verdad se tratara del programador de microchip, de otra forma no seria posible reconocerlo en linux como el programador.

Instalación
Primero nos vamos a la página de Microchip y descargamos el que dice "PK2CMD V1.20 Linux & Mac OS X Source Code with Makefile". Lo extraemos y nos vamos a la carpeta para instalarlo. Ya saben, en una terminal nos vamos a la carpeta y nos ponemos como root, y le damos make install. Nos mostrará los archivos que se copiaron:

 Muy bien, eso significa que ya podemos hacer uso del programador por línea de comandos =D. Ahora un ejemplo.
Para detectar el programador tecleamos en consola:
pk2cmd -P 
Con esto estamos detectando el programador y el pic que trae en el zócalo, en caso de no traer ningún pic marca el error:



Y efectivamente, no tengo ningún pic en el zócalo. Probaré ahora con el PIC16F628A:



Lo detecto! Muy bien, el programador funciona. Ahora grabaremos un programa .hex en el pic:
Con el comando:
pk2cmd -P -M -Frutadelarchivo.hex
pk2cmd -P -M -F/home/lvcios/Documentos/UPIICSA_LIBRE/msjlcd.hex
 Lo que hice fue grabar un programa en el pic16f628a, el programa consiste en mostrar en una pantalla lcd las palabras "UPIICSA LIBRE":



Como ven, no es díficil manejar el pickit2 mediante consola. De hecho es más fácil que usando una interfaz gráfica. Me faltaron algunos detalles sobre como leer un programa, verificar la escritura y demas cosas, esas cosas las explicaré en otro post pero de todos modos están documentadas en la web.

Fuentes:

PICKit2 en Kubuntu Hardy

Program PICs with a PICkit2 using the command line on Linux - Curuxa