Präprozessorlisting ausgeben ?

OP #1080758
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
#1080787
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
Gast #1080802
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.   ;)
Gast #1080819
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... ;)
Persönliche Seite #1080963
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
1
avr-gcc -E -dM <datei>
Gast #1081020
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren