Ethernet-Board

Einleitung

Anfang 2003 hatte ich den Gedanken, dass es eine tolle Idee ist ein Controllerboard mit Ethernet-Anschluss zu bauen, um z.B. Daten vom CAN-Bus direkt ins Internet bzw. lokale Netzwerk zu schicken. Um dieses Ziel zu erreichen sind mindestens zwei Dinge notwendig: Erstens ist┬á f├╝r die physikalische Verbindung mit dem Ethernet-Bus ein Ethernet-Controller notwendig. Und zweitens ben├Âtigt man f├╝r die Ablaufsteuerung der Kommunikation einen TCP/IP-Stack. Da der Ethernet-Controller direkt vom TCP/IP-Stack angesteuert wird, begann die Entwicklung mit der Suche nach einem freien TCP/IP-Stack, der m├Âglichst einfach auf den Fujitsu portiert werden kann.

Open Source TCP/IP-Stacks f├╝r Embedded Controller Anwendungen:

  • ┬ÁIP TCP/IP Stack von Adam Dunkel
    + Sehr kompakter Stack speziell f├╝r 8-Bit Controller
    + Sehr geringer Speicherbedarf
  • Ethernut-Projekt
    + Vollst├Ąndiges Real Time Betriebssystem f├╝r Atmel ATmega128 mit TCP/IP
    + Unterst├╝tzte Ethernet-Controller RTL8019, LAN91C111
    - Gro├čer Aufwand f├╝r Portierung, weil recht gro├čes Projekt
  • TCP/IP Lean
    + Quellen offener TCP/IP-Stack aus dem Buch “TCP/IP Lean - Webserver for Embedded Systems” von Jeremy Bentham
    + Unterst├╝tzt NE2000-Komp. Netzwerkcontroller
    - Stack muss f├╝r kommerzielle Zwecke lizenziert werden
  • OpenTCP (Sourcecode bei Sourceforge.net)
    + Port f├╝r den Fujitsu bereits vorhanden
    + Unterst├╝tzte Ethernet-Controller u.a. CS8900A

Die Wahl des Stacks fiel eigentlich auf den OpenTCP-Stack, der zu dem Zeitpunkt noch recht neu und unbekannt war. Bei der Suche nach einem Lieferanten f├╝r den┬á Crystal/Cirrus CS8900A stie├č ich dann aber auf den Wiznet W3100A.

Vorteile des W3100A:

  • Bei dem W3100A handelt es um einen 10/100MBit Ethernet-Controller mit einem eingebauten TCP/IP-Stack
  • Hardwarem├Ą├čig unterst├╝tze Protokolle:┬á TCP, IP, UDP, ICMP, ARP und MAC
  • Der Baustein kann bis zu vier gleichzeitige TCP/IP-Verbindungen aufbauen.
  • Hohe Datenraten durch die Steuerung der Kommunikation in HW (Entlastung des Fujitsu-Controllers) und den internen Buffer m├Âglich
  • Die Anbindung an den Fujitsu Controller erfolgt dabei entweder ├╝ber einen parallelen 8 Bit Datenbus oder ├╝ber eine I2C-Schnittstelle.
  • 3.3V Betriebsspannung mit 5V kompatiblen IO
  • Interne Buffer : 16kB RAM
  • Die Ansteuerung dieses Chips erfolgt ├╝ber eine API, deren Source Code offenliegt und die leicht zu portieren ist.

Nachteile des Wiznet W3100A:

  • Es wird ein externer PHYceiver (RTL8201BL) ben├Âtigt
  • Da die Kommunikation direkt im W3100A gesteuert wird, werden keine Protokolle wie z.B. SLIP oder PPP ├╝ber die seriellen Schnittstellen des Fujitsu unterst├╝tzt.<

Entwicklung der Hardware

Den Kern des Controllerboards bildet ein MB90F549 von Fujitsu. Dieser Controller besitzt intern 256kByte Flashspeicher und 6kByte RAM. Der Anschluss des W3100A erfolgt ├╝ber den externen Bus des Fujitsu im 8-Bit Modus. Da bei der Entwicklung der Hardware der Speicherplatzbedarf f├╝r die Software nicht abgesch├Ątzt werden konnte, wurde der RAM-Speicher durch einen 512kB SRAM-Baustein am externen Bus erweitert. Zus├Ątzlich wurde an den Bus auch noch ein 8-Bit Interface f├╝r CompactFlash-Cards angeschlossen.

Blockschaltbild des Controllerboards

Die Adressdekodierung und die Logik zur Umschaltung in den Programmiermodus wurde in einem programmierbaren Logikbaustein vom Typ Xilinx XC9536 untergebracht. Als Kommunikationsschnittstellen stellt das Board neben einer RJ45-Buchse f├╝r das Ethernet, eine RS232-Schnittstelle und einen CAN-Bus zur Verf├╝gung. ├ťber die RS232-Schnittstelle erfolgt auch das Flashen des┬á Controllers, wenn sich das Board im Programmiermodus befindet.

Die gesamte Schaltung des Controllerboards ist auf eine 5V-Versorgung ausgelegt. Nur f├╝r den W3100 und den RTL8201 ist eine zus├Ątzliche 3.3V Versorgung notwendig.

Fertig best├╝ckte Platine

Entwicklung/Portierung der Software

Das API von Wiznet f├╝r den W3100A wurde ausgehend von dem 8051-C-Sourcecode zum Fujitsu portiert. Dabei wurde erstmal die bisherige Struktur des Sourcecodes eins zu eins ├╝bernommen, um m├Âglichst keine Fehler in den bisherigen Code einzubauen. Innerhalb von ein paar Stunden war es dadurch m├Âglich, einen TCP-Client/Server und einen UDP-Client/Server auf den Controllerboard zum Laufen zu bringen.

Die Kommunikation ├╝ber den W3100A funktioniert bisher sehr gut. Einzig bei UDP-Verbindungen gibt es einen Bug/Feature in dem Stack des Bausteins. Der Baustein l├Âst nur bei dem ersten Senden eines UDP-Pakets einen ARP-Request aus. D.h. nach der Initialisierung des Bausteins sendet der W3100A immer an den Empf├Ąnger, f├╝r den das erste UDP-Paket bestimmt war, unabh├Ąngig von der IP-Adresse die ├╝bergeben wird. Eigentlich ein etwas merkw├╝rdiges Verhalten f├╝r ein verbindungsloses Protokoll. Als Workarround wird angegeben, dass bei einer ├âÔÇ×nderung des Empf├Ąngers der Port des Stack neu initialisiert werden muss.

Der Speicherbedarf für die bisherigen Client/Server-Programme lag unter  10kB Flash und bei ein paar hundert Byte RAM. Das externe RAM ist also für einfache Anwendungen nicht notwendig.

Im Augenblick ├╝berlege ich, ob es sinnvoll ist, das API des W3100A so umzuschreiben, dass es mit OpenTCP kompatibel ist. Damit k├Ânnte man dann die h├Âheren Protokolle, wie DHCP, DNS, SMTP usw., direkt aus OpenTCP ├╝bernehmen.

Literatur zum Thema TCP/IP

  • Vernetzung von Mikrocontrollern mit dem Ethernet: TCP/IP Kommunikation f├╝r Mikrocontroller und Embedded-Systeme
    von Sven Biller
    ISBN 978-3639014419

    In diesem Buch wird auf den Wiznet-Baustein in Kombination mit Microcontrollern aus der AVR-Familie eingegangen.

  • TCP/IP-Grundlagen Protokolle und Routing
    von Gerhard Lienemann
    ISBN 3-8829-180-X

    Gutes Buch zu der grundlegenden Arbeitsweise und Funktion von TCC/IP und Ethernet

  • Messen, Steuern und Regeln per Internet
    von Klaus-Dieter Walter
    ISBN 3-7723-4280-9

    Sehr umfachreiches Buch, das neben den Grundlagen von TCP/IP auch viele h├Âhere Protokolle wie http, smtp, telnet erkl├Ąrt. Im Mittelpunkt des Buches steht aber direkt die Programmierung von Embedded Webservern, Telnet-Servern, Email-Clients usw. Durch viele Beispielprogramme wird der Einstieg in die Programmierung von Netzwerkanwendungen erleichtert.

  • TCP/IP Lean
    von Jeremy Benthan
    ISBN 1-5782-0108-X

    Im Mittelpunkt dieses Buches steht die Entwicklung eines TCP/IP-Stacks f├╝r den PIC-Mikrocontroller. Dabei werden in diesem Buch nicht nur die technischen Details des Stacks erkl├Ąrt, sondern es wird auch auf viele Grundlagen der Programmierung von Kommunikationsanwendungen wie State-Maschines, Buffer usw. eingegangen. Die zweite Auflage des Buchs enth├Ąlt auch ein Kapitel zur Anbindung einer WirelessLan-PCMCIA-Karte an einen PIC-Controller.