mikrocontroller.net

Forum: Compiler & IDEs AVRStudio: Makefile, CDEFS, *** No rule to make target


Autor: Markus B. (krabbe)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Habe einen ATmega162.
Versuche mit der Fleury-Bibliothek Code für die USART zu schreiben.
Beim "Build"-Versuch wird folgender Fehler angezeigt:

#error
"size of UART_RX_BUFFER_SIZE + UART_TX_BUFFER_SIZE larger than size of 
SRAM"

Die Ursache ist der folgende Code aus der Datei uart.h:
/** Size of the circular receive buffer, must be power of 2 */
#ifndef UART_RX_BUFFER_SIZE
#define UART_RX_BUFFER_SIZE 32
#endif
/** Size of the circular transmit buffer, must be power of 2 */
#ifndef UART_TX_BUFFER_SIZE
#define UART_TX_BUFFER_SIZE 32
#endif

/* test if the size of the circular buffers fits into SRAM */
#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

Dazu gibt es dann diesen Hinweis am Anfang der Header-Datei:

*
*  The UART_RX_BUFFER_SIZE and UART_TX_BUFFER_SIZE constants define
*  the size of the circular buffers in bytes. Note that these constants 
*  must be a power of 2.
*  You may need to adapt this constants to your target and your
*  application by adding
*  CDEFS += -DUART_RX_BUFFER_SIZE=nn -DUART_RX_BUFFER_SIZE=nn
*  to your Makefile.
*

Habe dann im AVRStudio in der Menüleiste unter "Build" das "Export 
Makefile" aufgerufen und im Projektverzeichnis gespeichert, dann unter 
"Project" -> "Configuration Options" "Use External Makefile" die 
Checkbox markiert und das exportierte Makefile angegeben und 
anschliessend CDEFS += -DUART_RX_BUFFER_SIZE=32 -DUART_RX_BUFFER_SIZE=32 
im Makefile eingetragen.

Leider kommt jetzt, mit oder ohne den Eintrag von "CDEFS += 
-DUART_RX_BUFFER_SIZE=32 -DUART_RX_BUFFER_SIZE=32", beim Ausführen von 
"Build" die folgende Meldung:

make: *** No rule to make target `../gt_ctrl.c', needed by `gt_ctrl.o'. 
Stop.

Habe das Makefile im Anhang eingefügt.

Liegt das Makefile evtl. in einem falschen Verzeichnis, oder ist der 
Eintrag an der falschen Stelle?

Gruss Markus

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
make: *** No rule to make target `../gt_ctrl.c', needed by `gt_ctrl.o'.

Das makefile muss ins Verzeichnis "default" (wenn du keine andere 
Konfiguration angelegt hast), und auch von dort aufgerufen werden.

Im übrigen brauchst du nicht den Weg über ein externes makefile zu 
gehen, wenn du compiler-directiven hinzufügen willst. Unter 
"Projektoptionen" lassen sich die auch direkt angeben. (Unbedingt button 
"ADD" benutzen).
Oder du packst die defines einfach mit ins header-file.

 "UART_RX_BUFFER_SIZE+UART_TX_BUFFER_SIZE) >= (RAMEND-0x60 )
Lt. avt-libc doku kommt RAMEND aus io.h. Schau doch mal dort, bzw im 
entsprechenden MCU-spezifischen file, wie RAMEND definert ist. Das 
sollte eigentlich größer als 64 sein :-)

Oliver

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

Bewertung
0 lesenswert
nicht lesenswert
Du musst erstmal <avr/io.h> includen, sonst ist RAMEND nicht definiert.

AVR Studio hat für die -D-Optionen irgendwo eine eigene Variante.  Guck
mal zwischen all dem Geklicker, irgendwo findest du da voreingestellt
bereits eine für -DF_CPU=xxxx.

Autor: Seb Astian (mbauer79)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Grüße an alle,

ich hatte das gleiche Problem und hab die Einträge in die makefile 
gemacht.

Nun kommt der Kram:

make: *** No rule to make target `../Test_senden.c', needed by 
`Test_senden.o'.  Stop.

Was kann ich tun damit das wieder funktioniert?

Danke

MBauer

P.S. Ja ich habe alles was oben steht schon versucht :( bin total 
frustriert!

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.