STM32F103C8'e ethernet çipi bağlamak

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

z

Alıntı yapılan: gerbay - 19 Eylül 2016, 17:41:31
hocam senin bu doküman ile işin yok.. senin işin RFC ler ile..

Evet galiba soruların cevapları burda.

https://tr.wikipedia.org/wiki/Request_for_Comments
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

#91
Yok bak o zaman yazdıkların üzerinden bayağı bir zaman geçti. Şimdilerde bazı terimler oturmaya başladı.

O zaman yazdığında RFC 3 harfli bir kısaltma idi ne olduğu bile belli olmayan x birşeydi.   Şimdi tekrar yazdığında RFC yi google aratınca  Request For  Comments uzun açılımını görünce aha dedim.

Doktor örneği vermiştim ya aynı durum var.

Şimdi geriye dönüp tekrar yazılanları okuyacağım.

Hocam hak ver. Hiç bilgim olmadığı bir konuya giriş yapıyorum.

Her kafadan bbir ses bir öneri olunca ilk başlarda insanın kafası bulanıyor. Gözünün önündekileri görmüyor.

Bu aşama en sancılı aşama olur hep.

Gerbayın daha önce yazdığı mesaj.

https://www.picproje.org/index.php/topic,65601.msg510018.html#msg510018
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

mg1980

Sayın hocalarım,
Müsaadenizle biraz konuyu değiştireyim. Biz bu STM32F103C8'e Ethernet falan bağlamayalım da -siz bağlayabilirsiniz- bu aleti programlamayı öğrenelim.Zamanında z hocam tavsiye etti 3 kit aldım. 407'ye benzeterek internetten bir şeyler bularak basitçe bir şey yapabildim ama yarım kaldı. Bir hocamız şunun kitabını yazsa da satın alıp şu işi öğrensek.Daha sonra belki Ethernet de bağlarız.Saygılar.

muhittin_kaplan

407 yi yapabildiyseniz 103 de yapabilmeniz gerekir.

mg1980

MikroC kitabı sayesinde LCD ,kesmeler v.b bir şeyler yaptık ama kitap sadece 407'ye yönelik yazılmış. KEİL kurduk ama nasıl yapacağımız konusunda internette bulduğumuz bir kaç video var tam anlaşılamıyor. Sayın Orhan ALTINBAŞAK 16f84 ve 16f628A için kitaplar yazmıştı.Sayesinde bu pic.leri ve ASM'yi biraz öğrenmiştik. Bir kitap olsa fena mı olur ?

z

Hocam 2+2 her dilde 4 eder.

RTOS ihtiyacı çıkarsa çözeriz bir şekilde. İlk insanlar RTOS mu kullanıyordu?

Ejderhayı öldürmek için ucu sivriltilmiş bir değnek yeterlidir. Ama isteyen sniper da kullanabilir.

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

Cemre.

Alıntı yapılan: z - 20 Eylül 2016, 16:16:06
Hocam 2+2 her dilde 4 eder.

RTOS ihtiyacı çıkarsa çözeriz bir şekilde. İlk insanlar RTOS mu kullanıyordu?

Ejderhayı öldürmek için ucu sivriltilmiş bir değnek yeterlidir. Ama isteyen sniper da kullanabilir.



@z Hocam siparişin geldi mi, çalışmaya başladın mı? Yine güzel bir video serisi bekliyoruz :)

z

#97


Kodları yazmaya daha yeni başladım.

mesaj birleştirme:: 20 Eylül 2016, 19:10:50



Ethernet Paketin ilk 6 byte'ı alıcının adresi.
Bir sonraki 6 byte gönderici adresi.
Bir sonraki 2 byte ise Paketin tipi ya da uzunluğu
Devam eden kısımlar ise data alanı.

Type alanı 2 byte. Eğer buradaki veri 46...1500 aralığında ise bu alan paketin uzunluğunu saklıyor.
Bunların dışında değer alıyorsa ethernet paketinin tipini mi saklıyor diyeceğiz?
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Hocam yazdıklarını anlaşılan gecikmeli anlayacağım.

Şu soru kafama takıldı cevabını vermiş olsan bile görüp de anlayamıyorum.

Ethernet kablosunu taktım düzeneğimi çalıştırdım. Ethernetten bir paket geldi. Type/length alanını okudum.

Bu benim aldığım ilk paket olduğuna göre  bu paket data paketi olamaz protokolu tanımlayan paket mi diyeceğim. Eğer öyle ise bu alanı type olarak değerlendireceğim.

Bir sonraki paket alınca ise bu data paketi çünkü biraz önce protokol paketini aldıydım o halde type/Length alanındaki veri data boyutunu gösteriyor mu diyeceğim.

Hocam ben Networking/Communication dersi almadım kafam karışık. Geçmişte cevap yazmış olsan bile hemen o an anlamıyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

#99
Olaylar hayal ettiğimden çok farklıymış.

Peki bir paketinin boyu yaklaşık max 1500 byte.

İlk paketi aldım ve type değerini 0x806 olarak okudum.

Zaten sadece iki paket tipiyle ilgileneceğime göre if (type==0x806) diye hemencecik ARP rutinine girdim.

Data alanındaki veriler için ARP paketi muamelesi yapmaya başlayacağım.

Bu yaklaşık 1500 byte veri alanındaki veriler ARP rutininin ihtiyacı olan tüm verileri barındırıyor olacakmı?

Bir sonraki paket gelince bak biraz evelki ARP rutinininde datalar vardı ya onlar eksik kaldıydı aha bu veriler de onlar durumu olmayacak mı?

Her paket alışımda type kısmına bakıp 0x800 yada 0x806 değilse boş ver bunlarla işim yok mu diyeceğim.

Madem bu 2 byte alana Type denecek niçin bu adamlar Type/Length yazıpta kafamı karıştırıyorlar?


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

z

Tüm samimiyetimle çok teşekkürler. Kafam bu kadar karışıkken doküman izleyerek vs bu cevaplara ve bu kırmızı hapa kolay kolay ulaşamazdım.

Deveye hendek atlatmak bana bir şey anlatmaktan daha kolay değilmi.

Sormaya da korkuyorum ama;

Alıntı Yaphocam sen şimdi kendine bir MAC adres belirle, bir de networkünde bulunan cihazlar ile aynı subnet de boş bir IP adres belirle kendine.

Evdeki bütün cihazlar wireless çalışıyor ve modemin 4 tane boşta LAN çıkışı var.

Bu LAN çıkışından ECP28J60 kitime kablo yapmakla meşguldüm.

Subnet ve boş IP deyince kafam karıştı. Modem arayüzüne girince televizyonun ve IPOD'un MAC adresini ve IP değerini görüyorum.

Televizyonu kapamak evde sorun olur ama IPOD pek kullanılmıyor. Onun MAC adresini ve IP numarasını kullanabilirim.

Fakat Subnet demeyeydin iyiydi. Subnet ile ilgili bir bilgi yok.

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

AsHeS

Konunun gidişatından bağımsız olarak kartı PC'ye Ethernet üzerinden bağlamanın tek yolu TCP/UDP değil @z hocam. Pcap library i PC uygulamanıza dahil ederek direkt L2 point to point de çalışabilirsiniz(Araya router sokmadan).

z

#102
Hocam bu akşam son olarak şu konuya da açıklık getirelim bana yeter.

Bu akşam çipin paket almasını yada göndermesini deneyip  gelen verileri en azından rama çekip görmek istiyorum. Bu aşamaya gelmek için bayağı bir şey yazmam gerekebilir.

Alıntı YapARP paketi ile IP si bilinen bir arayüzün MAC adresi "ARP request" paketi gönderilerek sorgulanır. ARP request paketi network e broadcast edilir. Yani bu şu anlama geliyor. 14 byte lık ethernet frame in başındaki header vardı ya; o header ın ilk 6 byte ı, 0xff değeri taşır. sonraki 6 byte ise paketi gönderenin MAC adresi.

Gerçi hemen hemen olayı anladım ama şu anlamı da çıkarabilir miyim?

ENC çipime network kablosunu takıp enerjisini verdiğimde ben hiç bir talepte bulunmasam dahi modem beni bir şekilde algılayacak ve  MAC adresimi öğrenmek için ARP request yollayacak. Televizyona, telefonlara, şu an kullandığım bilgisayara bu istek gelecek.....

Çünkü ağa katılmak isteyen biri olarak ARP request gelmeden Power-On'dan hemen sonra bir şey yapıp yapmayacağımdan emin olmak istiyorum.


@AsHeS

Hocam sağolasın ama şu anda Gerbay'ın hapını içeyim. İnternet/ethernet konularını hiç bilmediğim için  L2 falan kafamı karıştırır şimdi. L2 nedir bilmiyorum kafam iyice karışmasın.
Benim en sonunda varmak istediğim nokta ENC kitini server olarak internete sokmak.

IP numaramı sizlere de verince sizlerde evinizden ENC kitime erişebileceksiniz. (İnşallah)
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Tamamdır çok sağolun. Umarım yarın sabaha kadar çok yol katetmiş olurum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

#104
Fonksiyonların yazımı, ENC28J60 dokümanını anlamaya çalışmak ve  http://www.cncdesigner.com/wordpress/?p=6149 günlük tarzı yazıyı hazırlamak bayağı zaman alıyor.

Çorabın ipini koparttık ve çorap hızla sökülmeye başlandı.

Eğer kullandığım çipi  ve ethernet portu ile çip arasında ya da çip ile MCU arasında hangi olaylar cereyan ediyor gerçekten merak ediyorsanız blog sayfamdaki yazıyı 1 kere okuyup geçmeyin.

Çünkü yanlışları düzeltiyor, daha iyi anlam veren cümlelerle eski yazıdaki muallak ifadeleri editliyorum.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com