Ethernut
Ethernut ist ein Open-Source-Hardware- und Software-Projekt zum Betrieb von Embedded-Ethernet-Systemen und wird überwiegend im Forschungsbereich und in industriellen Anwendungen eingesetzt.
Entwicklungsgeschichte
BearbeitenNach der rasanten Entwicklung des Internets als Kommunikationsmedium für menschliche Benutzer erschien vielen Entwicklern die Idee eines Internets der Dinge als logische Weiterentwicklung. So entstanden um das Jahr 2000 mehrere freie und kommerzielle Projekte mit dem Ziel, eingebettete Systeme in bestehende TCP/IP-Netze zu integrieren. Die Herausforderung bestand darin, dass die zu dieser Zeit üblichen 8-Bit-Mikroprozessoren selten über mehr als 64 Kilobyte Speicher verfügten. So veröffentlichte der britische Entwickler Dave Hudson im Jahr 2000 den offenen Quellcode eines Echtzeitbetriebssystemkerns mit integrierten TCP/IP-Stack unter dem Namen Liquorice.
Ein weiteres Problem bestand darin, dass es zu dieser Zeit kaum geeignete Hardware gab. Unter anderem waren fast alle verfügbaren Netzwerk-Controller mit PCI-Bus für einfache Mikrocontroller ungeeignet. Für die Mikrocontroller-Familie Atmel AVR existierte bereits eine große Zahl freier Entwicklungswerkzeuge und so wurde im Jahr 2001 ein erstes Board auf Basis des ATmega103 und einem veralteten, aber noch in Produktion befindlichen, Ethernet-Controller mit ISA-Bus unter BSD-Lizenz veröffentlicht. Es zählt damit zu den Pionieren freier Hardware[1].
Hudson stellte die Arbeit an Liquorice nach einem Jahr ein. Der Quellcode wurde in das neu gegründete Projekt Ethernut übernommen, um die freie Hardware und Software zusammenzuführen. Nach ersten Veröffentlichungen im Entwicklerforum AVR Freaks wechselte das Projekt im Jahr 2002 zum Webportal SourceForge.
Hardware
BearbeitenDerzeit sind vier verschiedene Referenz-Designs (Ethernut 1, Ethernut 2, Ethernut 3 und Ethernut 5) als betriebsbereit aufgebaute Platinen erhältlich[2].
In allen Ausführungen sind die gleichen funktionellen Baugruppen enthalten:
- Ethernet-Schnittstelle
- RS232-Schnittstelle
- Stromversorgung
- Nahezu alle I/O-Pins des Mikrocontrollers verfügbar
Die Designs unterscheiden sich vor allem im verwendeten Mikrocontroller (Ethernut 1 & 2: 8-bit AVR, Ethernut 3 & 5: 32-bit Arm) und der Speicherverfügbarkeit. So ist ab dem Ethernut 3 ein Slot für MMC-Speicherkarten verfügbar.
Software
BearbeitenNut/OS
BearbeitenDas Betriebssystem für die Boards heißt Nut/OS. Es ist ein modulares Echtzeitbetriebssystem, das unter der BSD-Lizenz veröffentlicht ist.
Merkmale:
- Kooperatives Multithreading
- Garantierte Interrupt-Antwortzeiten
- Priorisierte Ereignisbehandlung
- Verschiedene konfigurierbare Timer
- Dynamische Speicherverwaltung
- Techniken zur Prozesssynchronisation
- Gute Portierbarkeit auf andere Architekturen
Nut/Net
BearbeitenDer Netzwerk-Stack der Ethernut-Software heißt Nut/Net. Er stellt eine umfangreiche API für verschiedene Protokolle zur Verfügung.
Unterstützte Protokolle:
Konfiguration und Anwendungen
BearbeitenDie Einrichtung von Nut/OS und Nut/Net ist denkbar einfach. Nach dem Herunterladen der Dateien wird ein Konfigurationswerkzeug ausgeführt, welches nach wenigen Einstellungen die Bibliotheken für die ausgewählte Hardware erstellt.
Bei der Programmierung der Anwendung in C werden nun die Bibliotheken von Nut/OS und Nut/Net benutzt. Zusätzlich steht dem Anwendungsprogrammierer die C-Standardbibliothek zur Verfügung. Neben C wird C++ weitestgehend unterstützt. Des Weiteren existiert ein Lua-Interpreter, so dass Lua-Skripte auf dem Board ausgeführt werden können.
Ethernut liefert eine Vielzahl von einfach gehaltenen Beispielprogrammen mit, um den Einstieg in Nut/OS zu erleichtern.
Unterstützte Architekturen
Bearbeiten- Atmel AVR (z. B.: ATmega103, ATmega128, ATmega2561, AT90CAN128 u. a.)
- Atmel AVR32 (z. B.: AT32UC3A, AT32UC3B u. a.)
- ARM7 (z. B.: AT91R40008, AT91SAM7X, LPC-E2294, Game Boy Advance u. a.)
- ARM9 (z. B.: AT91SAM9260, AT91SAM9XE u. a.)
- ARM Cortex M (z. B. STM32, LPC17)
Folgende Architekturen werden zwar prinzipiell unterstützt, werden aber aktuell nicht aktiv gewartet:
Bluetooth Stack
BearbeitenDie Forschungsgruppe für verteilte Systeme der ETH Zürich hat ein verteiltes Sensornetz mit Sensorknoten auf AVR-Basis entwickelt. Diese Sensorknoten kommunizieren über Bluetooth miteinander. Als Softwarebasis wird der Open-Source-Bluetooth-Stack BTNut verwendet. Der BTNut-Stack basiert auf Nut/OS und erweitert es um Bluetooth-Funktionalität. Obwohl der BTNut-Stack in erster Linie für die BTNode-Sensorknoten entwickelt wurde, lässt sich der Bluetooth-Stack auch auf andere Applikationen portieren.
Verbreitung
BearbeitenDurch die frühe Verfügbarkeit und das offene Konzept der Hardware stießen Ethernut-Boards zunächst im Forschungsbereich auf Interesse, wo man sich mit verschiedenen Aspekten des Ubiquitous Computing auseinandersetzte[3][4][5]. Unter anderem diente es als erste eingebettete Plattform für Contiki[6]. Die freizügige Lizenz macht aber auch den kommerziellen Einsatz unkomplizierter und sowohl Hardware als auch Software fanden Einzug in zahlreiche Produkte.
Laut eigener Aussage verkaufte der deutsche Hersteller, die egnite GmbH, bisher ca. 33.000 Ethernuts (Stand: Dezember 2013). Weitere Hersteller kompatibler Hardware sind Achatz electronics (Niederlande), proconX (Australien), Propox (Polen), SOC Robotics (Kanada), HW group s.r.o. (Tschechien), thermotemp Embedded-IT (Deutschland). Des Weiteren wird das Nut/OS-Betriebssystem als Basis für das BTNode-Sensornetz der ETH Zürich verwendet.[7]
Ähnliche Geräte
BearbeitenWeblinks
BearbeitenEinzelnachweise
Bearbeiten- ↑ Archivseite mit Ethernut als freier Hardware aus dem Jahr 2001 ( vom 10. Februar 2001 im Internet Archive)
- ↑ Archivlink ( des vom 23. September 2015 im Internet Archive) Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.
- ↑ Marius Strobl et al.: Rapid Prototyping Embedded Systems Using Ethernut Boards (PDF; 981 kB)
- ↑ John Regehr, Usit Duongsaa: Preventing Interrupt Overload (PDF; 264 kB)
- ↑ M. Can Filibeli et al.: Embedded web server-based home appliance networks (PDF; 832 kB)
- ↑ Adam Dunkels: Full TCP/IP for 8-Bit Architectures (PDF; 88 kB)
- ↑ Jan Beutel: Fast-prototyping Using the BTnode Platform ( vom 24. Dezember 2013 im Internet Archive) (PDF; 2,2 MB)