viernes, 26 de junio de 2009

Programando pic's desde linux. (Intro)



Ya les había presentado código ensamblador para el 8051 de intel en el cual probaba con un emulador escrito en java y que ensamblaba con nams desde la línea de comandos. Pero ahora es diferente y aquel emulador y mi ensamblador no son suficientes para poder seguir en la recta final.

Ahora estamos probando a la familia de los Pic, el cual ya tenia el gusto de conocer al 16F84. Y para seguir en esa misma línea de trabajo nos topamos ahora con un integrante de la familia mas actual. (Nos referimos al pic16F877)

La compañía que se encarga de fabricar estas bellezas, también se encarga de proporcionar una IDE de forma gratuita para su programación, depuración y grabación en el pic por medio de diferentes programadores, tanto propios como de otras empresas. Pero el problema llega cuando no usas Windows... Ups, te dices y te pones a rezar para que emule vía Wine sin problemas.

Así que me dispuse de tiempo para buscar algún programa para hacer esta tarea de forma nativa en linux, busque y busque y los portales derribe. Encontré un proyecto frances llamado Pikdev que ofrece una IDE sencilla para esta titanica tarea. Pero faltaban las librerías de Microchip para poder hacer mas simple la tarea. Así que pude encontrarlas en el proyecto GPutils, el cual dispone de las herramientas necesarias para poder programar pic y que Pikdev usa.

Pero pronto descubrí un problema mayor y que es el dolor de cabeza de cualquier programador en entorno de producción... bugs... Desgraciadamente, Pikdev no cuenta con un debugger para esto... Cansado de buscar una IDE que me lo dirá, me resigne a emular MPLab de Microchip para poder disponer de la herramienta MPSim para el debuggeo del programa que estaba tronando en el circuito... Pero mis esperanzas murieron cuando active el debugger. Corrió, pero jamás depuro...

Buscando un simulador, di con la pagina de GNUpic que es mantenida por Scott Dattalo. En ella encontré a GPSim, un simulador de pic's y con ello complete el labor de programar y debuggear en un entorno Linux sin necesidad de emular.