Ethernet LwIP kullanımı

Başlatan robikod, 08 Ocak 2020, 09:05:27

algorist

Alıntı yapılan: robikod - 09 Ocak 2020, 16:09:17Şimdi bir nokta dikkatmi çekti, PC tarafı benim cihaza ARP gönderdikten sonra
  if (HAL_ETH_GetReceivedFrame_IT(&heth) != HAL_OK)
    return NULL;

fonksiyonu (ethernetif_input içerisinde) NULL dönmüyor.

Ancak ben  ben ping atmaya başladıktan sonra bu fonksiyon NULL dönüyor yani bilgisyar bir sebepten dolayı benim cihazıma ping gönderemiyor ya da göndermiyor.
Bilgisayarın subney mask ve cihazın sabnet maskını her ihtimale karşı aynı yap. Bilgisayar tarafında olabileceğinden ping için bir port açıp denemekte yarar var. cihazı taktıktan sonra cmd den netstat -a komutu ile dinlenen portu bul.
daha sonra windows firewall with advanced security adlı pencereyi aç buradan gelen ve giden bağlantıların için kural oluşturabiliyorsun. Outbound Rules'e sağ tıklayıp new rule de, daha sonra port seç nextten sonra gelen sayfada dinleme yaptığında tespit ettiğin portu yaz, nextten sonra gelen sayfada allow seçeneğini tıkla. next next deyip isim yaz ve bitir. Pcyi yeniden başlatıp tekrar dene.

Başka bir öneri network özelliklerinden yeni bir IP ekleyebilirsin, advanced'a tıklayıp IP sekmesinden cihazın IP si ile aynı blokta olacak şekilde bir IP ve Submask ver.
e-e-e

mguven2001

Robikod kardeşim,
Belirttiğiniz problemin üzerinden 1 sene geçmiş. Ancak, aynı problemle ben de karşılaştım.
Çözüm ararken , açılmış bu konuyu buldum. Bu konuyu nasıl çözdüğünüzü (eğer çözmüş iseniz) bizimle de paylaşabilirmisiniz?


Tşk.

robikod

Alıntı yapılan: mguven2001 - 09 Ocak 2021, 21:01:11Robikod kardeşim,
Belirttiğiniz problemin üzerinden 1 sene geçmiş. Ancak, aynı problemle ben de karşılaştım.
Çözüm ararken , açılmış bu konuyu buldum. Bu konuyu nasıl çözdüğünüzü (eğer çözmüş iseniz) bizimle de paylaşabilirmisiniz?


Tşk.

MErhaba sorunu çözmüştüm daha önceden, kodları biraz değiştirdim:
https://paste.ubuntu.com/p/hgtnhnHD32/

robikod

Spesifik olarak da çözüm şu şekilde:
echo->chksum = inet_chksum(iecho, len); satırını kaldırdım çünkü benim kodlarımda checksum hardware tarafından otomatik hesaplanıyordu burada hesaplatmamdan kaynaklı bir hata gerçekleşti

mguven2001

Alıntı yapılan: robikod - 01 Şubat 2021, 09:03:07Spesifik olarak da çözüm şu şekilde:
echo->chksum = inet_chksum(iecho, len); satırını kaldırdım çünkü benim kodlarımda checksum hardware tarafından otomatik hesaplanıyordu burada hesaplatmamdan kaynaklı bir hata gerçekleşti

Robikod kardeşim,
paylaşımın için teşekkür ederim. Eminim daha sonra kullanacak arkadaşlar için de faydalı olacaktır bu bilgi.
Wireshark'tan izlediğimde reply geldiğini görebiliyorum.
Sana bir sorum daha olacak. Reply 'dan gelen mesajın değerlendirmesini, hangi fonksiyonla yaptığını da söyleme şansın var mı?
Sonuçta gelen cevabı değerlendirmemiz gerekiyor.
Sağlıcakla kalın

robikod

Alıntı yapılan: mguven2001 - 23 Şubat 2021, 16:07:42Robikod kardeşim,
paylaşımın için teşekkür ederim. Eminim daha sonra kullanacak arkadaşlar için de faydalı olacaktır bu bilgi.
Wireshark'tan izlediğimde reply geldiğini görebiliyorum.
Sana bir sorum daha olacak. Reply 'dan gelen mesajın değerlendirmesini, hangi fonksiyonla yaptığını da söyleme şansın var mı?
Sonuçta gelen cevabı değerlendirmemiz gerekiyor.
Sağlıcakla kalın
Ne demek rica ederim.
Lwip kütüphanesini kullanıyorsanız, ethernetif_input fonksiyonunu bir loop içerisinde çalıştırıyorsunuzdur, bu fonksiyonda doğrudan low_level_input fonksiyonuna gidiyor. Bu fonksiyonun içerisinde veya bu fonksiyondan çıktıktan sonra mesajın değerlendirmesini özel olarak yapabilirsiniz. Geldiği IP adresini vs data payload'ı içinden çekebilirsiniz.