HomeBlogMagic

SDCC installieren - Ubuntu

Da in der offiziellen Ubuntu Repository leider nur eine veraltete Version zur Verfügung steht, ist es gerade für neuere Mikroprozessor-Typen notwendig eine aktuellere Verion zu installieren.
Ein weiterer Grund ist die inkompatibilät des SDCC-Manuals mit den Versionen for 3.x
Die für die Installation notwendigen Pakete finden sich alle auf der Hauptseite des Projektes: http://sdcc.sourceforge.net. Allerdings bevorzuge ich das kompilieren aus den Sourcen.

 Kompilieren aus den Source-Dateien

Für die Installation empfehle ich die Dateien aus der Subversion des Projektes:

svn co https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc sdcc

Zusätzlich benötigte Pakete unter Ubuntu, wenn nicht schon vorinstalliert:
bison
gcc, g++
flex
libboost-all-dev 

sudo apt-get install bison g++ flex libboost-all-dev

Anschließend in das sdcc Verzeichnis aus der Subversion wechseln,

./configure

ausführen und mit

make
make install 

die Binaries erstellen und ins System integrieren. Das Kompilieren kann einige Zeit benötigen, da das Projekt einen erheblichen Umfang besitzt. 

Anmerkungen

Probleme:

bei make install werden die Dateien unter /usr/local/share/sdcc , /usr/local/bin/sdcc statt wie unter Ubuntu üblich /usr/bin und /usr/share angelegt.

Da einige devices nur unter non-free linkbar, bzw. eingebunden werden können, ist es wichtig sdcc mit --user-non-free auf zu rufen oder bei der Benutzung einer IDE wie MPLAB-X die non-free aktivieren.

Da sich gegenüber der alten Version von Ubuntu einiges getan hat, kann es passieren das einige Funktionen bzw. besondere Schreibweißen unter der neuen Version nicht mehr Funktionieren. Zum Beispiel habe ich für die Config-Register immer mit Speicherzuweißungen wie "unsigned short config at 0x2007 =" gearbeitet, welche in der neuen Version nur noch mit "unsigned short __at(  _CONFIG1 ) config =" funktioniert. Auch die Interrupt Service Routine hat sich geändert, früher: "void ISR(void) interrupt 0", jetzt: "void ISR(void) __interrupt(0)"

Bisher habe ich die Sourcen nur unter der 32bit Version getestet und kann somit keine Aussagen über die 64bit Version treffen.

Vorteile:

- Erheblich mehr unterstützte Prozessoren.
- Konform mit dem offiziellen Benutzerhandbuch des SDCC
- Besonderheiten in C angepasst und auch leicher zu anderen Compilern portierbar.

Permalink: https://adirmeier.de/Blog/ID_81
Tags: Blog, Linux, SDCC, Ubuntuvon am 2012-11-16