UIP uip_timedout()

Gast #1689370
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:
1
../main.c: In function 'main':
2
../main.c:48: warning: integer overflow in expression
3
../main.c:49: warning: integer overflow in expression
4
../main.c:53: warning: missing braces around initializer
5
../main.c:53: warning: (near initialization for 'mac.addr')
6
../psock.c: In function 'psock_send':
7
../psock.c:188: warning: pointer targets in assignment differ in signedness
8
../psock.c: In function 'psock_readto':
9
../psock.c:276: warning: pointer targets in passing argument 2 of 'buf_setup' differ in signedness
10
../psock.c: In function 'psock_readbuf':
11
../psock.c:303: warning: pointer targets in passing argument 2 of 'buf_setup' differ in signedness
12
../psock.c: In function 'psock_init':
13
../psock.c:334: warning: pointer targets in passing argument 2 of 'buf_setup' differ in signedness
14
../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:
1
AVR Memory Usage
2
----------------
3
Device: atmega644p
4

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

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

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

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