2 poin oleh GN⁺ 2024-11-12 | 1 komentar | Bagikan ke WhatsApp
  • Pengiriman paket Ethernet

    • Penulis ingin membuat sebuah seri bernama "Networking from scratch" dan memulai proyek membangun stack TCP/IP pada mikrokontroler.
    • Tulisan blog ini membagikan kisah berhasil mengirim paket Ethernet pertama serta pengalaman menghadapi bug dan debugging dalam proyek tersebut.
  • Mikrokontroler

    • Mikrokontroler yang digunakan adalah STM32F401, berbasis ARM Cortex-M4 dan berjalan hingga 84MHz.
    • Mikrokontroler ini memiliki RAM 96KiB, sehingga menyediakan kapasitas yang cukup untuk memproses beberapa paket.
  • Ethernet

    • Ethernet adalah konsep yang mencakup berbagai teknologi dan standar, termasuk perangkat keras pada level fisik, format sinyal, strategi penanganan tabrakan bus, tata letak frame, dan lain-lain.
    • Dalam proyek ini digunakan chip W5100 dari Wiznet, yang memiliki stack TCP/IP perangkat keras bawaan.
  • Masalah 1: Berteriak ke kehampaan

    • Penulis menulis driver untuk berkomunikasi dengan chip W5100, tetapi komunikasi tidak terjadi karena sinyal SPI terhubung secara salah.
    • Masalah muncul karena header ICSP pada shield Arduino menghubungkan sinyal SPI secara keliru, dan papan kemudian dikerjakan ulang untuk memperbaikinya.
  • Masalah 2: Hakikat komedi

    • Bahkan setelah sinyal SPI terhubung dengan benar, pengiriman paket Ethernet tetap tidak berjalan semestinya.
    • Dengan menggunakan logic analyzer untuk menganalisis sinyal digital, penulis menyelesaikan masalah timing pada sinyal chip select dan berhasil membuat komunikasi berjalan.
  • Masalah 3: Paket yang tidak dikenal

    • Di Wireshark, yang muncul adalah paket yang salah, bukan paket yang sebenarnya dikirim.
    • Dengan merujuk ke library Arduino, penulis menganalisis masalah tersebut dan menyelesaikannya dengan memperbaiki bug yang menulis data ke alamat memori yang salah.
  • Pelajaran dari kisah ini

    • Mengirim paket Ethernet mungkin tampak sebagai pencapaian kecil, tetapi pengalaman menghadapi bug dan debugging dalam proyek ini sangat berharga.
    • Debugging dan pembuatan alat merupakan bagian penting dari proses pengembangan, dan memahami sistem melalui eksplorasi serta eksperimen adalah hal yang penting.
    • Proyek ini masih terus berjalan sambil menangani masalah dan bug pada tingkat abstraksi yang lebih tinggi.

1 komentar

 
GN⁺ 2024-11-12
Opini Hacker News
  • Menulis alat dan mengeksplorasi debugging selalu bernilai. Namun banyak orang tidak memahaminya, dan terutama dalam proses pengembangan seperti JIRA, mereka sering tidak melihat nilai dari eksplorasi.

  • Kemampuan membuat alat kecil adalah inti dari programmer dengan produktivitas 10x, dan ini sering kali merupakan seni yang dipraktikkan dalam bayang-bayang.

  • Ini adalah awal dari seri membangun stack frame TCP/IP dan Ethernet dari nol di atas mikrokontroler. Chip W5100 digunakan untuk menangani TCP/IP dan mendukung frame Ethernet yang sudah dibangun sebelumnya.

  • Ada yang sedang mengalihkan karier ke rekayasa FPGA dengan fokus pada Ethernet, dan memahami abstraksi jaringan terbukti sangat berharga.

  • Ada pendapat bahwa alih-alih menggunakan STM32F401 dan Ethernet shield W5100, akan lebih baik memakai board STM32F407 dan board Ethernet PHY murah.

  • Fitur Ethernet umumnya disertakan sebagai periferal yang tertanam di dalam mikrokontroler.

  • Ini pertama kalinya melihat penamaan baru untuk MOSI/MISO, yaitu main out/subordinate in, dan alternatif COPI/CIPO tidak terlalu dipahami.

  • Untuk menulis stack jaringan di Linux, Anda dapat menggunakan socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL)).

  • Board STM32 Nucleo memiliki Ethernet 100Mbps bawaan, dan perangkat lunak STM32Cube mendapat penilaian yang beragam tetapi menyediakan contoh yang berfungsi.

  • Ethernet menangani frame, sedangkan paket adalah konsep IP.

  • ENC28J60 'Stand-Alone Ethernet Controller with SPI Interface' dapat dipertimbangkan; karena tidak memiliki stack TCP/IP perangkat keras, implementasi perangkat lunak diperlukan.