www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SDCC selbst mitentwickeln.


Autor: skorpionx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 dir 
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/fid4E21E60DED227318812EA3B...
    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/sdc...) 
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…

Autor: Boris Bukowski (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

ich würde dir raten, erstmal den Compiler zu benutzen, den das Projekt 
nutzt.

Von der Webseite:
---snip---
What Platforms are Supported?

Linux - x86, Microsoft Windows - x86 and Mac OS X are the primary, so 
called "officially supported" platforms.

SDCC compiles natively on Linux and Mac OS X using using gcc. Windows 
release and snapshot builds are made by cross compiling to mingw32 on a 
Linux host.

Windows 9x/NT/2000/XP users are recommended to use Cygwin 
(http://sources.redhat.com/cygwin/) or may try the unsupported Borland C 
compiler or Microsoft Visual C++ build scripts.
---snip---

Wenn das läuft, kannst du immer noch versuchen, das ganze auf andere 
Compiler
zu portieren.

Boris

Autor: skorpionx (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du mir einen guten Compiler für Cygwin oder MingW empfählen?
Mit Src-Debugen und vernünftiger Entwicklungsumgebung..

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stell Borland mal auf C99 um, das sollte das Problem mit der 
Initialisierung lösen. Ansonsten gcc + beliebiger Editor/IDE (z.B. 
Eclipse). Debugger sollte bei der Compilerentwicklung nicht unbedingt 
notwendig sein, wenn doch kannst du gdb verwenden.

Autor: Arno Nyhm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> 1 ? (void)0 : printf

...das kann doch nur ein böser Hack von eime Programmierer sein, etwas 
zu realisieren was der Compiler anders anmäkeln würde...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.