jump to navigation

Comenzamos… 27 octubre, 2006

Posted by pjmicrocontroladores in Información general.
trackback

Éste blog surge con la idea de mostrar al gran publico la creación de un nuevo porting de GCC(2). El que escribe, Pedro José Ramírez Gutiérrez, animado por la idea inicial de David Santo Orcero, inicia hoy la creación del porting del backend de GCC a la arquitectura PIC 16F877. La orientación de este proyecto servirá para tres metas, completar el Proyecto Fin de Carrera, lo que me convertiría en Ingeniero en Informática con título acreditativo (pese a que realmente creo que ya nací así), participar en el Concurso Universitario de Software Libre(1), que comienza con su primera edición, y establecer el camino del porting del backend de GCC a toda la arquitectura PIC.

Dando por sentado que muy pocos comprenderán el significado de palabras como porting y backend, pero esperando que la mayoría conozcan al menos la existencia de GCC y que es un microcontrolador, pasaré a comentar las ideas. Antes de nada advierto, para mejorar la explicación usaré continuamente la primera persona del plural de los verbos, sin que ello implique la existencia de una doble personalidad (calla ya, después le pego fuego a eso), sino que hago participe al lector de las explicaciones dadas.

Comencemos, GCC es un conjunto de compiladores.  La arquitectura interna de GCC consiste en tres partes muy diferenciadas. Por cada lenguaje de programación que acepte GCC, nos encontramos con un frontend. El frontend de C, contiene el analizador sintáctico, el semántico, y las instrucciones para que un programa en lenguaje C escrito en un archivo pase a un lenguaje intermedio conocido como RTL. Una vez las instrucciones del programa de entrada estén en el lenguaje intermedio, nos encontramos con la segunda parte de GCC, el middle-end. Aquí es donde ocurren todas las optimizaciones internas que hacen de GCC el compilador más potente actualmente. El lenguaje RTL solo esta en la memoria de GCC, pero por ahora nos basta saber que existe y que GCC sabe optimizarlo. Una vez el código RTL ha sido optimizado, se pasa al último eslabón de la cadena, el backend. Dependiendo de la arquitectura elegida para la salida del programa, se usará el backend necesario para lograr el código deseado.

Aquí es donde entra en juego el objetivo del proyecto. La creación de un backend de GCC para la arquitectura PIC 16F877, nos permite compilar código C, para obtener código ensamblador listo para grabar en el PIC 16F877.  Pero ¿que es el 16F877?. Bueno, un microcontrolador es una cajita negra con patitas metálicas que en su interior contiene un procesador, la memoria RAM y ROM y varios dispositivos. Uno de los fabricantes que crean microcontroladores es MicroChip(3) y uno de los modelos que crea MicroChip es el modelo 16F877. A cambio de conseguir meter un procesador y varios dispositivos en una cajita más pequeña que un euro, tenemos un procesador simple pero eficaz, poca memoria RAM y ROM (comparada con los ordenadores actuales) y dispositivos de Entrada/Salida relativamente simples. Pero la principal ventaja de estos “pequeños” es su precio, los modelos varían según memoria, dispositivos o velocidad pero de media valen unos 6 €. Los que no los conocieran descubrirán en este proyecto una muy agradable posibilidad para el desarrollo hardware.

La idea a largo plazo es completar la familia PIC16 de Microchip, pero como todo tiene un inicio se ha elegido este microcontrolador, potente y completo respecto a periféricos. Las ideas a más largo plazo continúan con el punto de mira en la familia PIC17 y PIC18. Y tres la segunda estrella y a la derecha, me parece ver un 30 y un 24 (los entendidos se sonreirán y espero que no se burlen…mucho). No obstante para comenzar, el modelo PIC 16F877 es un buen inicio.

Dicho esto, comenzamos…

1) http://concurso-softwarelibre.us.es/
2) http://gcc.gnu.org/
3) http://www.microchip.com

Anuncios

Comentarios»

1. Ivan Landa Dominguez - 13 junio, 2008

sere el primero. una vez mas, me sorprende hallar material en español que dificilmente se encuentra en Internet. ¡Bravo, Pedro José!. Yo necesito programar el PIC16F877A y tu blog me sera de mucha ayuda.


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: