mikrocontroller.net

Forum: Compiler & IDEs UIP uip_timedout()


Autor: Netzwerkfan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich versuche mich gerade am uIP Stack von Adam Dunkel in der Version 
1.0, bzw. dessen Portierung für AVR von:
http://code.google.com/p/avr-uip
Uart Bibliothek ist von Peter Fleury und

Das ganze läuft auf dem AVR-NetIO von Pollin mit einem Atmega644P 
(besser gesagt es sollte darauf laufen).

Die Beispiele mit telnet und dem einfachen Webserver funktionieren und 
nach dem Start wird beim Ping die ersten 1-2x Time Out gemeldet, danach 
funktioniert pingen aber bis zum nächsten Reset einwandfrei.
Das eigentliche Problem liegt beim eigenständigen Aufbau einer 
Verbindung zu einem anderen PC. Nach dem uip_connect(...) wird als 
nächstes das Flag von uip_timout() gesetzt und Wireshark zeigt auch 
keine Packete mit einem Verbindungsversuch an.

Der Compiler (AVR Studio V. 4.18 Build 700, WinAVR 20100110) spuckt 
folgende Fehler/Warnungen aus:
../main.c: In function 'main':
../main.c:48: warning: integer overflow in expression
../main.c:49: warning: integer overflow in expression
../main.c:53: warning: missing braces around initializer
../main.c:53: warning: (near initialization for 'mac.addr')
../psock.c: In function 'psock_send':
../psock.c:188: warning: pointer targets in assignment differ in signedness
../psock.c: In function 'psock_readto':
../psock.c:276: warning: pointer targets in passing argument 2 of 'buf_setup' differ in signedness
../psock.c: In function 'psock_readbuf':
../psock.c:303: warning: pointer targets in passing argument 2 of 'buf_setup' differ in signedness
../psock.c: In function 'psock_init':
../psock.c:334: warning: pointer targets in passing argument 2 of 'buf_setup' differ in signedness
../uip.c:1847: warning: label 'ip_send_nolen' defined but not used
Alle Warnungen beziehen sich auf Code-Fragmente die vom uIP Stack direkt 
oder dessen Portierung stammen und von mir übernommen wurden. Ein 
möglicher Fehler könnte die Zeit (Integer Overflow bei CLOCK_SECOND) 
sein mit der der Stack in main über Timer aufgerufen wird, empfohlen 
werden so wie ich das verstanden habe 500ms. Durch den Overflow liegt 
das eher bei 1<ms, aber auch wenn ich über #define die Konstante manuell 
setze (auf 16M/(1024*255) = 61 ) erhalte ich nur uip_timedout() ohne 
Pakete im Äther.
Ein Stack-Überlauf erscheint unwahrscheinlich:
AVR Memory Usage
----------------
Device: atmega644p

Program:   14096 bytes (21.5% Full)
(.text + .data + .bootloader)

Data:       1222 bytes (29.8% Full)
(.data + .bss + .noinit)

Im Anhang sind die relevanten C-Dateien, ich hoffe jemand findet die 
Zeit mir bei meinem Problem zu helfen.

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.