jump to navigation

Documento: Compilar Porting de GCC a 16F877 15 noviembre, 2006

Posted by pjmicrocontroladores in Documentación.
trackback

Para poder compilar GCC con la arquitectura PIC necesitamos obviamente las fuentes de GCC (1) y las fuentes del porting de PIC (2). La versión de GCC utilizada es 4.0.2. Podría funcionar en otras versiones pero puede requerirse pequeñas modificaciones. Además necesitamos las GPUTILS (3) para poder compilar el código ensamblador generado. Empezamos descargando todas las fuentes desde los enlaces a pie de noticia o utilizando paquetes preparados para las distribuciones empleadas.

Para instalar GPUTILS desde el código fuente, descomprimimos el archivo descargado:

tar xvf gputils-0.13.4.tar.gz

Una vez descomprimido, cambiamos a la carpeta creada gputils-0.13.4 y configuramos:

./configure

Creamos los ejecutables:

make

Y una vez compilado podemos bien ejecutarlos desde sus subdirectorios gpasm/gpasm, gplink/gplink y gputils/gplib o instalarlos y ejecutarlos sin miramientos, opción preferida (la ruta por defecto es /usr/bin si se cambia se deberá cambiar también en el archivo pic.h del parche para el porting GCC). Para instalarlo, usamos

make install

Con lo que ya podemos ensamblar código PIC a código hex para poder grabarlo en un microcontrolador.

Seguimos con GCC. Descomprimimos GCC,

tar xvf gcc-4.0.2.tar.bz2

Descomprimimos el parche de la arquitectura PIC (la versión más reciente)

tar xvf csl-pic-gcc-16f877-0.0.5.tar.gz

Con esto tenemos un directorio llamado gcc-4.0.2 que contiene las fuentes de GCC preparadas para la arquitectura PIC. Pero esta vez no usaremos este directorio para compilar GCC sino que creamos otro

mkdir pic-gcc

y desde dentro lo configuramos

cd pic-gcc
../gcc-4.0.2/configure -target=pic -enable-languages=c

Una vez configurado lo creamos y esperamos un rato (en un Celeron 2400 con 192Mg unos 10-15 minutos).

make

Cuando acabe (por ahora fallando con un AQUÍ) se habrá creado varios ejecutables en pic-gcc/gcc/ . Por ahora solo importa cc1 que compilará código C simple de un byte (es decir con tipos short o char y una sola función main). Poco a poco se conseguirá compilar todo el ANSI C. El código complicado (y por ahora todo lo que se salga de lo muy básico) fallará pero se puede ir comprobando el aumento de características del porting poco a poco.

Nos vemos.

1) ftp://ftp.gnu.org/gnu/gcc/gcc-4.0.2/gcc-4.0.2.tar.bz2
2) http://forja.rediris.es/frs/?group_id=101
3) http://sourceforge.net/project/showfiles.php?group_id=41924

Anuncios

Comentarios»

1. arcachofo - 6 diciembre, 2008

La pregunta del millón: que pasa si ya tengo instalado GCC 4.2.4??

2. pjmicrocontroladores - 6 diciembre, 2008

Hola arcachofo.

Nada. El porting al instalarse usará el prefijo pic. Tendrás gcc en la versión que quieras y un nuevo pic-gcc con la versión para PIC. También puedes usar make install prefix=/ para evitar mezclar.

Una cosa más. En la versión de SVN, ahora se tiene que especificar la ruta de gpasm y gplink. La forma correcta es:
../gcc-4.0.2/configure -target=pic -enable-languages=c -with-as=/usr/local/bin/gpasm -with-ld=/usr/local/bin/gplink

Obviamente corrigiendo las rutas que tengas en tu sistema de las gputils.

Saludos
Pedro José Ramírez Gutiérrez.

3. arcachofo - 6 diciembre, 2008

Ok… muchas gracias…

Perdona que te dé la vara… pero no acabo de entender…

Si yo le mando esto: ../gcc-4.0.2/configure…. me vá a compilar gcc normalmente.. no?, los archivos que me descargué de aqui están en otra carpeta que a su vez tiene una carpeta gcc-4.0.2 y un configure, pero si apunto a este configure me dice que no encuentra las fuentes… por lo tanto está buscando las fuentes de la otra carpeta gcc-4.0.2, la del compilador.

Lo único que se me ocurre es mezclar las dos y sobreescribir con los archivos que me descargue de svn, pero en ese caso me dá un error de los que no sé arreglar y no me genera nada;…

Si uso el archivo “csl-pic-gcc-16f877-0.9.2.tar.gz” y mezclo las carpetas gcc-4.0.2, al final me dá un error pero me genera un montón de archivos, entre ellos el cc1… como dices en la explicación… he hecho algo bién?

Todavía no he instalado nada, porque realmente no termino de entender el procedimiento…

Hace falta instalar o simplemente se utiliza el ejecutable cc1??

Pues nada,… que muchas gracias por tu atención y espero grabar algún pic con vuestro porting un día de estos… 🙂

La verdad que me ha sorprendido gratamente un proyecto de estas características y además en español.

4. pjmicrocontroladores - 6 diciembre, 2008

Hola arcachofo.

Te ve interesado por lo que para dudas y preguntas mejor usar la lista de distribución.
http://forja.rediris.es/mail/view_archives.php?name=cls-pic-16f877-commits&group_id=101

El proceso de compilación de GCC es diferente a lo habitual. Debes configurar GCC en una ruta diferente a la de los ficheros fuente. Por lo tanto el proceso en resumen es:

1) Conseguir y descomprimir gcc 4.0.2
2) Bajar de SVN los ficheros del porting y copiarlos SOBRE las fuentes de GCC 4.0.2
3) En otra carpeta (crear vacia) llamar a configure de las fuentes de GCC de la forma que te indique /;ruta GCC;/configure -target=c -enable-languages=c -with-as=/../gpasm -with-ld=/…/gplink
4) Si no hay problemas usar make. (si los hay mandamelos por la lista de distribución).
4b) un problema habitual es que diga que “as no reconoce la opción -c”. Para remediarlo crear un enlace en la carpeta de compilación/gcc de as a gpasm. No es limpio pero funciona. Ojo el enlace solo en …/gcc no en otras.

5) Ya tienes el compilador. Para instalarlo en el sistema make install. Para instalarlos en una carpeta independiente usar make install prefix=/;destino;

Saludos
Pedro José Ramírez Gutiérrez

5. arcachofo - 7 diciembre, 2008

Muchas gracias.
Entonces iba por buen camino, el error que me daba es el de “la opcion -c”, por lo demás lo hice como dices, lo único que echo en falta en la explicacón más arriba (no en esta última) es el detalle de copiar (mezclar) la carpeta gcc-4.0.2 (la del porting) sobre la del compilador del mismo nombre; aunque es lo único que tiene lógica, a los inexpertos nos puede resultar confuso.

Voy a hacer otro intento y sigo con mis dudas en la lista.

6. arcachofo - 7 diciembre, 2008

Pues todo ha ido bien, ya lo tengo instalado, me descargué el manual y ahora solo me queda empezar a probar cosas… alguna sugerencia?

Pido disculpas por mi torpeza,… pero en la lista no veo la manera de publicar un comentario, me hice una cuenta en “la forja” pero no encuentro la manera.

Por otro lado tampoco estoy seguro de que este sea un sitio para usuarios finales “arriesgados” como yo a los que nos nos gusta meternos en problemas y luego venir a molestar más que a ayudar.

En cualquier caso gracias por tu/vuestro trabajo.

Hasta la próxima.

7. Aleirbag - 26 junio, 2009

Tengo este error y nose a que se pueda deber y tampoco como dar una solucion.

Pro*C/C++: Release 10.2.0.2.0 – Production on Fri Jun 26 12:55:21 2009

Copyright (c) 1982, 2005, Oracle. All rights reserved.

System default option values taken from: /export/home/oracle/product/10.2.0/db_1/precomp/admin/pcscfg.cfg

cc -xO3 -K PIC -DPRECOMP -I. -I/cuchareo -I/export/home/oracle/product/10.2.0/db_1/precomp/public -I/export/home/oracle/product/10.2.0/db_1/rdbms/public -I/export/home/oracle/product/10.2.0/db_1/rd
bms/demo -I/export/home/oracle/product/10.2.0/db_1/plsql/public -I/export/home/oracle/product/10.2.0/db_1/network/public -DSOL_X86 -DSVR4 -Di386 -DSOLARISX86 -D_LARGEFILE64_SOURCE=1 -D_LARGEFILE_SOURC
E=1 -DSLMXMX_ENABLE -DSLTS_ENABLE -D_SVID_GETTOD -D_REENTRANT -c PRVDINTB809V02_01.c
cc: PIC: No existe tal archivo o directorio
cc: opci¾n `-K’ no reconocida
cc: no se reconoce el lenguaje O3

8. pjmicrocontroladores - 26 junio, 2009

Hola AleirBag

Para compilar el porting de GCC necesitas tener GCC y binutils en tu sistema.

Estas usando Pro*C/C++ un compilador para SQL de oracle. No sirve.

Saludos
Pedro José Ramírez Gutiérrez

9. julian - 31 julio, 2009

hola.
Estuve probando el compilador y funciona muy bien, salvo cuando mi programa supera los 2K de memoria. Creo que hay problemas con las llamadas a rutinas desde paginas distintas.
Me fijé en la lista que tienen de ToDo y parece que ya pasaron por esto.
¿hay alguna opción de compilación para programas grandes?
¿hay algo distinto que tenga que hacer con el gplink?

saludos julian

10. pjmicrocontroladores - 31 julio, 2009

Hola Julian.

No existe (o no he detectado) ningún problema como el que me comentas. Yo tengo programas que ocupan las cuatro páginas y funcionan bien.

Para estar seguros usa la última versión, la que está en el SVN. Si sigues teniendo problemas por favor, indicamelo.

Saludos
Pedro José Ramírez Gutiérrez.

11. julian - 6 agosto, 2009

Hola.

El problema se fue cuando desactivé las interrupciones de la UART, así que es muy probable que yo haya hecho algo mal, solo que todavía no sé qué es.

Si logro aislar algún error, aviso.

Muchas gracias por todo.

Julián


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: