Problem med TCP/IP stack (lwIP)

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Problem med TCP/IP stack (lwIP)

Inlägg 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
Seven11
Inlägg: 547
Blev medlem: 13 maj 2004, 23:43:33

Inlägg av Seven11 »

vad tycker du ser konstigt ut med nr. 46?
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Inlägg 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...
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Inlägg 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?
Användarvisningsbild
speakman
Inlägg: 4838
Blev medlem: 18 augusti 2004, 23:03:32
Ort: Ånge

Inlägg av speakman »

Kan inte Ethereal också generera data på Ethernet?

Mvh
speakman
Seven11
Inlägg: 547
Blev medlem: 13 maj 2004, 23:43:33

Inlägg 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...
Användarvisningsbild
flippy
Inlägg: 110
Blev medlem: 10 december 2005, 13:49:44

Inlägg 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.
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg 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?
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Inlägg 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.
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Inlägg 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.
Seven11
Inlägg: 547
Blev medlem: 13 maj 2004, 23:43:33

Inlägg 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.
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Inlägg 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.
Seven11
Inlägg: 547
Blev medlem: 13 maj 2004, 23:43:33

Inlägg 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...
rehnmaak
Inlägg: 2204
Blev medlem: 13 december 2005, 01:43:41

Inlägg 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....
cyr
Inlägg: 2712
Blev medlem: 27 maj 2003, 16:02:39
Ort: linköping
Kontakt:

Inlägg 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...
Skriv svar