Sida 1 av 2

Problem med TCP/IP stack (lwIP)

Postat: 8 augusti 2006, 22:56:36
av rehnmaak
Jag försöker få ordning på ett inbyggt system med TCP/IP komm. över ethernet. Jag har för lite kunskap om detta och det fungerar inget vidare. Att skicka data från mitt system till en PC fungerar bra. Men att ta emot data som skickas från PC:n till mitt system fungerar inget vidare. Problemet är att kommunikationen är slö och ryckig till att helt sluta fungera.

Systemet är en Microblaze med OPB_EMAClite och LwIP v2.00

Första framen som ser konstig ut är nr46 och sen fattar jag inget...

Här är en dump gjord med ethreal:

textformat: http://hard-soft.se/docs/tcs.txt

ethreal (pcap): http://hard-soft.se/docs/tcs.cap

Postat: 9 augusti 2006, 00:14:21
av Seven11
vad tycker du ser konstigt ut med nr. 46?

Postat: 9 augusti 2006, 00:31:37
av rehnmaak
Den har ju redan skickat ett ACK=1534 i frame 44. Sedan kommer det ytterligare en i frame 50 och 52.

Som sagt jag är ingen expert...

Postat: 9 augusti 2006, 00:58:42
av rehnmaak
Hmm, jag tror jag fattar... byte 1535 och framåt är tappade. Alltså tjatar mottagaren att den sista ok byten var 1534 tre gånger sedan skickar pc:n om det datat.

Jag tror jag måste skriva någon liten test app som är enklare att felsöka än TCP. Finns det något bra program för att skicka UDP paket av godtycklig sort till en viss IP och PORT? Eller måste jag sätta mig och skriva ett sådant program?

Postat: 9 augusti 2006, 07:26:32
av speakman
Kan inte Ethereal också generera data på Ethernet?

Mvh
speakman

Postat: 9 augusti 2006, 11:12:30
av Seven11
http://www.fpga4fun.com/10BASE-T3.html har du ett program som skickar väldigt enkla UDP ramar med hjälp av Winsock. Behöver du något mer avancerat får du nog skriva ett själv med hjälp av WinPcap eftersom Windows inte tillåter "raw:a sockets".

Men är det inte så att om man använder "glidande fönster" (vilket TCP/IP gör) så behöver det inte direkt komma ett ACK efter varje datapaket.

Den stora frågan är om den applikationen du gör verkligen behöver TCP? oftast räcker det med UDP eller kanske något ännu enklare...

Postat: 9 augusti 2006, 11:39:39
av flippy
Precis, fönstret i tcp bestämmer hur många paket man kan skicka iväg innan man får ett ack-paket.

Postat: 9 augusti 2006, 11:49:20
av cyr
Hur ser det ut med buffrar osv? Finns det någonstans där paket som kommer in för snabbt kan försvinna eller skrivas över?

Postat: 9 augusti 2006, 11:50:38
av rehnmaak
>>>skriva ett själv med hjälp av WinPcap eftersom Windows inte tillåter "raw:a sockets".

Jag förstod inte det där riktigt...

Hursomhellst har jag nu skrivit ett litet program som skickar några UDP paket (windows sockets). Jag ska kolla vad som händer på mottagarsidan.

Postat: 10 augusti 2006, 00:53:07
av rehnmaak
Problemet ligger tydligen i att jag inte får något avbrott från ethernet MAC:en ibland. Jag ska höra med xilinx om de har haft något liknande problem förut.

Postat: 12 augusti 2006, 12:46:50
av Seven11
WinPcap är ett bibliotek som kan användas för att få direkt tillgång till nätverksgränsnitt därav kan man skapa paket som är uppbyggda hur som helst (vilket source IP, source MAC, window eller vilket fält som helst kan sättas till vad som helst egentligen). Jag vet inte om du behöver något så kraftfullt, annars funkar ju alltid Winsock 2 om man inte behöver mixtra med alla fält.

Postat: 12 augusti 2006, 22:02:26
av rehnmaak
Nu fungerar det 8)

Som vanligt så faller allt på crappy programvara :evil:

Jag har skrivit om halva EMAC interfacet till lwIP stacken. Det tar emot lite att jag ska behöva BETALA för att få skriva programvaran själv...

EMAC interface och drivers levereras av Xilinx i detta fall och ingår som en del i LwIP-stacken.

Postat: 13 augusti 2006, 14:52:29
av Seven11
fan va illa... ja så är det med closed-source :evil:

men har du ingått ett NDA avtal med Xilinx? eller hur fungerar det för kärnan levereras väl i kompilerad form...

Postat: 13 augusti 2006, 15:30:25
av rehnmaak
Något NDA avtal har jag inte skrivit...

lwIP och anpassningen mot EMAC kärnan är open source. Den finns tillgänglig på lwIP-hemsidan.

Det är väl själva kärnan som man betalar för. Men man vill ju gärna ha en lösning som fungerar utan att behöva lägga en massa tid på att felsöka när man har betalat.

Nu har jag kört på en utvärderingslicens så jag har inte pröjsat ännu. Egentligen skulle jag använda liteversionen av EMAC kärnan, men den funkar inte heller. Där saknas avbrott ibland. Jag skulle ju kunna använda den vanliga EMAC:en men jag tror inte jag får plats i fpga:n och dessutom ska de ha närmare 100.000kr för den och det är liiite över min budget. Så det blir att fortsätta jaga fel på EMAClite kärnan. Problemet där är att vhdl-koden är krypterad så den går inte att läsa....

Postat: 13 augusti 2006, 16:10:40
av cyr
Vet du hur Opencores ethmac står sig i förhållande till den från xilinx?

http://www.opencores.org/projects.cgi/w ... c/overview

Ingen krypterad källkod där iaf, eller licenspengar...