mikrocontroller.net

Forum: Compiler & IDEs AVR32 Studio, GNU Toolchain Probleme: fdevopen


Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo allerseits,

arbeite seit kurzem auf einem EVK1100 und portiere Code eines AT90USB.
Ich verwende das AVR32 Studio mit GNU Toolchain (alles von 
Atmel-Homepage downgeloadet).
Bei der Portierung ist mir jetzt aufgefallen, dass in stdio.h die 
Funktion fdevopen(..) nicht vorhanden ist!!??

Standardmaessig ist diese Funktion jedoch in frueheren Versionen von 
avr-libc vorhanden und in der selben Version wie sie von ATMEL 
downgeloadet werden kann ist die Funktion urspruenglich vorhanden.

Hat jemand selbiges Problem und wie koennte man das loesen?
Das Builden von aktuellen Source hab ich bisher noch vermieden, da es 
mich wundern wuerde, wenn ATMEL eine Toolchain anbietet, die 
grundlegende Funktionen nicht anbietet.

lg, Andreas

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

Bewertung
0 lesenswert
nicht lesenswert
fdevopen() gehört zur avr-libc für die 8-bit-AVRs.  Diese haben kein
zu Grunde liegendes Betriebssystem und daher auch kein Dateisystem,
daher emuliert fdevopen() in etwa die Funktionalität von fopen() für
die Kommunikation mit der Peripherie des Controllers.

Mit AVR32 kenne ich mich nicht so recht aus.  Die AP7000 laufen ja
mit einem Betriebssystem, da sollte dann normal fopen() unterstützt
werden.  Die UC3 sind eher eine Kategorie kleiner, da musst du mal
die Doku wälzen, ob und wie dort stdio unterstützt wird.  Die avr-libc
ist jedoch dafür nicht da, meines Wissens benutzt die Toolchain dort
die sogenannte "newlib".

Autor: Andreas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

leider gibt es bei der newlib kein fdevopen.

Ich hab zwar im Netz schon gesehen bzgl. der Umleitung von stdio auf 
uart, jedoch kann ich mir nicht genau erklaeren wie dies funktionieren 
soll.
Dabei werden _read und _write Funktionen ueberschrieben und dadurch wird 
lt. diesem Forum bei printf die Fkt. _write aufgerufen.

Es gibt bei dem verfuegbarene SW Framework unter dem CDC Virtual COM 
Example eine Umleitung von printf auf COM1, jedoch ist dies wiederum 
eine Eigenheit, da es sich hier um eine Art Debug-Ausgabe handelt.

Ich will eine Umleitung des FileStreams (lesen mit fgetc und schreiben 
mit fputc) auf USART ueber USB. Kommunikation ueber USB laeuft, nur die 
Umleitung funktioniert eben nicht so wie ich mir das vorstelle.

Bei dem 8-Bit AVR hat das ganze wie folget ausgesehe:

//stream I/O wrapper functions
int strm_putc(char c,FILE *s)
{
  uart_putc(c);
  uart_usb_putchar(c);
  return 0;
}

int strm_getc(FILE *s)
{
  for(;;)
  {
    if(!uart_is_rx_empty())
      return (unsigned char)uart_getc();
    if(uart_usb_test_hit())
      return (unsigned char)uart_usb_getchar();
  }
}



Ich hoffe es kann mir jemand weiterhelfen.

lg, Andreas

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.