STM32F103C8'e ethernet çipi bağlamak

Başlatan z, 17 Eylül 2016, 18:33:38

Burak B

#195
İşlemci zamanını etkin bir biçimde parçalara bölersek olur herhalde. Hafızayıda baya iyi idare etmek lazım. Birde zaman aşımı kullanmak gerekebilir. Yoksa sürekli loop larda beklemek gelen paketlerin çöpe gitmesine neden olabilir mi bilemedim ?

Alıntı yapılan: z - 27 Eylül 2016, 23:16:17
@Burak B

Hiç bir şey anlamadım. Mevcut sorunu söyleyeyin ki programı nasıl yazacağız nasıl bir strateji uygulayacağız baştan bilelim.

Alıntı yapılan: Burak B - 27 Eylül 2016, 21:25:16
Aşağıdaki linkte verdiğim uygulamayı yükleyin ve öğrenmeye anlamaya çalışın size çok faydası olacaktır bu noktadan sonra.
http://ostinato.org/downloads

O soruların hepsine yanıt aramanız gerekecek. Ama @gerbay' ın da dediği gibi şimdi değil UDP' yi deneyin önce. Bu iş RTOS olmadan da olur tabii; neden olmasın ? Oluyor da zaten. lwip bunu yapıyor.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

z

1 dakika şimdi. Neden işlemci zamanını parçalara bölmem gerekiyor?

Ben şöyle yapmayı düşünüyordum. Bu yapıda sorun varmı?

IP paket geldi. İçine baktım benden ne isteniyorsa ilgili rutin cevap yazacak ve yolllayacak.

Bu işlemi mili saniyeler içinde işlemci yerine getirecek. Ardından gene paket bekleyeceğim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Burak B

#197
Ping atarken 1<ms ve TTL değerleri gözünüze ilişmiştir. Bir timer mekanızması oluşturmanız gerekiyor ve tüm modüller buna bağlı olmalı. Öyle ki bir loop tüm sistemi durduruyor olsa bile bu timer etkilenmesin ve verileri alıp pompalamaya devam etsin. Etsinki işleyemediğiniz veriler çöpe gitmesin. Web server kısmına kadar geldiğinizde çok daha büyük verileri işleyebiliyor olmanız gerekecek.

Ayrıca fragmente olmuş paketlerin her zaman düzenli sırada geleceği gibi bir fikrede kapılmamak lazım. Her an herşey olabilir. Şunuda unutmayın handshake yapmıyorsunuz. Mesela UDP protokolünde gönderici belli bir miktar veriyi ağa bırakır ve unutur. Siz bu veriyi işleyebilecek kadar hızlımısınız ? Bu veri 10Mbayt bile olabilir ! Mesela Video verisi olabilir. MTU 1500 olduğuna göre. Bu iş nasıl olacak.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

z

#198
1ms ve TTL değeri gözüme ilişti de bunlarla hiç işim olmadıki.

Bu değerler ping atan tarafın sorunu değil mi?

Muhakkak işin içinde pislik var. Ama inanın uyarmaya çalıştığınız sorunu göremedim henüz.

Ben olaya şöyle bakıyorum.

Bana birileri bir paketler yolluyor. Paketi açıyorum içinden isteklerini belirten bir not çıkıyor.
İstediklerini pakete doldurup yolluyorum. Sonra gelen diğer paketi açıyorum.....

Bu paketler zaten ENC çipindeki bufferda kuyruğa girmiş durumda. Bunları tek tek alıp
herbirini açip işlemiyorum.

Mesela paketleri açtım, her biri kırmızı kalem istemiş. Gidip dolaptan kırmızı kalemleri getirip
her birine 1'er tane koymuyorum.

1. paketi açıyorum 1 kırmızı kalem 1 dola kalem istemiş. Pakete koyuyor yolluyorum. 2. paketi açıyorum.


Yanlış yolda mıyım?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Burak B

Tabiki bir değil birçok pislik var. Aslında başından beri @gerbay' ında anlamanızı istediği şey bu. Ama bunu öğrenerek göreceksiniz. Amacım sizi yıldırmak yada gözünüzü korkutmak v.s. değil bu arada. Biraz ışık tutmaya çalışıyorum sadece.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

z

#200
Alıntı YapTabiki bir değil birçok pislik var. Aslında başından beri @gerbay' ında anlamanızı istediği şey bu. Ama bunu öğrenerek göreceksiniz. Amacım sizi yıldırmak yada gözünüzü korkutmak v.s. değil bu arada. Biraz ışık tutmaya çalışıyorum sadece.

Gerbay kusura bakmasın.

Sorun varsa açık açık sorun anlatılır.

Gerbayın bana başından beri dediği şu.

ASM kullanma.
RTOS kullan.
List link kullanman lazım.

Ben de ister istemez neden asm ile olmasın diyorum. Çünkü elle tutulur somut bir neden göstermiyor. (ASM yı unutun saf C diyelim )

Karşımda bir canavar var diyorsunuz ben bu canavarı daha görmedim ve  canavarın zırhını nasıl bir sopa ile delebilirim bilmek istiyorum.

Canavarı 1 cm kalınlığındaki sopayla mı öldürebilirim 10 cm kalınlığındaki sopa ile mi?

Gerbay sopa kullanma tüfek kullan diyor sadece. İyi ama ben sopa ile öldüreceğim.

Kod yazıp yazıp aaa bu böyle olamalıydı diyip sil baştan kod yazmak istemiyorum.
Bunu 2 kez yaptım ve artık işler zorlaşacak. O yüzden şu anki sorunları daha açık tarif etmenizi istiyorum.


mesaj birleştirme:: 28 Eylül 2016, 00:00:22

Alıntı yapılan: gerbay - 27 Eylül 2016, 23:47:23
hocam UDP protokolü "connectionless" dır, TCP ise "connection orinted" bir protokoldür. yani işin özeti TCP de bağlantıların hepsini yönetmeniz lazım. hem de bir sürü açıdan yönetmeniz lazım.

Ah bir anlasam dediklerini.

Dediklerinden bir şey anlamadım, yaşayacak mıyım doktor sen onu söyle.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Yuunus

Z hocam gerbayin C kullan demesinin sebebi sanirim C ile yaz da forumdakilerde faydalansin diye, ASM yi iyi derecede bilen belki forumda bir elin parmaklarini gecmez. Aksi durumda belki sadece nefsinizi korluyor olabileceksiniz :). projenin geldigi noktayi paylastiniz mi blogunuz da yoksa bitince mi?

z

#202
Olay kod yazıp yayınlamak değil. Internette bir ton kod var zaten.

Bu başlık biraz dağınık olsa bile benim gibi bu işlerden hiç anlamayanlara bir ton bilgi sunuyor.

Blog sayfamda olayların sözel anlatımını yapıyorum. Asıl lazım olan da bu.

Ne yapacağını biliyorsan programını da yazabilirsin. Bu başlıkta internette giden gelen paketler nasıl işleniyor onu tartışıyoruz.

Şu anda sorunum ne yapacağımı biliyor olamamak. Bu eksikliği de bu başlıktaki sorularıma gelen cevaplarla gideriyorum.

Mesela ethernet çipi ile modem buluştuğunda modem benim haberim bile olmadan çipimle konuşup MAC adresini öğrenebiliyormuş.

Modem benim IP numaramı ARP sorgusu ile öğreniyormuş.

ARP sorgusunu yapan paket nasıl bir şeymiş. Buna nasıl cevap veriliyormuş. Ping atılınca çipime nasıl bir paket geliyormuş vs vs.

Burda hep anlatıldı. Blog sayfamda da geriden yavaş yavaş  sözel olarak öğrendiklerimi yazıya döküyorum.

Ethernet paketi nedir, internet paketleri nedir, ARP nedir ICMP nedir hiç bir şey bilmiyordum. Burda yavaş yavaş bir şeyler öğrenmeye başladım.

Şimdi mesela TCP de port telefuz edilmeye başlandı. İşyerindeki ağ işlerine bakan arkadaşlar aman şu şu portları kapayalım diye konuşurlarken duyuyordum. Şimdi bunun da ne anlama geldiğini yeni öğreneceğim.

Projeyi olur da bitirirsem kütüphane yapar paylaşırım.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhittin_kaplan

@gerbay
Alıntı yapılan: gerbay - 27 Eylül 2016, 22:32:48
TCP için erken, önce UDP yi yap hocam.. network de ayrı ayrı pc ler aynı anda sana ping atarsa ne yapıyorsun?

Hocam UDP protokolünü önce yapmak, TCP ye geçince ihtiyacımız olacağından ötürü mü böyle yazdınız ? Yoksa UDP daha Basit onu hallet sonra Zor Olan a mı geç diyorsunuz ?

Burak B

UDP'yi öğrenince neden TCP' ye ihtiyaç olduğunu daha iyi anlarsınız. TCP' yi öğrenince de UDP' nin neden hala gerekli olduğunu. Ama bunu bir basamak olarak düşününce UDP' yi öğrenmek önce gelir. Çünkü TCP' ye göre daha kuralsızdır.
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

z

Tamam küçük udp yi yazmaya çalışayım.

UDP yazılımımı test edebilmek için PC'de hiç program yüklemeden windowsun ping komutu vs gibi basitçe bir utility varmı?

MAC vardı Ip vardı tamam bunları anladık şimdi  UDP ve TCP headerda port diye bir kavram çıktı.

Bundan bahsedermisin? Port adresini nerde kullanıyoruz?

Mesela Ip adresime internet tarayıcı ile girdiğimde Merhaba Dünya yazan basit bir web uygulamasıyla portun ne alakası var port ne değer alacak?

Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhittin_kaplan

#206

Burak B

Alıntı YapAlıntı yapılan: Burak B - 28 Eylül 2016, 21:25:16

    Aşağıdaki linkte verdiğim uygulamayı yükleyin ve öğrenmeye anlamaya çalışın size çok faydası olacaktır bu noktadan sonra.
    http://ostinato.org/downloads

"... a healthy dose of paranoia leads to better systems." Jack Ganssle

z

#208
Hocam bahsettiğiniz programı indirdirken MAC'ında virüs sileyim vs sayfalar açınca tırstım. Gene de indirdim ama henüz kurmadım.

Bir de Packet Sender diye bir uygulama bulup onu da indirdim fakat onu da kurmadım.

Eğer windowsun hazırda basit bir uyguması varsa onu çalıştırayım istemiştim.

UDP'yi test etmek için tamam ilave bir yazılım gerekiyor.

Mesela TCP için web gezgininde kendi IP numaramı yazıp enterleyince MCU küt diye içi boş TCP paket fonksiyonuma düştü.

Şu port meselesine cevap yazmayacakmısınız?

Alıntı YapMAC vardı Ip vardı tamam bunları anladık şimdi  UDP ve TCP headerda port diye bir kavram çıktı.

Bundan bahsedermisin? Port adresini nerde kullanıyoruz?

Mesela Ip adresime internet tarayıcı ile girdiğimde Merhaba Dünya yazan basit bir web uygulamasıyla portun ne alakası var port ne değer alacak?

Port kavramı ile USB'deki End Point kavramı benzer şeyler mi?



Bana e^st de diyebilirsiniz.   www.cncdesigner.com

muhendisbey

Web uygulamasında 80 port numarasını alacak. Port adresi içeride o paketi hangi programın kullanacağını yada kullandığını belirtmek için kullanılır. Bu SSH için farklıdır, WEB için ayrıdır SMTP için ayrıdır. Özel portlarda vardır atıyorum 25000 gibi, isimsizdir istediğin amaçla da kullanabilirsin. Ama 80 portunu web dışında kolay kolay kullanamazsın karmaşaya sebep olur.
Zulmü alkışlayamam, zalimi asla sevemem; Gelenin keyfi için geçmişe kalkıp sövemem.