www.mikrocontroller.net

Forum: Compiler & IDEs Präprozessorlisting ausgeben ?


Autor: Karlheinz Druschel (kdruschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leuts,

ich möchte mir der wohl recht bekannten UART-Lib von P. Fleury arbeiten.
Ich setzte hier auf AVR-Studio und gcc.
Nun habe ich einen ATMega128, der auch in den Eigenschaften des 
Projektes richtig definiert ist.
Über #include <avr/io.h> habe ich die prozessorspezifischen Definitionen 
eingebunden.

Nun habe ich in der Datei uart.h folgenden Fehler:
#if ( (UART_RX_BUFFER_SIZE+UART_TX_BUFFER_SIZE) >= (RAMEND-0x60 ) )
#error "size of UART_RX_BUFFER_SIZE + UART_TX_BUFFER_SIZE larger than 
size of SRAM"
#endif

Da UART_RX_BUFFER_SIZE und UART_TX_BUFFER_SIZE jeweils mit 32 definiert 
sind, kann der Fehler eigentlich nur bei RAMEND liegen. Das wiederum ist 
aber als 0x10FF vorgegeben.

Um dem Fehler auf die Spur zu kommen, suche ich nach einer Möglichgkeit 
das Präprozessorlisting anzuschauen. Geht sowas beim AVR-Studio mit gcc 
?

Greets
Karlheinz

Autor: Bernhard R. (barnyhh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das gibt es beim gcc, wahrscheinlich sogar auf 2 Arten: einmal nach 
stdout bzw stderr und einmal in eine Textdatei. Schau mal in die 
gcc-Dokumentation. Eine weitere Möglichkeit besteht darin, per 
Hilfe-Option die Liste der zulässigen gcc-Optionen auszugeben. Nach 
meiner vagen Erinnerung könnte es mit der Option "-E" oder "-I" zu tun 
haben.

Viel Erfolg
Bernhard

Autor: sous (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
'-E' läßt nur den Preprocessor laufen und gibt das Ergebnis auf der 
Konsole  aus. Möchte man dies in ein File umlenken, so kann man noch 
'>filename'angeben.
Also:
avr-gcc source.c -E >filename

Ach ja: Die -mmcu=Controllertyp sollte man auch angeben, da sonst 
gewisse Includings nicht korrekt preprozessiert werden.   ;)

Autor: sous (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...nachdem ich die Frage nochmal genau gelesen habe ('...in 
AVR-STudio...'):

Wenn Du den Compiler nicht von der Konsole aus starten möchtest, kannst 
Du das auch aus dem AVR-Studio heraus machen. Dazu bitte folgendes tun:

Im Menü 'Projekt/Coniguration Options' anwählen,
in dem sich öffnenden Fenster 'Custom Options' wählen,
dort kannst Du Compiler-Direktiven hinzufügen.
Da fügst Du dann '-E' ein (in untere Zeile eintragen und mit 'Add' 
abschliessen).

Wenn Du jetzt den Buildvorgang anstößt, dann erscheint das Ergebnis 
unten im Ausgabefenster 'Build'.

Auch hier kannst Du die Ausgabe in ein File umlenken, dann mußt Du 
ausser '-E' noch '>file.c' als weitere Custom Option hinzufügen. (Die 
Extension .c empfielt sich, dann hast Du das passende 
Syntax-Highlighting, wenn Du das Ergebnis im AVR-Studio anschaust.)

Das Ergebnis file.c sollte dann im Zielordner (in meinem Falle 
'default') zu finden sein.


Und nicht vergessen, die Optionen wieder herauszunehmen, bevor Du dann 
normal weiterarbeiten möchtest... ;)

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karlheinz Druschel wrote:

> #if ( (UART_RX_BUFFER_SIZE+UART_TX_BUFFER_SIZE) >= (RAMEND-0x60 ) )

Die 0x60 ist eine unsinnige Hausnummer.  Die stimmt nur für ganz
alte AVRs.

Autor: Karlheinz Druschel (kdruschel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1000Dank, mit der -E Option habe ich den (idiotischen) Fehler gefunden

Greets
Karlheinz

Autor: Johann L. (gjlayde) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Karlheinz Druschel wrote:

> Um dem Fehler auf die Spur zu kommen, suche ich nach einer Möglichgkeit
> das Präprozessorlisting anzuschauen. Geht sowas beim AVR-Studio mit gcc
> ?
>
> Greets
> Karlheinz

Mit der gcc-Option -save-temps werden Zwischendateien nicht temporär 
angelegt und bleiben im aktuellen Verzeichnis, von dem aus gcc gerufen 
wird.

Rein Precompilieren geht mit -E

Defines anzeigen geht mit
avr-gcc -E -dM <datei>

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> '-E' läßt nur den Preprocessor laufen und gibt das Ergebnis auf der
> Konsole  aus. Möchte man dies in ein File umlenken, so kann man
> noch '>filename'angeben.

Oder halt '-o filename'

Am einfachsten ist es, wenn man direkt die gcc-Kommandozeile kopiert, 
die make beim Bauen anzeigt und da dann noch ein -E reinmacht und bei -o 
den gewünschten Dateien einsetzt. Dann hat man alle Einstellungen genau 
so wie beim Bauen.

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.