viernes, 26 de junio de 2009

Programando pic's desde linux. (IDE)

Entrando a tema...

El corazón de Pikdev y otros como Piklab, con las herramientas que proporciona GPutils que vimos el post pasado. Por ello veremos como ensamblar desde la línea de comandos.

Abrimos nuestra terminal y nos vamos hasta donde tengamos nuestro archivo '.asm' y tecleamos:

[Sugizo@old practicas]$ gpasm -L -o "/media/disk/escuela/Microcomputadoras/practicas/test01b.hex" -w 2 -I "/usr/share/gputils/header" -p p16f877 -a inhx8m -r hex "/media/disk/escuela/Microcomputadoras/practicas/test01b.asm"

Con ello generaremos el archivo .hex, .cod y .lts que usaremos para GPSim.


Pero si lo que queremos es evitar la terminal, siempre existe el entorno gráfico y sencillo de una IDE como Pikdev.

abrimos nuestro .asm seleccionamos el tipo de pic que deseamos usar y le damos F5 y nos hace lo anterior en un solo click.


y así tenemos los mismos archivos con menos esfuerzo. Hay que aclarar que una de las cosas que debemos cuidar es la sintaxis, ya que gpasm es muy estricto en cuanto a declaraciones. Un error es include, MPLab la reconoce tanto en mayusculas como en minusculas, mientras que gpasm sólo en minusculas.

Ejemplo:

__CONFIG _LVP_OFF & _CP_OFF & _PWRTE_ON & _XT_OSC & _BODEN_OFF & _WDT_OFF
list p=pic16f877
include <p16f877.inc>

Uno siempre se siente realizado cuando se ensambla sin ploblemas... Pero eso no indica que haga lo que debiera y seguramente nos dara dolores de cabeza al ver que pasa nada y lo mismo cuando lo grabamos en el chip. Pero para ello esta GPSim...

Para el programador, solo nos interesa el .hex. Por lo que tomamos como basura todo lo demás. Pero ¿Cómo depuramos?

Desde la terminal tecleamos

[Sugizo@old practicas]$ gpsim -s archivo.cod

Esto nos abre un entorno gráfico simple, aburrido y que parece poco eficiente. Pero su elegancia radica en su simpleza.


En el cual podemos tener todo lo necesario en ventanas independientes y que podemos acomodar en todo el escritorio para poder seguir cada paso de nuestro programa y ver en donde nuestra lógica falla.

Desde esta ventana podemos colocar nuestros breakpoints y seguir línea a línea lo que pasa en nuestro código y lo que tenemos en nuestras librerias auxiliares.


Y en esta esquina tenemos a la maravillosa ventana medidora!! El StopWatch que generosamente nos medirá la cantidad de ciclos y tiempo que tarda una instrucción en ejecutarse.

Y aquí lo tenemos en funcionamiento

Entre sus herramientas tenemos los registros de la RAM como de la memoria EEPROM.


El programa de memoria.

Y una placa gráfica de nuestro integrado donde vienen los puertos y los bits de configuración.


Como dicen: He aquí, todo para el programador. Nos veremos en el siguiente post para seguir descubriendo los horrores de dedo y más código para poder hacer de un pic, una útil herramienta.

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.

lunes, 1 de junio de 2009

Todo para el artista: ArtistX


Una de mis pasiones en esta vida es el audio, todo el mundo de las frecuencias y armónicos. Es algo que me entretiene por horas y horas y que por lo general, salen cosas muy buenas de ellas.

Pero ahora que mi enanicima anda jugando con los gráficos en 3D, pensé en hacerle un regalo bastante lindo lleno de software para dicho trabajo y me puse a trabajar secretamente en ello. Buscando programas para 3D y demás, recordé que existe una distribución que se había creado para ello y me puse a buscarla. Para mi sorpresa, acaba de sacar su nueva versión 0.7.

Pasemos al tema

ArtistX es una distribución basada en Ubuntu 8.10 (intrepid) con el Kernel 2.6.27, Compiz Fusion, Genome 2.24, KDE 4.2 y una gran cantidad de aplicaciones para el mundo de los gráficos y multimedia, el cual es una gran alternativa para todo esos fanáticos como mi hermosa niña que se quieren pasar un buen rato creando cosas gráficamente hermosas.

Esta distribución en formato live-cd (Bueno, es un DVD... que genio!!!) puedes descargarla vía torrent y si te preguntas que puede traer ArtistX, aquí les dejamos una probadita de su contenido:

  • Software para gráficos en 2D: Gimp, Inkscape, Nip2, Krita, Cinepaint, Synfig, Rawstudio, Skencil, Hugin.
  • Softwares para gráficos en 3D: Blender, Wings3D, Kpovmodeler + Povray 3.6, K3D.
  • Softwares para video: Cinelerra, Kino, Openmovieeditor, Kdenlive, Pitivi, Avidemux, Devede, y muchos más.
  • Reproductores de mísica y video: Mplayer, Helix Player, Videolan, Xine, Kaffeine, Kmplayer, LastFM y muchos más.
  • Sofware para edición de audio: PD and externals, Rosegarden, Ardour, TerminatorX, Cecilia/Csound, Gnusound, Mixxx y muchos más.
Ahora si: Felices trasos!