sábado, 18 de febrero de 2012

Pyastra y Gputils


PYthon ASsembler TRAnslator

Pyastra es un proyecto Open Source que básicamente es un traductor de python a ensamblador. Este toma código escrito en python y si no tiene errores lo pasa a un archivo en ensamblador. Después tu puedes compilar este a un archivo .hex para poner en el PIC que usaras.



Las metas de este proyecto son:
  • Introducir a python en el mundo de los microcontroladores
  • Apoyar una amplia gama de microcontroladores y procesadores
  • Genera código compacto y eficaz
  • Fácil de usar para el desarrollador
La salida que produce no es la mas rápida para el compilador no es tan compacto y requiere más memoria que una aplicación escrita en lenguaje ensamblador por un especialista. Sin embargo, en este último caso, el desarrollo requiere más tiempo y es mucho más fácil competer errores.
Esta es la página oficial de Pyastra.

Instalación

Para empezar a usarlo hay que descargar el .zip.
Después vamos a donde lo descargamos y descomprimimos, en mi caso lo tengo en Downloads:
Ahora nos metemos a la carpeta que se creo:

cecy@cecy-Inspiron-N4020:~/Downloads/Pyastra-0.0.4.1$
view raw gistfile1.sh hosted with ❤ by GitHub


Introducimos el siguiente comando para instalarlo:

cecy@cecy-Inspiron-N4020:~/Downloads/Pyastra-0.0.4.1$ sudo python setup.py install
view raw gistfile1.txt hosted with ❤ by GitHub


Ahora podemos empezar a probarlo veamos si se instalo correctamente:

cecy@cecy-Inspiron-N4020:~$ pyastra
view raw gistfile1.sh hosted with ❤ by GitHub


Y aparecerá algo como esto:



Exploremos la carpeta de ejemplos:

cecy@cecy-Inspiron-N4020:~/Downloads/Pyastra-0.0.4.1/doc$ cd examples/
cecy@cecy-Inspiron-N4020:~/Downloads/Pyastra-0.0.4.1/doc/examples$ ls
view raw gistfile1.sh hosted with ❤ by GitHub


Vemos esto:

binary_clock.py example1.py led_blink.py pic_adc.py serial.py
eeprom.py example2.py num_ext.py README
view raw gistfile1.sh hosted with ❤ by GitHub


Ahora para generar el ensamblador tecleamos este comando:

cecy@cecy-Inspiron-N4020:~/Downloads/Pyastra-0.0.4.1$ pyastra -S doc/examples/binary_clock.py
view raw gistfile1.sh hosted with ❤ by GitHub


y aparece el siguiente error:

Traceback (most recent call last):
File "/usr/local/bin/pyastra", line 172, in <module>
p.convert(op.root)
File "/usr/local/lib/python2.7/dist-packages/pyastra/ports/pic14/tree2asm.py", line 107, in convert
self._convert(From('builtins', [('*', None)]))
TypeError: __init__() takes at least 4 arguments (3 given)
view raw gistfile1.sh hosted with ❤ by GitHub


Entonces ahora iremos al archivo especificado en el error

cecy@cecy-Inspiron-N4020:~/Downloads/Pyastra-0.0.4.1$ sudo emacs -nw /usr/local/lib/python2.7/dist-packages/pyastra/ports/pic14/tree2asm.py
view raw gistfile1.sh hosted with ❤ by GitHub


y cambiamos en la línea 107:

self._convert(From('builtins', [('*', None)]))
view raw gistfile1.txt hosted with ❤ by GitHub


por esto

self._convert(From('builtins', [('*', None)], None))
view raw gistfile1.sh hosted with ❤ by GitHub


Y ahora si:

cecy@cecy-Inspiron-N4020:~/Downloads/Pyastra-0.0.4.1/doc/examples$ pyastra -S binary_clock.py
view raw gistfile1.sh hosted with ❤ by GitHub




Y se creo el .asm , que es nuestro archivo en ensamblador:



Parte del código que se produjo:


Otro comando interesante es poder ver cuales modelos de PICs son aceptados por Pyastra:

cecy@cecy-Inspiron-N4020:~/Downloads/Pyastra-0.0.4.1/doc/examples$ pyastra -plist
view raw gistfile1.sh hosted with ❤ by GitHub


Y obtenemos:



Gputils

Hasta ahora hemos obtenido satisfactoriamente el código en .asm hecho por el .py, el siguiente paso para poder ponerlo en el PIC es pasar el .asm a .hex.

Primero descargamos un programa para Ubuntu llamado "gputils".

cecy@cecy-Inspiron-N4020:~$ sudo apt-get install gputils
view raw gistfile1.sh hosted with ❤ by GitHub


Y una vez instalado tecleamos un comando más, que nos servira para traducir el .asm a .hex:

cecy@cecy-Inspiron-N4020:~/Downloads/Pyastra-0.0.4.1/doc/examples$ gpasm binary_clock.asm
view raw gistfile1.sh hosted with ❤ by GitHub


Y ahora también tenemos nuestro .hex para el PIC y también se crean otros archivitos adicionales.



EL .hex se ve algo así:




Fuentes

Página oficial Pyastra

3 comentarios:

  1. Excelencia hecho entrada. Van 9 para el lab de integrados.

    ResponderEliminar
  2. Cool.
    yo lo que hice fue usar shed skin para pasar de python -> C++ y de ahi para assembly, pero pyastra esta mucho mejor, buena entrada.

    ResponderEliminar
  3. por favor cecilia , agradezco tu aporte , pero lo instale con la ruta , que dices , pero como lo uso , como convierto archivos de python a asm.... hay algun tutorial, yo uso windows 7 , por favor agradeceria me puedas ayudar

    ResponderEliminar