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
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
'-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. ;)
...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... ;)
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.
1000Dank, mit der -E Option habe ich den (idiotischen) Fehler gefunden Greets Karlheinz
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> |
> '-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.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.