Problem med TCP/IP stack (lwIP)
Problem med TCP/IP stack (lwIP)
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
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
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?
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?
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...
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...
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.
Nu fungerar det
Som vanligt så faller allt på crappy programvara
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.

Som vanligt så faller allt på crappy programvara

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.
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....
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....
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...
http://www.opencores.org/projects.cgi/w ... c/overview
Ingen krypterad källkod där iaf, eller licenspengar...