SDCC selbst mitentwickeln...
-
Ich habe mir vorgenommen etwas in die Entwicklung von SDCC reinzuschauen. Als Werkzeug dazu möchte ich C++Builder verwenden. Ich hoffe das auch das Debugen
von C-Programmen auch dabei möglich wird. Mein erster Schritt in diese Richtung ist der Versuch die snapshots/sdd-src zu kompilieren.
Später werde ich mich nur auf zwei für mich interessanten Prozessoren
AVR und PIC konzentrieren.Meine erste Schritte:
1. http://totato.com/ : EOL Konverter ermöglicht Wandlung von Textdateien Linux <->
Windows2. http://particle.teco.edu/software/sdcc/sdcc-archiv.html : SDCC_MinGW laden und
installieren (Z.B. auf dem Laufwerk C:) .
Vom Verzeichnis C:\SDCC_MinGW\msys\1.0\bin gawk.exe in
das Verzeichnis C:\SDCC_MinGW\MinGW\bin kopieren.
PATH ändern: Start -> Systemsteuerung -> Sytem -> Erweitert ->
Umgebungsvariablen -> Path -> Bearbeiten. Am Ende einfügen:
;C:\SDCC_MinGW\MinGW\bin3. http://www.koders.com/c/fid4E21E60DED227318812EA3BE4582C011C303524B.aspx
Files: aslex.c und asm.h laden.
C++Builder öffnen und dann: Neue->Anwendung->Weitere->C-Datei.
Weiter dem Projekt beide Dateien aspex.c und asm.h hinzufügen.
Menue Sart->Start (oder F9) wählen.
So wurde aslex.obj erstellt.4. http://sdcc.sourceforge.net/snap.php
Aktuelle SDCC Source Code (sdcc-src)
(Z.B. http://sdcc.sourceforge.net/snapshots/sdcc-src/sdcc-src-20090101-5312.tar.bz2) laden.
Das gepackte File entpacken in C:\. Dann entsteht Verzeichnis
C:\sdcc\...5. Jetzt habe ich das aslex.obj in alle Unterverzeichnisse kopiert:
C:\sdcc\as\asxxsrc
C:\sdcc\as\hc08
C:\sdcc\as\mcs51
C:\sdcc\as\xa51
C:\sdcc\as\z806. Jetzt: Start->Alle Programme_>Zubehör->Eingabeanforderung.
Dann über bekannte Dos-Befehle (cd \, cd sdcc) in das Verzeichnis c:\sdcc.
Jetzt in der Kommandozeile tippen: make –fMakefile.bcc >meldungen.txt7. Alle Meldungen wurden in das File meldungen.txt geschrieben.
Es sind 4 Fehler aufgetreten:Fehler E2468 ralloc.c 1399: Ein Wert vom Typ void ist nicht zulässig in Funktion createStackSpil
Fehler E2468 ralloc.c 1483: Ein Wert vom Typ void ist nicht zulässig in Funktion isSpiltOnStack
Fehler E2468 ralloc.c 1512: Ein Wert vom Typ void ist nicht zulässig in Funktion spillThis
Fehler E2468 ralloc.c 1562: Ein Wert vom Typ void ist nicht zulässig in Funktion selectSpilAlle Fehler (in C:\sdcc\src\pic\ ralloc.c) haben Verbindung zum Makro:
#define FENTRY2 1 ? (void)0 : printfEin Anruf:
FENTRY2("called.");
führt zum Fehler;“C” gibt es grenzlose Möglichkeiten. Manche führen jedoch zum „Absurdum“
Was bezweckte der Entwickler bei dem Makro?
Vorläufig habe ich das Makro geändert:
#define FENTRY2 printfIn der Kommandozeile getippt: make –fMakefile.bcc >meldungen.txt
Jetzt wird einen Fehler gemeldet:
Fehler E2063 glue.c 142: Unzulässige Initialisierung in Funktion pic14_constructAbsMap.
Die Zeile 142 im File c:\sdcc\src\pic\glue.c:
memmap *maps[] = { data, sfr, NULL };Vielleicht weiß schon jemand etwas dazu…