STM32F103C8'e ethernet çipi bağlamak

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


z

Kafam almadı.

Modemimin IP nosu 216.29.29.29 yani  Turkcellin verdiği bir IP demek değilmi.

Ben 216.29.29.29 a para verip aldım.

216.0.0.29 bir başka müşterinin IP nosu değilmi?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

frederic

Hocam bir önceki mesajımdaki videoyu izleyin

baran123

Sizin bir Internet IP niz var modemi resetlediğiniz zaman bu değişir.(Eğer statik IP satın aldıysan bunuda kullanabılırsın)
ENC'nin IP sini Modem ayarlarına girip kaydedeceksin tabi birde port kaydedeceksin.(Port Yönlendirme)
Daha sonra başka uzak bir yerden tarayıcıya senin Internet IP ve Portunu yazacaksın. (IP:PORT)
Enter dediğin anda senin Internet IP ne bağlanacak sonra Portuna bakacak ve diyecek ki bu adam bu portu ENC'nin IP sine kaydetmiş diyecek
hop seni ENC ye yönlendiricek :)
Artık yaptığın yayına göre tarayıcıda yaydıklarını göreceksin

Bu port açma işlemi modeme girerek "Port Yönlendirme" yada yanlış hatırlamıyorsam NAT denen bir bölümden yapılıyordu.
Eskiden yapmıştım hazır LIB ile ama modemim şuan farklı.

Yanlış hatırlamıyorsam muhabbeti buydu.

engerex

IP yi farklı yazmışım. Örnekte sadece bunu say: 216.0.0.29

Alıntı yapılan: frederic - 02 Ekim 2016, 23:27:03
@z
http://www.uzmantv.com/modemde-port-nasil-acilir
Buradan yapamadıysan modem marka model verirsen yardımcı olalım. (Ben göremedim videoyu.)

z

Sayfa açılıyor ama video çıkacak bölge bomboş sadece minik bir cep telefonu resmi var.

Neyse yarım bakayım.

Herkese teşekkürler.

Şu ana kadar yaptıklarımı kısaca özetleyeyim.

1) MCU init rutinleri yazıldı.
2) MCU-ENC28J60 iletişimi için SPI rutinleri yazıldı.
3) ENC28J60 registerlerine yazma/okuma rutinleri yazıldı.
4) ENC28J60'ın Internet ortamına uyumlu çalışması için initialize rutinleri yazıldı.
5) Ethernetten paket alan ve paket yollayan rutinler yazıldı.
6) Gelen paketin OP kodundan paketin ARP paketimi yoksa IP paketimi olduğunu anlayan rutin yazıldı.
7) ARP pakete cevap veren rutin sayesinde IP numaramı merak eden cihazlara kendimi tanıttım.
8) IP paketin Protocol numarasından gelen IP paketin ICMP paket mi TCPIP olduğunu içerdiğini anlayan rutin yazıldı.
9) ICMP  ise ve Echo Request istiyor ise buna EchoReplay (Ping cevabı) yapan rutin yazıldı.
10) Ip paket içinde  TCPIP paket varsa  Flag değerleri ve Data boyutuna göre Sequence ve Acknowledgement numaralarını ilerleten rutin yazıldı.
11) TCPIP paket içine HTML yerleştiren rutin yazıldı ve nihayetinde mini server çalıştı.

Bu kadar çok madde olduğuna bakmayın kısa kısa kod parçaları.

Şu haliyle flashda 3444 byte yer kaplıyor ve 1548 byte ram kullanıyor.

Şu ana kadar yapılması gereken bunlardı.

Asıl curcuna yakında çıkacak ve bu curcunanın artık donanım, Ethernet/TCPIP/HTML ile hiç alakası yok.

Bu curcunanın ne olacağını tahmin ettiniz mi?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

baran123

ASM den C ye dönüştürülmesi mi ? :D

z

Keşke sorun c yada asm sorunu olsa.

Gerçi TCPIP yazılımı yapmadan bu sorunu görmeniz çok zor.

Şimdi neden TCP/IP yazılımı değil de TCP/IP Stack diye bir tabir kullanılıyor ve bu tabirde neden STACK kelimesi geçiyor çok iyi anladım.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Mucit23

Ben hala senin STM32F103 ile yaptığın minik server'ına aynı anda 10 kişi bağlanmak isterse ne yapacak onu merak ediyorum. Konuyu en başından beri takip ediyorum. Bende çok şey öğrendim. Galiba senin gözünün korkutan nokta da burası.

crazy


z

#295
Evet şu an itibariyle konun en başındaki amacıma ulaştım. Projeyi burda bırakabilirim. Server çalıştımı çalıştı sayfa ekranda karşıma geliyor mu geliyor.

Fakat projeyi burda bırakmayacağım. Mevcut yazılımımın sayfa yayınlayabilmesi için servere girecek yüzlerce kişinin atıyorum çok kısa aralıklarla ENC çipime ulaşmamaları gerekiyor.  Bu kabul edilir bir şey değil.

Alıntı yapılan: Mucit23 - 03 Ekim 2016, 00:03:55
Ben hala senin STM32F103 ile yaptığın minik server'ına aynı anda 10 kişi bağlanmak isterse ne yapacak onu merak ediyorum. Konuyu en başından beri takip ediyorum. Bende çok şey öğrendim. Galiba senin gözünün korkutan nokta da burası.

Aynı zaman diliminde (mesela saat 10:00:00 ....10:00:05 aralığında) farklı internet hızlarında farklı serverlerden çokça kişi ENC çipimdeki web sayfasına girmek isteseler ne yapacağım?

Aslında bu kısımdan korkmuyorum.

Bundan sonraki en büyük sorun stack yönetimi. Bir de hiç ele almadığım yaşam süresi değeri.

Kodlamayı bilen bu kısmı da halleder. Zaten sorun artık tamamen kodlama sorununa dönüştü.


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

yamak

@gerbay hocam rtos'a rtos adını veren bu adam mı acaba?Adamların web sitesini adı www.rtos.com :).

CaFFeiNe

Bencede harcanıyorsun hocam, ilk mesaja baktımda 2 haftada ethernetin e'sini bilmezken web server kodu yazdın helal olsun

skara1214

@z den beklentimiz uart- tcp/ıp cevirici :D direk cip halinde satışta
Herkes ölür ama herkes gerçekten yaşamaz

z

#299
Sagolun, Şimdi düşünüyorum da Gerbay'ın kırmızı hapı olmasaydı işim gerçekten çok zormuş.

TCP/IP Usart dönüştürücü çipi ile dünyanın neresinde olursak olalım iki MCU'u arasında data transferi yapma fikri güzel.

@gerbay hocam

Başından beri bir zorluğa işaret ediyordun. Bu zorluk tam olarak şu mu?

TCP protokolünde Clientle paket alış verişi yaparken bir sonraki paket transferinde, şu anki paketteki/elimizdeki Seq. No ve Ack No değerlerini kullanıyoruz.

SeqNo ve AckNo değerleri(miz),  SeqNo, AckNo, gelen ve giden data miktarına göre ilerletiliyor.

Eğer sadece bu clientla haberleşecek olsaydık sorun yoktu.

Fakat birden fazla client işin içine girince bunların her birisi için en azından SeqNo, AckNo, MAC Adr, son iletişim zamanı gibi 4 bilgiyi büyükçe bir bufferda (özel bir stack alanında) saklamam lazım.

Yeni bir paket aldığımda yada bu adama paket yollayacağımda hemen karşıdaki adamın MAC adresini okuyup bufferda bu adamla yaptığım en son bilgilere ulaşıp  adamın istediği bilgileri yollayıp bufferdaki SeqNo ve AckNo ve iletişim zamanı bilgilerini update etmeliyim.

Bufferım web sayfama olan ilgiden dolayı pek çok kişinin bilgileri ile dolmaya başlayacaktır.
Sayfamla işi bitenlerin bilgilerini bufferdan silmezsem bir süre sonra buffer dolacak ve artık kimseye hizmet veremez hale geleceğim.

Öte yandan bir kişi ile tanışma, web sayfa bilgilerimi yollama, ardından tamam ayrılalım deme işinini yapmak adına diğer kişilerden gelen istekleri çöpe atma startejisi de çözüm olabilir fakat bu çok yavaş bir çözüm olur. Üstelik diğer kullanıcılar sayfa bulunamadı mesajı ile karşılaşabilirler.

Belli bir zaman diliminde başarılı olunamamışsa yada adama web sayfanın html kodlarını yollamışsam iletişimi koparıyorum dediysem o da tamam bitirelim dedi ise o kişiye ait bilgileri de bufferdan silip yer açmam gerekir.

Öte yandan benim birincil amacım ENC çipinin Receive bufferında gelen paketleri en kısa zamanda işleyip bufferı boşaltmak olmalıdır.


Bu sorunu çözersek tamam bu proje artık sorunsuz olarak mini webserver olarak iş görür diyebilirmiyiz yoksa göremediğim başka sorunlar da varmı?

Projede yararlandığım sayfalar

ENC28J60 Rehber
Çipin kahrolası tasarım hataları ve çözümleri
Hazırladığınız pakette Check sum vs hatası varsa olması gereken check sum değerini  söyler
TCPden once prova yapmak için UDP paket rutinlerinizi test etmeye yarar
Ethernet portuna gelip giden paketleri ve içeriğini gösterir
IPV4 Header
ARP Header
UDP Header
TCP Header
IP protokol numaraları
ICMP Header
KIRMIZI HAP

Port numaraları
Tabiki bu
Bana e^st de diyebilirsiniz.   www.cncdesigner.com