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 <->
    Windows

    2. 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\bin

    3. 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\z80

    6. 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.txt

    7. 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 selectSpil

    Alle Fehler (in C:\sdcc\src\pic\ ralloc.c) haben Verbindung zum Makro:
    #define FENTRY2 1 ? (void)0 : printf

    Ein 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 printf

    In 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…


Anmelden zum Antworten