Forum: Mikrocontroller und Digitale Elektronik LWIP , PHY und RX Funktion


von H. R. (hacker_r)


Lesenswert?

Hi
Kennst sich jnd aus?
Ich bringe gerade ein PHY (KSZ8863) mit einem STM32 zum laufen.
Ich kann das Board noch nicht pingen.
Von PHY kommen schon irgendwelche signal bei STM32 an.
Ich wurde gerne in LWIP ein breakpoint setzen und debuggen.
Wie heisst die erste Funktion/ISR in LWIP die Aufgerufen wird wenn ein 
Packet ankommt?

Danke

von Dr. Sommer (Gast)


Lesenswert?

H. R. schrieb:
> Wie heisst die erste Funktion/ISR in LWIP die Aufgerufen wird wenn ein
> Packet ankommt?

Normalerweise netif->input. Eben die, die du (!) in deiner 
Ethernet-ISR aufrufst. Wenn du die nicht aufrufst, passiert natürlich 
auch nix.

von H. R. (hacker_r)


Lesenswert?

Vielen dank für die schnelle Antowrt,
Der RX Interrupt kommt nicht.
ARP funktioniert aber. Daraus schliesse ich ja dass IP und MAC Adresse 
schon mal an PHY weiter gereicht wurden.
Weisst du auch in welche Funktion in LWIP IP und MAC Adresse an PHY 
geschickt werden?

von Dr. Sommer (Gast)


Lesenswert?

H. R. schrieb:
> Der RX Interrupt kommt nicht.
> ARP funktioniert aber.

Das widerspricht sich. Wenn nichts empfangen werden kann (da der 
Empfangsinterrupt nicht kommt), kannst du auch keine ARP-Daten 
empfangen.

Was meinst du genau mit "ARP funktioniert aber"?

H. R. schrieb:
> Daraus schliesse ich ja dass IP und MAC Adresse
> schon mal an PHY weiter gereicht wurden.

Dann aber nur das gratuitous ARP Paket.

H. R. schrieb:
> Weisst du auch in welche Funktion in LWIP IP und MAC Adresse an PHY
> geschickt werden?

Das sind mehrere Stufen. Der Ethernet-ARP Treiber erstellt 
Ethernet-Pakete. Die werden dann an deinen Ethernet-Treiber übergeben. 
Dieser muss dann in deiner netif->linkoutput das Paket absenden. Benutzt 
du DHCP oder statische IP? Hast du dir mal den Log anzeigen lassen? Der 
ist sehr hilfreich.

von H. R. (hacker_r)


Lesenswert?

> Was meinst du genau mit "ARP funktioniert aber"?
> Dann aber nur das gratuitous ARP Paket.
Joop ist ein gratuitous ARP. LWIP ruft  etharp_request_dst auf.
Empfangen tue ich trotzdem nix. UDP packete über netconn senden geht 
auch noch nicht. Ich benutze ein KSz8863 dualport ethernet.

> Das sind mehrere Stufen. Der Ethernet-ARP Treiber erstellt
> Ethernet-Pakete. Die werden dann an deinen Ethernet-Treiber übergeben.
> Dieser muss dann in deiner netif->linkoutput das Paket absenden. Benutzt
> du DHCP oder statische IP? Hast du dir mal den Log anzeigen lassen? Der
> ist sehr hilfreich.

Statische IP Adresse. gratuitous ARP wird in wiresharc gesehen.
Was für logs willst du sehen?

von Dr. Sommer (Gast)


Lesenswert?

H. R. schrieb:
> Was für logs willst du sehen?

Die von lwIP... Das was über LWIP_PLATFORM_DIAG ausgegeben wird. Aber 
dein Problem ist ja, dass der Ethernet-Empfangs-Interrupt nicht kommt. 
Also musst du deinen Ethernet-Treiber korrigieren, das hat mit lwIP 
nichts zu tun.

von H. R. (hacker_r)


Lesenswert?

Hi
>> Also musst du deinen Ethernet-Treiber korrigieren
Du liegst wohl richtig.
Hast du eine Idee warum mein PHY den gratuitous ARP durch lässt, aber 
die weiteren Packete die ich sende nicht?

von Dr. Sommer (Gast)


Lesenswert?

H. R. schrieb:
> Hast du eine Idee warum mein PHY den gratuitous ARP durch lässt, aber
> die weiteren Packete die ich sende nicht?

Was sendest du denn noch für Pakete vom Gerät aus?

von H. R. (hacker_r)


Lesenswert?

> Was sendest du denn noch für Pakete vom Gerät aus?
UDP packete. ich habe ein board mit DP83848 phy. Da empfange ich Meine 
UDP Packete auf dem PC. Aber der KSZ8863 schickt sie richtung PC nicht 
raus.
Was meinst?

von Dr. Sommer (Gast)


Lesenswert?

H. R. schrieb:
> UDP packete. ich habe ein board mit DP83848 phy.

Ich dachte du hast einen KSZ8863.

H. R. schrieb:
> Da empfange ich Meine
> UDP Packete auf dem PC.

Empfängst du sie jetzt oder nicht...

H. R. schrieb:
> aber
> die weiteren Packete die ich sende nicht?

von H. R. (hacker_r)


Lesenswert?

Hi
> Ich dachte du hast einen KSZ8863.
Ich habe ein altes board mit DP83848. Da geht alles. Das neue Board ist 
mit KSZ8863. Da geht es nicht.

-> Board mit DP83848 und stm32f4 -> PC empfängt die UDP packete
-> Board mit KSZ8863 und stm32f4 -> PC empfängt die UDP packete nicht

Auf dem KSZ8863 board sehe ich dass an den RX Leitungen Daten anliegen. 
Bleibt die Frage warum beim STmn32f4 kein DMA fnished Interrupt 
ausgelöst wird.

Woher weiss den eigenlitch STM32 dass ein Daten packet zu ende ist?

von Dr. Sommer (Gast)


Lesenswert?

H. R. schrieb:
> Auf dem KSZ8863 board sehe ich dass an den RX Leitungen Daten anliegen.

Ich dachte es geht um's Senden.

H. R. schrieb:
> Woher weiss den eigenlitch STM32 dass ein Daten packet zu ende ist?

Du konfigurierst im DMA die Länge...

von NatuerlicheLogik (Gast)


Lesenswert?

H. R. schrieb:
> -> Board mit DP83848 und stm32f4 -> PC empfängt die UDP packete
> -> Board mit KSZ8863 und stm32f4 -> PC empfängt die UDP packete nicht

--> du hast einen Verdrahtungsfehler am Board mit KSZ8863

von H. R. (hacker_r)


Lesenswert?

Hi

> Ich dachte es geht um's Senden.
ich sehe auf Rx Leitungen und TX Leitungen was.
RX-> weil das board pinge
TY-> ich sende UDP packete zum PC

von H. R. (hacker_r)


Lesenswert?

> --> du hast einen Verdrahtungsfehler am Board mit KSZ8863
Alle Leitungen 5 mal uberprüft

von Dr. Sommer (Gast)


Lesenswert?

H. R. schrieb:
> RX-> weil das board pinge

Warum Grammatik wichtig ist:

Weil [ich] das Board pinge
oder
Weil das Board pingt

Ein gewisser Unterschied...

H. R. schrieb:
> TY-> ich sende UDP packete zum PC
TY? Thank You?

von H. R. (hacker_r)


Lesenswert?

>> Warum Grammatik wichtig ist:
recht hast du ;-)

RX-> PC schickt ping requests an board, die zwar aus KSZ8863 rausgehen, 
aber nicht in stm32 ankommen

TX-> STM32 sendet UDP packete zum PC

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.