2 puan yazan GN⁺ 2024-11-12 | 1 yorum | WhatsApp'ta paylaş
  • Ethernet paketi gönderme

    • Yazar, "Networking from scratch" adlı bir seri oluşturmak istedi ve bir mikrodenetleyici üzerinde TCP/IP yığını kurma projesine başladı.
    • Bu blog yazısı, ilk Ethernet paketini başarıyla gönderme hikayesini ve proje sırasında karşılaşılan hatalar ile hata ayıklama deneyimlerini paylaşıyor.
  • Mikrodenetleyici

    • Kullanılan mikrodenetleyici STM32F401 ve ARM Cortex-M4 tabanlı; en fazla 84MHz hızında çalışıyor.
    • 96KiB RAM'e sahip olduğu için birden fazla paketi işleyebilecek yeterli kapasite sunuyor.
  • Ethernet

    • Ethernet; fiziksel düzeyde donanım, sinyal biçimleri, veri yolu çakışması işleme stratejileri ve çerçeve düzenleri gibi çeşitli teknoloji ve standartları kapsayan bir kavramdır.
    • Bu projede Wiznet'in W5100 çipi kullanılıyor ve bu çip yerleşik bir donanım TCP/IP yığını içeriyor.
  • Sorun 1: Boşluğa haykırmak

    • W5100 çipiyle iletişim kurmak için bir sürücü yazıldı, ancak SPI sinyalleri yanlış bağlandığı için iletişim sağlanamadı.
    • Sorun, Arduino shield üzerindeki ICSP başlığının SPI sinyallerini yanlış bağlamasından kaynaklandı; bunu düzeltmek için kart yeniden işlendi.
  • Sorun 2: Komedinin özü

    • SPI sinyalleri doğru bağlandıktan sonra bile Ethernet paketlerinin iletimi düzgün çalışmadı.
    • Dijital sinyaller bir mantık analizörüyle incelendi ve chip select sinyalinin zamanlama sorunu çözülerek iletişim başarıyla sağlandı.
  • Sorun 3: Bilinmeyen paket

    • Wireshark'ta, gönderilen paket yerine hatalı bir paket görünüyordu.
    • Sorun, Arduino kütüphanesi referans alınarak analiz edildi ve veriyi yanlış bellek adresine yazan hata düzeltilerek çözüldü.
  • Hikayeden çıkarılan ders

    • Bir Ethernet paketi göndermek küçük bir başarı gibi görünebilir, ancak projedeki hata ve hata ayıklama deneyimleri değerlidir.
    • Hata ayıklama ve araç yazımı, geliştirme sürecinin önemli parçalarıdır; sistemi keşif ve deney yoluyla anlamak önemlidir.
    • Proje, daha yüksek soyutlama seviyesindeki sorunlar ve hatalar ele alınarak devam ediyor.

1 yorum

 
GN⁺ 2024-11-12
Hacker News yorumları
  • Araç yazmak ve hata ayıklamayı keşfetmek her zaman değerlidir. Ancak birçok insan bunu anlamıyor; özellikle de JIRA gibi geliştirme süreçlerinde keşfin değerini görmeyenler çok.

  • Küçük araçlar yapabilme becerisi, 10 kat üretken programcının özüdür ve bu çoğu zaman gölgelerde icra edilen bir sanattır.

  • Bu, mikrodenetleyici üzerinde TCP/IP ve Ethernet frame yığınını sıfırdan kuran bir serinin başlangıcı. TCP/IP işlemleri için W5100 çipi kullanılıyor ve önceden oluşturulmuş Ethernet frame'lerini destekliyor.

  • Kariyerini FPGA mühendisliğine çevirip Ethernet'e odaklandığını ve ağ iletişimindeki soyutlamaları anlamanın çok değerli olduğunu söyleyen bir görüş var.

  • STM32F401 ve W5100 Ethernet shield kullanmak yerine, STM32F407 kartı ile ucuz bir Ethernet PHY kartı kullanmanın daha iyi olacağı yönünde bir görüş var.

  • Ethernet işlevleri genellikle mikrodenetleyicinin içine gömülü çevre birimleri olarak bulunur.

  • MOSI/MISO için yeni adlandırma olan main out/subordinate in ifadesini ilk kez gördüm; COPI/CIPO alternatifi ise çok anlaşılır gelmiyor.

  • Linux'ta ağ yığını yazmak için socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL)) kullanılabilir.

  • STM32 Nucleo kartlarında 100Mbps Ethernet yerleşik olarak bulunuyor; STM32Cube yazılımı karışık yorumlar alsa da çalışan örnekler sunuyor.

  • Ethernet frame'lerle çalışır; packet ise IP'ye ait bir kavramdır.

  • ENC28J60 'Stand-Alone Ethernet Controller with SPI Interface' değerlendirilebilir; donanımsal TCP/IP yığını olmadığı için yazılım tarafında gerçekleme gerekir.