www.mikrocontroller.net

Forum: FPGA, VHDL & Co. MicroBlaze Ethernet Kommunikation Polling


Autor: Robbi (Gast)
Datum:

Bewertung
1 lesenswert
nicht lesenswert
Hi,

habe ein Problem bei meiner Ethernetkommunikation mit 2 Spartan-3A 
Boards von Xilinx. Habe den EthernetLite Core verwendert und als 
Prozessor den MicroBlaze Softcore.

Mein Problem ist angelehnt an das xemaclite_polling example, welches von 
Xilinx (EDK) mitgeliefert wurde (siehe Anhang).

Ich versuche einen einzelnen Frame zu verschicken (46 entspricht dem 
Payload):
do
{
Status = XEmacLite_Send(EmacLiteInstancePtr, (u8 *)TxFrame, 46 + 
XEL_HEADER_SIZE) ;
} while (Status != XST_SUCCESS);

Das 2. Board pollt auf ankommende Daten:
while (RecvFrameLength == 0)  {
RecvFrameLength = XEmacLite_Recv(EmacLiteInstancePtr, (u8 *)RxFrame);
}

Habe beide Boards über einen funktionierenden Switch verbunden.

Ich starte zuerst das 2. Board (Empfänger) dann den Sender, damit das 
Senden nicht im Nirvana verschwindet.

Komischerweise erkennt der Empfänger keine Daten, hängt also in der 
while-Schleife fest.

Habe zum Testen um das do-while des Senders eine Endlosschleife gemacht, 
dann werden Daten vom Empfänger erkannt.

Kann es sein das es daran liegt, dass sowohl Send wie auch Recv 
non_blocking sind? Wie kann ich das Problem lösen?

Gruss Robbi

Autor: Robert Schelkle (Firma: Student) (rschelkle)
Datum:
Angehängte Dateien:

Bewertung
1 lesenswert
nicht lesenswert
Hatte den Anhang vergessen ...

Autor: Robbi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

das Problem ist gelöst.
Falls nochmal jemand dieses Problem hat:
Bei mir es lag es daran, dass der Switch noch nicht bereit war, das 
Board aber schon gesendet hat.

Klingt im Nachhinein ziemlich einfach und dumm, hat mich aber 3 Tage 
gekostet.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.