STM32F103C8'e ethernet çipi bağlamak

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

engerex

 (Konu kısmen burayla alakalı olduğu için yazma gereği duydum.)
Sanırım bu konuda @z" internetim bazen çok geç cevap veriyor" demişti. Aynı durum bende de var ve aşırı. tracert komutu var. Ping atarak ben ile tracert www.google.com arasında bağlantıyı sağlayan IP adresleri yer alıyor. Arada 212.156.201.169.static.turktelekom.com.tr gibi adreslerde geçiyor. Yalnız listede 3-5 saniye yanıt vermeyen 5 bağlantı var ve bunlar zaman aşımına uğruyor. Anladığım kadarıyla yavaşlığın sebebi bu. Bir ara bir program denemiştim ve o zaman fark var mı görmemiştim. Programın iddiası siz ve bağlatınız arasında en kısa ve sorunsuz yolu bularak size en hızlı bağlantıyı sunması. DNS mi değiştiriyordu yoksa farklı bir yol mu hatırlamıyorum. Zaten şu an programı bulamadım.
@z gerekli kodlamaları yaparak istediği adrese istediği yönlendirmelerle bağlanabilir mi?

z

#226
Hocam diğer dillerin çağırması için dönüşüm acaip kolay. Library hazırlarken export edilecek fonksiyonları kolayca C fonksiyon tipine dönüştürürüm.

İş, bir kaç push pop eklentisi ve register atamasına bakar sadece.

Library yaparken sadece ana arterleri dışa açmam yeterli. İçerideki minik minik fonksiyonları export etmeme gerek yok.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Kütüphane olarak yayınladığımda zaten bu push pull ıvır zıvıralarını zaten ben yapmış olacağım.

Kullanıcıya sadece kütüphaneden external fonksiyon çağırma işi kalacak.

En baştan C uyumlu yazarsam asm kodlarımda alengirli işler yapamamki klasik C çıktısına benzer asm kod üretirim. Fakat asm kodlamayı özgür şekilde seviyorum.

Hocam bir keyfim 16 daha doğrusu 13 registerla oynamak bırakın onlarla da istediğim gibi oynayayım.

C uyumluluğu en son aşama. Hele bir server çalışsın da o kısmı kolay.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

hgs

#228
Benim biliğim z kod yayınlamaz. :)

Ne öğrenecekseniz burada ögrenirsiniz ve blog yazısında. Ama kod görmeniz zor.

z

İşin felsefesi işin kodundan çok daha değerli. Herkes kod yayınlıyor ama felsefeyi anlatmıyor.

Ne diyorduk? Balık verme balık tutmayı öğret.

@gerbay hocam

Aşağıdaki mesaj için yorum yapmayacak mısınız?

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

z

#230
Alıntı YapBir de hocam senin library de chip ile net stack arasında coupling ne durumda? sadece senin net stack alınıp MAC ı olan bir ARM MCU da kullanılabilir mi? enc28j60 a bulaşmadan?

Aşağıdaki 3 fonksiyon herhangi bir çip için yeniden yazılırsa CM3 ve üstünde sorunsuz koşar.

1. Paket gelmişmi
2. Paketi oku
3. Paketi yolla

Fifo olayı kafamdaki pek çok sorunu aldı götürdü.

Eğer TCP kodlamayı becerirsem bu işe oldu gözüyle bakabiliriz.

Kafamı kurcalayan bir konu daha var.

Mesela gelen 800'lü paketlerdeki CRC kontrolunu yapmıyorum. Ethernet çipi CRC kontrolü yapıyor ama aksilik bu ya SPI data aktarımı esnasında veri bozulabilir.

Fakat daha önemlisi sanki kötü niyeli birisi 0x800 paketlerinde bazı verileri özellikle değiştirip gönderirse (Headerlarda data boyları ve header boyları vs saklayan değişkenlere abartılı değerler yazarsa) MCU'yu ramın dışından veri okumaya zorlayabilir ve hardfaulta düşürebilir gibime geliyor.

Şu anda kodlamayı uzatacağı için bu tip kotroller yapmıyorum.


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

z

Ethernet çipi zaten CRC hesabı yapıyor. Fakat gelen IP paketlerdeki Check Sum değeri ile gelen paket için kendi hesaplayacağım Check Sum değerini eşit oluyor diye bakmıyorum. Daha doğrusu aldığım datalar için Check Sum hesaplamıyorum, sadece gönderdiğim datalar için Ceheck Sum hesabı yapıyorum.

Neyse acelesi yok bunun.

Aslında FPGA ile ilgilenenlere de güzel bir proje bu.

Gelen paketleri paralel olarak işleyin işte.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

z

Paketler sıralı geliyor fakat bir yerlerde (Çipte yada MCU bufferda) kuyruğa giriyor.

------------------

Hocam ne kadar rezil bir programcı olduğuma tanıklık edilmesini istemem.

Gene de UDP protokolünü bitirince o kısmı full yayınlayım.


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

muuzoo

Alıntı yapılan: z - 29 Eylül 2016, 01:21:52
Ethernet çipi zaten CRC hesabı yapıyor. Fakat gelen IP paketlerdeki Check Sum değeri ile gelen paket için kendi hesaplayacağım Check Sum değerini eşit oluyor diye bakmıyorum. Daha doğrusu aldığım datalar için Check Sum hesaplamıyorum, sadece gönderdiğim datalar için Ceheck Sum hesabı yapıyorum.

Neyse acelesi yok bunun.

Aslında FPGA ile ilgilenenlere de güzel bir proje bu.

Gelen paketleri paralel olarak işleyin işte.

Çok da eğlenceli değil aslında :P :D, daha önce UDP için yapmıştım. İşimizi görünce üst katmanlara çıkmadık. Bu projeden sonra şuna karar vermiştim. Bu tarz protokol gerektiren haberleşme işlemlerim varsa basit softcore cpu kullanıp c/c++ ile haberleşme ve protokol olaylarını doğrudan oraya yıkmak olurdu. Hardware olarak kodlamak çok mantıklı değil eğer yapılacak iş projenin bir parçası olan haberleşme amaçlı ise. Yok zaten bir ağ donanımı olarak çalışacaksam o zaman daha farklı yaklaşılabilir.
gunluk.muuzoo.gen.tr - Kişisel karalamalarım...

kralsam

Alıntı yapılan: z - 29 Eylül 2016, 01:21:52
Ethernet çipi zaten CRC hesabı yapıyor. Fakat gelen IP paketlerdeki Check Sum değeri ile gelen paket için kendi hesaplayacağım Check Sum değerini eşit oluyor diye bakmıyorum. Daha doğrusu aldığım datalar için Check Sum hesaplamıyorum, sadece gönderdiğim datalar için Ceheck Sum hesabı yapıyorum.

Neyse acelesi yok bunun.

Aslında FPGA ile ilgilenenlere de güzel bir proje bu.

Gelen paketleri paralel olarak işleyin işte.
Hocam bir ara sıfırdan FPGA ile yapmayı düşünmüştüm. Ama benim düşüncem UDP idi. Sonra Ethernet katmanı ve diğer katmanları yeterli bilmediğim için bu hoby fikri ertelemiştim. Gerbay hocam ve sizin sayenizde yeterli alt seviye bilgim olmuş oluyor. Merakla takip ediyorum. Ben biraz daha alt seviye yapacağım yani :)

z

#235

IP paketin header bölümünde optinal bir bölüm var. Eğer IP header boyu 20 bytetan büyükse bu alan devreye giriyor.

Ancak incelediğim paketlerde IP header boyu hep 20 byte. Option alanı ne zaman hangi durumlarda devreye giriyor?

mesaj birleştirme:: 29 Eylül 2016, 17:02:02

Bu alanın var olması daha kısa kod yazmamı engelliyor. Baktığım paketlerde bu alan hep 0 uzunlukta.

Gelen pakette bu alanın boyuna baksam eğer 0 değilse ben bu paketten anlamam diyip reddetsem acama Basit Web Server projemin işleyişi tehlikeye girer mi?

Bahsi geçen Optional alan, altı üstü IP paket header ile IP paket dataları arasındaki bir tampon bölge. Programcılık açısından dert edilecek bir şey değil fakat ben dert ettim.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Burak B

@z hocam siz çok yanlış bir konuya yöneldiniz. Network haberleşmesinden ziyade kripto fonksiyonlarının ASM versiyonlarını yazsanız baya bir işe yarar. Birde onları şöyle -side channel attack proof- yaparsanız dadından yenmez. :)
"... a healthy dose of paranoia leads to better systems." Jack Ganssle

z

#237
Yazmadığımı kim söyledi?

Algoritmayı gönder sadece.
Bana e^st de diyebilirsiniz.   www.cncdesigner.com

Burak B

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

muhittin_kaplan

herkesin bildiği kripto, kripto değildir. ;)