2 Punkte von GN⁺ 2024-11-12 | 1 Kommentare | Auf WhatsApp teilen
  • Ethernet-Paketübertragung

    • Der Autor wollte eine Reihe mit dem Titel „Networking from scratch“ erstellen und begann ein Projekt zum Aufbau eines TCP/IP-Stacks auf einem Mikrocontroller.
    • Dieser Blogbeitrag erzählt von der erfolgreichen Übertragung des ersten Ethernet-Pakets und berichtet über Bugs und Debugging-Erfahrungen im Projekt.
  • Mikrocontroller

    • Der verwendete Mikrocontroller ist ein STM32F401, basiert auf ARM Cortex-M4 und läuft mit bis zu 84 MHz.
    • Mit 96 KiB RAM bietet er genügend Kapazität, um mehrere Pakete zu verarbeiten.
  • Ethernet

    • Ethernet ist ein Konzept, das verschiedene Technologien und Standards umfasst, darunter Hardware auf physischer Ebene, Signalformate, Strategien zur Behandlung von Buskollisionen und Frame-Layouts.
    • In diesem Projekt wird der W5100-Chip von Wiznet verwendet, der einen Hardware-TCP/IP-Stack integriert hat.
  • Problem 1: Ein Ruf ins Leere

    • Es wurde zwar ein Treiber für die Kommunikation mit dem W5100-Chip geschrieben, doch wegen falsch verdrahteter SPI-Signale kam keine Kommunikation zustande.
    • Das ICSP-Header des Arduino-Shields verband die SPI-Signale falsch, wodurch das Problem entstand; zur Behebung wurde die Platine nachgearbeitet.
  • Problem 2: Das Wesen der Komödie

    • Auch nachdem die SPI-Signale korrekt verbunden waren, funktionierte die Übertragung der Ethernet-Pakete noch nicht richtig.
    • Mithilfe eines Logikanalysators wurden die digitalen Signale untersucht, und durch das Beheben eines Timing-Problems beim Chip-Select-Signal konnte die Kommunikation erfolgreich hergestellt werden.
  • Problem 3: Unbekanntes Paket

    • In Wireshark tauchte ein fehlerhaftes Paket auf, nicht das tatsächlich gesendete Paket.
    • Unter Bezug auf die Arduino-Bibliothek wurde das Problem analysiert, und ein Bug, der Daten an eine falsche Speicheradresse schrieb, wurde behoben.
  • Die Lehre der Geschichte

    • Die Übertragung eines Ethernet-Pakets mag ein kleiner Erfolg sein, doch die dabei gewonnenen Erfahrungen mit Bugs und Debugging sind wertvoll.
    • Debugging und das Schreiben von Tools sind wichtige Bestandteile des Entwicklungsprozesses, und es ist entscheidend, ein System durch Untersuchung und Experimente zu verstehen.
    • Das Projekt läuft weiter und befasst sich inzwischen mit Problemen und Bugs auf höheren Abstraktionsebenen.

1 Kommentare

 
GN⁺ 2024-11-12
Hacker-News-Kommentare
  • Es lohnt sich immer, Werkzeuge zu schreiben und das Debugging zu erkunden. Viele verstehen das jedoch nicht und erkennen besonders in Entwicklungsprozessen wie JIRA den Wert von Exploration oft nicht.

  • Die Fähigkeit, kleine Werkzeuge zu bauen, ist ein Kernmerkmal des 10x-Produktivitätsprogrammierers und oft eine Kunst, die im Verborgenen praktiziert wird.

  • Dies ist der Beginn einer Serie, in der der TCP/IP- und Ethernet-Frame-Stack auf einem Mikrocontroller von Grund auf aufgebaut wird. Der W5100-Chip übernimmt TCP/IP und unterstützt vorgefertigte Ethernet-Frames.

  • Jemand wechselt beruflich ins FPGA-Engineering mit Fokus auf Ethernet und fand es sehr wertvoll, die Abstraktionen des Netzwerkings zu verstehen.

  • Es gibt die Ansicht, dass es besser wäre, statt eines STM32F401 mit W5100-Ethernet-Shield ein STM32F407-Board mit einem günstigen Ethernet-PHY-Board zu verwenden.

  • Ethernet-Funktionalität ist in der Regel als im Mikrocontroller integrierte Peripherie enthalten.

  • Zum ersten Mal wurden die neuen Bezeichnungen für MOSI/MISO gesehen: main out/subordinate in; die Alternativen COPI/CIPO sind nicht wirklich nachvollziehbar.

  • Um unter Linux einen Netzwerk-Stack zu schreiben, kann man socket(AF_PACKET, SOCK_RAW, htons(ETH_P_ALL)) verwenden.

  • STM32-Nucleo-Boards haben integriertes 100-Mbit/s-Ethernet, und die STM32Cube-Software wird gemischt bewertet, liefert aber funktionierende Beispiele.

  • Ethernet arbeitet mit Frames, während Pakete ein IP-Konzept sind.

  • Man könnte den ENC28J60, einen „Stand-Alone Ethernet Controller with SPI Interface“, in Betracht ziehen; da kein Hardware-TCP/IP-Stack vorhanden ist, ist eine Software-Implementierung erforderlich.