Buscar en este blog

domingo, 1 de enero de 2012

Instalando el compilador SDCC

El programa SDCC (Small Device C Compiler) es un compilador para el lenguaje C para microcontroladores. Según indican en su web, el mismo es útil para distintos tipos de microcontroladores como ser: "Intel 8051, Maxim 80DS390, Zilog Z80, Z180, Rabbit 2000 and the Motorola 68HC08".

En mi caso lo voy a estar utilizando para microcontroladores PIC de la empresa Microchip.

En este post intento mostrar cómo instalarlo en la versión Squeeze de la distribución Debian de GNU/Linux.

Instalar GPUtils

Lo primero es instalar otro programa llamado GPUtils. Para esto abro una consola y, como superusuario, escribo el comando:

# aptitude install gputils

o si prefieren

# apt-get install gputils

Instalar SDCC

En mi distribución de Debian no me aparece SDCC en los repositorios de forma que lo pueda instalar mediante "aptitude". Por lo tanto lo voy a instalar descargando y compilando el código fuente.

Descargo entonces la versión más reciente (la 3.1.0 en mi caso) del código fuente de SDCC desde http://sourceforge.net/projects/sdcc/files/ y buscando en la carpeta "sdcc-linux-x86".

El archivo descargado ("sdcc-3.1.0-i386-unknown-linux2.5.tar.bz2") lo extraigo en mi escritorio que está ubicado en /home/nombre_usuario/Desktop.

Ahora abro una consola y me paso a la carpeta extraída de nombre "sdcc" mediante:

# cd /home/nombre_usuario/Desktop/sdcc

Esta carpeta contiene los archivos "README.txt" e "INSTALL.txt" y las carpetas "share" y "bin".

En el archivo "INSTALL.txt" se tiene información de cómo instalar SDCC. Allí lo que dice es que, para instalarlo en GNU/Linux, se debe copiar el contenido de la carpeta "sdcc" (donde nos econtramos) al directorio "/usr/local" de nuestra distribución.

Sin embargo, en el tutorial "Programming PIC's in Linux using C with SDCC" indica que no siempre se debe copiar al directorio "/usr/local" sino que depende de la distribución de GNU/Linux que estemos usando. Además da a entender que se deben copiar de tal forma que los archivos de la carpeta "share" queden en el mismo directorio en el que se encuentran los archivos de gputils instalados anteriormente.

Para saber dónde se encuentra instalado el gputils, en una consola escribo:

# locate gputils

o, si el anterior comando no les devuelve nada, probar con:

# whereis gputils

Esto me muestra que gputils se encuentra instalado en el directorio "/usr/share". Por lo tanto opto por copiar los archivos de la carpeta sdcc en el directorio "/usr/". Para esto escribo en la línea de comandos (parado en la carpeta sdcc):

# cp -r * /usr/

(No usar # cp -r * /usr/share)

Supuestamente ahora se puede probar la instalación mediante el comando:

# /usr/bin/sdcc -v

A mí me devuelve:

SDCC : mcs51/gbz80/z80/z180/r2k/ds390/pic16/pic14/TININative/ds400/hc08 3.1.0 #7066 (Nov 22 2011) (Linux)

En principio ya tenemos el SDCC instalado (si queremos podemos eliminar la carpeta sdcc y el archivo .tar.bz2 descargado).

Por lo que leí en el tutorial "Installing and using SDCC on Linux" (del año 2006), si se quiere compilar código con el SDCC para PIC's tipo 18Fxxx y 18Fxxxx, se deben instalar además las liberías "PIC16". En mi caso no las necesito porque voy a compilar para el PIC 16F628A.

Prueba general

Para probar que el compilador SDCC está instalado y puede compilar algo, creo un archivo de texto de nombre "prueba.c" en el escritorio. En él escribo el siguiente código:

char probando;

void main(void){
  probando = 0;
}


Este código no tiene nada que ver con escribir en C para PIC's usando SDCC sino que es solamente para comprobar que el SDCC esta funcionando (al menos de forma general).

Ahora en una consola en el escritorio compilo el archivo usando el SDCC mediante:

$ sdcc prueba.c

Esto no devuelve nada en la consola pero si se fijan en el escritorio, tiene que haber generado varios archivos producto de la compilación.

1 comentario: