Congelada versión 1.2 17 Enero, 2009
Posted by pjmicrocontroladores in 1.2 comments
Durante las últimas semanas han aparecido errores, cosas que no funcionaban como se esperaba o partes de código mejorables. Pasado el tiempo necesario de reparación y mejora tengo el placer de anunciar el lanzamiento de la versión 1.2 del porting de GCC a PIC16F. Los errores correguidos y las mejoras pueden consultarse en el log del svn.
Como novedades:
- Se incluyen dos wrappers para gpasm y gputils con lo que se mejora la integración de llamadas GCC-GPUTILS.
- He lanzado una versión binaria para Windows que incluye las GPUTILS. Es una versión descompirmir y funcionar. Como única instalación necesita que el directorio bin dentro de la carpeta de descompresión se incluya en la variable PATH del sistema. Caso contrario habrá que llamar al compilador de C, ensamblador y enlazador uno por uno. A partir de ahora, la distribución de los binarios de Windows será la tónica general en los lanzamientos. Si hay interes popular usaré algún instalador para automatizar el proceso.
- En unos días subiré una versión binaria para Linux. Por ahora podéis usar la versión que se encuentra en http://pic-linux.foroactivo.net/pic-gcc-f22/como-empezar-a-utilizar-pic-gcc-t81.htm#176 de la página del foro PIC-Linux creada por Santiago. Se encuentra actualizada practicamente a la última versión (solo le faltan los wrappers). De paso os invito a echar una mirada a éste foro que se muestra bastante interesante del amigo Santiago.
- Soporte para la compilación de la versión 1.1.10 de la PIC-GCC-Library (https://sourceforge.net/projects/pic-gcc-library/). La biblioteca de C para PIC-GCC desarrollada por Fernando Pujaico. Hace pocos días que lanza esta versión bastante avanzada. A Fernando le debo agradecer, no solo que amplie la utilidad de PIC-GCC con las bibliotecas de C sino que se ha convertido en el betatester número 1 de PIC-GCC, descubridor de bastantes fallos corregidos en esta versión.
Los próximos pasos serán:
- Lanzamiento de un plugin para el entorno Eclipse que integrará pic-gcc en el mismo. Hasta hace poquito la única opción de compilar con pic-gcc era por linea de comandos. Sin embargo junto a PIC-GCC-Library, Fernando ha lanzado GTKPicGccAll. Un IDE muy ligero para programar PIC con PIC-GCC. En la misma página que las bibliotecas tienen versiónes compiladas para Windows además del código fuente listo para Linux. En poco lanzaré un versión inicial del plugin de Eclipse, pero el final integrará la programación de fuses, junto a varias herramientas de manejo del código generado. Con ésta futura versión, se tendrán dos IDEs alternativas, Eclipse bastante bueno pero se necesita una máquina potente para programar con comodidad y GTKPicGccAll que funciona en cualquier ordenador que arranque un entorno gráfico de Linux.
- Comprobar la compilación de C++. El compilador de C++ ya es un echo y se puede generar sin tocar el código fuente de PIC-GCC. Falta comprobar que el soporte del lenguaje esté completo, pero para los aventureros os invito a probarlo y reportar fallos. No se dará soporte para creación de objetos (new y delete), pero la idea es permitir utilizar las mejoras del lenguaje C++. Realmente la implementación de la asignación dinámica en un PIC de 386 bytes de memoria no es algo que me quite el sueño.
- Como acción inmediata, de aquí a unos días explicaré el nuevo proceso de compilación de PIC-GCC ya que ha variado un poco. De todas formas creo que ha sido para mejor. No obstante el que lo necesite puede preguntarme usando la lista de distribución de la forja.
Solo me resta dar las gracias a todas las personas que han reportado bugs del compilador. En especial a Fernando y a Santiago que no solo han reportado bugs sino que han creado comunidad a partir del proyecto, creando desde distribuciones binarias hasta IDEs para el Porting. Gracias amigos.
Eso es todo, saludos
Pedro José Ramírez Gutiérrez.
Nueva actualización. 13 Octubre, 2008
Posted by pjmicrocontroladores in Información general, Parches.3 comments
Buenas
He subido una nueva revisión al control de versiones. Por un lado arregla un fallo con las llamadas sobre punteros a funciones (gracias a Fernando Pujaico por el aviso). Por otro lado cambia la forma de compilar PIC-GCC.
Ahora, para configurar GCC una vez aplicado el parche se debe usar:
../<fuentes_GCC_parcheadas>/configure -target=pic -enable-languages=c -with-as=/usr/local/bin/gpasm -with-ld=/usr/local/bin/gplink
donde -with-as y -with-ld deben ser las rutas absolutas de gpasm y gplink respectivamente instaladas en el sistema. Así, se acaba con la ambiguedad de la ruta de las GPutils a usar en el código fuente, la ruta por defecto de instalación del paquete o la ruta si se contruyen a partir de las fuentes.
Saludos
Pedro José Ramírez Gutiérrez.
Noticias buenas y otras no tanto. 29 Mayo, 2008
Posted by pjmicrocontroladores in Información general.add a comment
Primero las relativamente malas. He borrado todos los foros de la forja. El motivo es que no he recibido ningún mensaje que no fuera anunciando pornografía y productos para hacer crecer el pene. Ante el aumento incontrolado de este tipo de mensajes y la imposibilidad de filtrarlos de manera cómoda, he cerrado el foro. Seguis teniendo los comentarios del blog abiertos para cualquier tema.
Las noticias buenas. Fernando Pujaico Rivera ha decidido comenzar a desarrollar bibliotecas de dispositivos para PIC-GCC. Empieza de forma bastante fuerte y en pocas semanas lanzará las primeras betas del código. Por el momento, ya ha abierto un nuevo proyecto en sourceforge para empezar a subir las primeras alphas. Lo tenéis aqui. También podéis echar un vistazo a su página web donde ya publico una biblioteca multiplataforma para acceso al puerto serie entre otras.
Por último, como Fernando me ha dado un poco de envidia, os subo una pequeñisima biblioteca para generar retrasos de milisegundos. Os lo cuelgo en los documentos de la forja, dado que no puedo hoy subir ficheros (ya lo arreglarán). Aquí delayms.
Saludos
Pedro José Ramírez Gutiérrez
Novedades. (Re-actualizado) 11 Mayo, 2008
Posted by pjmicrocontroladores in Lanzamiento de versión.add a comment
Se ha publicado una nueva versión 1.1.0 que contiene dos correciones de distinta gravedad junto con los últimos cambios del control de versiones.
- [importante] Se han corregido varios errores en las rutinas de multplicación para 16 y 32 bits para 32 registros. Los errores las hacian inoperables.
- [Menor] Se ha reparado un error en la inicialización de variables en la rutina initializate. En la carga de las variables inicializadas la dirección de lectura no era calculada de forma correcta si el incremento sobrepasaba el rango de un byte.
Además, a partir de ahora, el código fuente se distribuirá en forma de parche. Ya está disponible en los ficheros de la forja (aquí) pero aconsejo conseguirlo siempre desde el control de versiones de la forja.
Se continuará con la versión de GCC 4.0.2 por el momento pero estoy comenzando la adaptación a la versión 4.3.0. En su momento se compararán ambas versiones y se eligirá la que produzca código más óptimo dado que por el momento las reparaciones publicadas por la GNU no afectan los microcontroladores PIC.
Por otro lado la versión para Windows será lanzada próximamente sobre el entorno cygwin.
Saludos
Pedro José Ramírez Gutiérrez
Actualizado: Añadida versión 1.1.1 del parche en la que se arreglan errores en las rutinas de multiplicacion sin signo de 16 bits. Descargas aquí .
Reactualizado: Y para rematar lanzo la versión 1.1.2 del parche que contiene la correción completa de la multiplicación. A la versión 1.1.1 le faltaban unos arreglos que olvide actualizar. Parche aquí.
Actualización 15 Octubre, 2007
Posted by pjmicrocontroladores in Información general, Lanzamiento de versión.9 comments
He subido al control de versiones de la forja una nueva actualización que establece un total de 129 modelos de microcontrolador soportados. Con esto se puede compilar código para la inmensa mayoría de microcontroladores del rango medio de Microchip. Los modelos soportados a nivel de compilación son:
Faltaría por escribir los archivos de cabecera, pero todavía se debe establecer un formato más conveniente que el actual antes de ampliarlo a todos los nuevos microcontroladores.
A partir de ahora el Bloq se convierte en Porting de GCC a PIC16, dado que el 98% de los PIC16 están portados.
Saludos
Pedro José Ramírez Gutiérrez
II Concurso Universitario de Software Libre (actualizado) 9 Agosto, 2007
Posted by pjmicrocontroladores in Información general.1 comment so far
A partir del 15 de Septiembre estará abierto el plazo para la inscripción en la segunda edición del Concurso Universitario de Software Libre. Desde éste blog recomiendo que todo aquel ingeniero universitario que esté pensando en comenzar su proyecto de fin de carrera participe en el concurso por tres razones. Primero conseguiréis publicidad solo con participar, tanto del proyecto como de vuestra forma de trabajar. Segundo, os impulsará a avanzar en la creación del proyecto ayudando a no dejarlo incompleto. Y tercero, podíes ganar dinero, pero lo que es seguro es que no lo perderéis
.
Solo resta dejar el enlace.
http://concurso-softwarelibre.us.es/index.html
Animo.
PD: Gracias a Fitopaldi por la corrección. Eso me pasa por leer demasiado rápido.
PD 2: El plazo ya abierto finaliza el 31 de Octubre.
Concurso Software Libre. 28 Mayo, 2007
Posted by pjmicrocontroladores in Información general.add a comment
Tras ocuparme de varios asuntos de importancia puedo, con más de dos semanas de retraso, anunciar que finalmente gane el primer premio en la categoría de sistemas. Poco puedo decir que no hayan dicho ya los compañeros del concurso, pero me apetece resaltar el buen ambiente vivido durante los días de estancia en Sevilla. Desde un primer momento no existieron competidores sino aficionados del software libre lo que unido al excelente trato por parte de los organizadores del concurso hicieron que más de uno deseara alargar la fase final del concurso. Espero verlos a todos en próximos eventos.
Solo me resta comentar que en unas semanas daré un fuerte empujón al proyecto y posiblemente podré anunciar el nacimiento de otro bastante relacionado. Hasta entonces saludos.
Congelada versión 1.0.0 5 Mayo, 2007
Posted by pjmicrocontroladores in Lanzamiento de versión.17 comments
Hoy lanzo la versión estable del porting de GCC a PIC16F877. Durante un mes he realizado profundas pruebas del compilador y le he usado en proyectos reales con el 16F877. Tras observar los resultados y no encontrar ningún tipo de fallo en el código de la versión 0.9.2 usado durante todo éste tiempo, he decidido congelar ésta como la versión 1.0.0. Realmente bastante antes se mostraba un código resultante robusto y fiable, pero no solo tenía que suponerlo sino comprobarlo con mis propios ojos.
El trabajo de desarrollar un compilador de C para PIC16F877 está completado, pero como ya he comentado otras veces, el objetivo desde mediados del proceso de desarrollo es un compilador, no solo para éste microcontrolador, sino para toda la familia 16F. Pese a que también he probado el microcontrolador PIC16F73 con idénticos y excelentes resultados, debo realizar pruebas más profundas con este último. Llegará un punto en el que tenga que presuponer que ciertos microcontroladores son soportados por el compilador, pero siempre me ha gustado andar con pies de plomo.
Lamentablemente es imposible que adquiera todos los modelos del 16F para comprobar los resultados por lo que pido ayuda para que todo aquel que desee programar en C otros modelos PIC16F, lo pruebe y me comente los resultados. La adaptación del compilador a otro modelo únicamente supone introducir una línea de código, por lo que no se exigen conocimientos avanzados para poder ampliar el compilador. No obstante estoy preparando, siempre que el trabajo me deje un poco de tiempo, un documento para realizar paso a paso la modificación.
Hasta entonces, saludos a todos.
PD: El proyecto ha sido elegido como finalista del I concurso universitario de software libre. Pese a que siento un gran honor de formar parte de los 7 finalistas, creo que es digno reconocer que todos los proyectos que han trabajado se merecen una enorme ovación. Enhorabuena a todos.
Programador por puerto USB para PIC 23 Abril, 2007
Posted by pjmicrocontroladores in Información general.30 comments
Tras mucho dilucidar, el mejor programador con diferencia para PIC por puerto USB que he encontrado, es el PICkit 2(1) de la casa Microchip. Gracias a una reciente actualización puede programar la mayoría de microcontroladores PIC, desde los PIC12 hasta los dsPIC3 pasando por los PIC18 y PIC24. Es realmente barato comparado con otras alternativas como el GTP USB plus. Además es abierto (que no libre), por lo que se puede bajar tanto las fuentes del programa para Windows, como los esquemas del programador desde la página de Microchip. Merece la pena comprarlo dado que los componentes salen igual en precio que el programador montado, pero es una buena experiencia para los que les gusta el “cacharreo”.
Para Linux, lamentablemente Microchip no da soporte, pero hay tres alternativas que funcionan con la primera versión y están trabajando para soportar también la segunda. Son pk2(2), pyk(3) y piklab(4).
Aquellos que piensen adquirirlo, les recomiendo no hacerlo directamente a Microchip cuyos portes son de 25 euros (para España), sino hacerlo en alguna tienda especializada cercana. En mi experiencia personal lo he adquirido en Farnell, pese a que sus portes son de 9 euros, pero en un día lo tienes en casa y se puede aprovechar además para surtirse de gran variedad de componentes más baratos que en la “tienda de la esquina”.
Solo me queda saludar y recordar que no se han encontrado ningún fallo en el código, pero si se han introducido varias optimizaciones en la versión del control de versiones.
(1) http://www.microchip.com/pickit2
(2) http://home.pacbell.net/theposts/picmicro/
(3) http://groups.google.com/group/pickit-devel
(4) http://piklab.sourceforge.net/
Versión 0.9.2, y adiós concurso. 8 Abril, 2007
Posted by pjmicrocontroladores in Información general.2 comments
Con el lanzamiento de la versión 0.9.2 del porting de GCC a PIC16f877 se termina el desarrollo para el concurso universitario de software libre. Se han lanzado el código para Linux que ya incluye unas mini instrucciones para compilarlo y el código precompilado para windows. Se han añadido también un archivo auxiliar con las cabeceras de los tres microcontroladores que son soportados de base. Si alguien quiere ayudar al proyecto sin ponerse a desarrollar código puede escribir más cabeceras (apoyarse en el archivo p16f877.h que es más fácil) y ponerse en contacto conmigo por aquí.
Un participante en el concurso recomendó hacer un resumen de los proyectos. En lo que concierne a éste, realmente es muy complejo hacer un resumen que sea comprensible para todo el mundo. Lo intentaré explicar en una frase: He conseguido que GCC compile todo código C para el microcontrolador PIC16F877 de Microchip, de forma completa y correcta, en un entorno totalmente libre, permitiendo además compilar código para muchos más microcontroladores de la familia PIC16F.
Un resumen puede servir para mucho o para muy poco. Lo que no cabe duda es que la frase anterior debería ser analizada palabra por palabra para comprender realmente el alcance del proyecto.
Desde que comencé sé que éste no es un proyecto para la gran masa. Solo los buenos (hay que serlo para usar Uc) programadores que elijan C y elijan la familia PIC16F de Microchip, pueden interesarse por el proyecto y un 0.01 % de esos programadores aportarán algo al mismo. Sin embargo he conseguido que el compilar sea completo y correcto, que es mucho más de lo que nadie había conseguido en el software libre.
Con más ayuda podría haber soportado desde el código a todos los controladores de la familia 16 y comenzar mucho antes con la familia PIC18. Tengo que cambiar la falta de apoyo por tiempo, pero aún así, es notable el avance conseguido en un periodo tan corto. Pese a permanecer en la versión beta (por querer una versión 1.0 totalmente terminada y probada) el código esta completo.
Simplemente resta decir que el desarrollo seguirá hasta contener a todos los microcontroladores de la familia PIC16F. Se hará un alto en el camino para realizar librerías de dispositivos y se continuará después con el porting de GCC a los PIC18. Algunos juzgaron que la declaración de intenciones de los primeros mensajes del blog era inalcanzable. Lo siento chicos pero ésta ves os equivocasteis.
Saludos y hasta pronto.