Hinweis: Obwohl JavaScript für diese Website nicht unbedingt erforderlich ist, werden Ihre Interaktionsmöglichkeiten mit den Inhalten eingeschränkt sein. Bitte aktivieren Sie JavaScript für das volle Erlebnis.

Carmanah leuchtet den Weg mit Python

Einleitung

Dies ist eine Geschichte darüber, wie das elegante Design von Python die Sprache auf unerwartete Weise nützlich machen kann.

Carmanah Technologies Inc. (http://www.carmanah.com/) wurde mitten im Pazifischen Ozean gegründet. Der Gründer, David Green, segelte mit seinem Boot von Fidschi nach Victoria, British Columbia. Ihm ging der Strom für seine Navigationslichter aus und er hatte eine Idee.

Das Endergebnis dieser Idee mitten auf dem Ozean war das weltweit erste in sich geschlossene, vollautonome maritime Navigationslicht. Tagsüber nutzt jedes Gerät Sonnenenergie, um seine integrierten Batterien aufzuladen. Das Licht wird dann nachts aus der gespeicherten Ladung betrieben. Anstelle herkömmlicher Glühbirnen verwenden die Systeme von Carmanah langlebige, hocheffiziente LEDs. Das Gesamtergebnis ist ein außergewöhnlich robustes Gerät, das gegen die Elemente versiegelt und wartungsfrei ist.

Gelegentlich trieben verlorene Carmanah-Lichter Tausende von Meilen auf den Meeresströmungen, um später – voll funktionsfähig – wiedergefunden zu werden. Diese Zuverlässigkeit hat sie bei Wasserstraßenbehörden, Seglern und Küstenwachen verschiedener Länder berühmt gemacht.

Die Technologie, die in der rauen Meeresumgebung entstanden ist, hat sich in vielen anderen Bereichen als nützlich erwiesen, und heute ist Carmanah weltweit führend im Bereich der solarbetriebenen LED-Beleuchtung. Das Unternehmen stellt eine ganze Reihe solcher Lichter für eine Vielzahl von Anwendungen her, darunter Transit, Straßen, Eisenbahnen, industrielle Markierungen und Flugplatzbeleuchtung sowie die ursprüngliche Marineanwendung. Die Lichter werden weltweit verkauft und müssen oft extremen Bedingungen standhalten (offener Ozean, Wüstenklima, der hohe Norden, städtische Vandalen usw.). Carmanahs Lichter waren sogar Gegenstand einer Dokumentation im nationalen Fernsehen.

Closeup of one crosswalk traffic beacon.

Nahaufnahme eines Carmanah-Fußgängerüberweg-Ampelsystems, einem neueren Produkt, bei dem Python eine bedeutende Rolle gespielt hat. Das Gehäuse am oberen Ende des Mastes ist zur Sonne ausgerichtet, um die darauf angebrachten Solarmodule besser zu exponieren. Die Antenne für die drahtlose Verbindung zu einer ähnlichen Einheit auf der anderen Straßenseite ist auf der linken Seite des Gehäuses sichtbar. Vergrößern

Elektrische Beleuchtung ist so alltäglich geworden, dass sie wie eine einfache Idee erscheint. Ein autonomes, in sich geschlossenes Licht erweist sich jedoch als tatsächlich komplizierte Sache. Die Menge an nutzbarer Sonneneinstrahlung variiert je nach Wetter, Jahreszeit, geografischer Lage und Ausrichtung des Solarmoduls. Der Ladezustand der Batterie muss sorgfältig verwaltet werden, um eine lange Lebensdauer und korrekte Funktion zu gewährleisten. Die verfügbare Leistung muss überwacht und möglicherweise über Nacht rationiert werden.

Abhängig von der Anwendung muss das Licht möglicherweise auch programmierbar sein, um international anerkannte Blitzcodes auszugeben, auf Benutzereingaben zu reagieren usw. In noch komplexeren Situationen ist eine drahtlose Vernetzung erforderlich, damit die Lichter miteinander oder mit einer zentralen Basisstation kommunizieren können.

Für die Entwicklung dieser Lichter ist ein erheblicher mechanischer, elektrischer, elektronischer und optischer Aufwand erforderlich. Wie bei modernen komplexen Geräten üblich, steuert ein eingebettetes Softwareprogramm, das auf einem Mikrocontroller läuft, jede Einheit und erweckt sie zum Leben. Wie eine Miniaturversion des Monolithen aus *2001: Odyssee im Weltraum* erhält jedes Licht sich selbst am Leben und ist bereit, seine Funktion auszuführen, wann immer die Notwendigkeit entsteht.

Die Zukunft der praktischen Computer

Aktuelle praktische Computeranwendungen werden vom PC dominiert. Dennoch wird der PC, genau wie der Mainframe davor, seinen zentralen Platz in der Nutzung und dem Einsatz von Computertechnologie verlieren. Eingebettete Systeme – Computer, die Teil anderer Geräte sind – werden in Zukunft am weitesten verbreitet sein.

Der Mainframe ist heute noch lange nicht veraltet, und der PC wird ebenfalls wichtig bleiben. Die meisten Computer werden jedoch in etwas anderes integriert sein, anstatt allein zu stehen. Dieser Prozess hat bereits begonnen. Automobile nutzen mehrere eingebettete Systeme, von denen einige miteinander kommunizieren. Eingebettete Systeme steuern auch viele Haushaltsgeräte. Solche Systeme sind ebenfalls in der Industrie sehr wichtig, wo sie ein entscheidendes Element vieler Instrumente und Werkzeuge darstellen.

Der Katalysator für die zukünftige Expansion von eingebetteten Systemen ist der rasante Fortschritt der Netzwerktechnologie. Da die Hardware immer kostengünstiger, kleiner, schneller und energieeffizienter wird, werden Netzwerke von eingebetteten Geräten aufblühen und wachsen. Solche Geräte – in Zusammenarbeit miteinander – werden Häuser, Büros und Industrieanlagen steuern. Vorbereitungen für diese neue Computerwelt laufen bereits, wie die Initiative "Pervasive Computing" des Cambridge-MIT Institute zeigt (siehe http://oxygen.lcs.mit.edu/). Die Initiative wurde auch in einer BBC-Sendung behandelt (siehe http://news.bbc.co.uk/1/hi/technology/3583479.stm).

Das Aufkommen von Pervasive Computing wird es notwendig machen, dass jedes System sehr wartungsarm ist. Wenn jeder Benutzer Hunderte von Geräten benötigt, ist es einfach nicht machbar, alle regelmäßig zu warten. Natürlich wären vollkommen in sich geschlossene Systeme, die ihren eigenen Strom verwalten, ideal, da der Austausch von Batterien oder das Anschließen von Kabeln eine ernsthafte Herausforderung darstellt, wenn dies in großem Maßstab geschehen muss. So wird der Mini-Monolith zu einem Schwarm.

Die Bedeutung von Python

Die groß angelegte Bereitstellung von eingebetteten Systemen erfordert kostengünstige Komponenten. Aspekte wie geringe Größe, hohe Zuverlässigkeit und geringer Stromverbrauch sind ebenfalls sehr wichtig. Spezielle Prozessorchips, sogenannte Mikrocontroller, wurden entwickelt, um diese Ziele zu erreichen. Moderne Mikrocontroller, die CPU, Speicher und Peripheriegeräte (wie UARTs) auf einem einzigen Chip vereinen, sind erstaunliche Geräte. Diese Funktionen haben jedoch einen erheblichen Preis. Ein typischer Mikrocontroller verfügt nur über wenige hundert Bytes RAM, mehrere K ROM (zum Speichern des Programms) und um Größenordnungen weniger Verarbeitungsleistung als ein herkömmlicher Desktop-Mikroprozessor. Kaum eine Umgebung, um Python auszuführen!

Es gibt Projekte zur Anpassung von Python für eingebettete Anwendungen, aber sie erfordern erhebliche Ressourcen auf dem Mikrocontroller und befinden sich noch in einem sehr frühen Stadium. Überraschenderweise stellt sich jedoch heraus, dass Standard-Python im gesamten Lebenszyklus eines eingebetteten Systems von enormem Wert ist. Dies liegt daran, dass die stark ressourcenbeschränkte Natur von eingebetteten Geräten sie für viele Aufgaben von Standard-PCs abhängig macht – sowohl während der Entwicklung als auch während der Bereitstellung.

Zum Beispiel wird die eingebettete Software auf herkömmlichen Desktop-Systemen kompiliert, und der resultierende Objektcode wird dann auf den Ziel-Mikrocontroller geladen. Ein weiteres Beispiel ist die Fehlersuche an einem Gerät im Feld, die normalerweise zusätzliche Hardware erfordert, um ein Diagnoseprogramm auszuführen. Gewöhnliche Laptops sind für diese Anwendung eine sehr attraktive Plattform, da sie leicht verfügbar und relativ standardisiert sind.

Somit besteht ein wesentlicher Teil jeder Entwicklung von eingebetteter Software darin, den erforderlichen Support-Code für die Ausführung auf einem Standard-PC zu schreiben. Für diese Aufgabe stehen recht viele Sprachen zur Verfügung, aber die Vorteile von Python sind zahlreich. Python ist für Menschen mit unterschiedlichem Programmierhintergrund, wie Java, C oder Visual Basic, recht leicht zu erlernen. Nach der Einarbeitung in Python schreitet die Entwicklung sehr schnell voran – vielleicht schneller als mit jeder anderen Sprache. Gleichzeitig eignet sich Python für die Erstellung von sehr lesbarem, kompaktem und gut strukturiertem Code.

Pythons besondere Kombination von Merkmalen hilft auch eingebetteten Entwicklern, bei der Programmierung eines PCs effektiver zu sein. Während diese Entwickler gut mit C vertraut sind (bei weitem die beliebteste High-Level-Sprache für eingebettete Systeme), unterscheidet sich ein für einen Standard-Desktop oder Server geschriebenes C-Programm im Stil erheblich von einem für einen Mikrocontroller.

Die Kompaktheit von Python-Programmen ist besonders wichtig, da eingebettete Entwickler gezwungenermaßen gelernt haben, ihre Designs in sehr wenig Code auszudrücken. Pythons automatische Speicherverwaltung hilft ebenfalls, da viele eingebettete Entwickler wenig Erfahrung mit dynamischer Speicherzuweisung haben – einer Technik, die in den meisten eingebetteten Umgebungen nicht praktikabel ist. Darüber hinaus sind die objektorientierten Einrichtungen von Python einfach, leistungsfähig und nicht zwingend. Dies ermöglicht es eingebetteten Entwicklern (die oft weniger mit OOP vertraut sind), das objektorientierte Paradigma schrittweise in ihre Arbeit zu übernehmen.

Mit zunehmender Komplexität von eingebetteten Systemen wird der Vorteil der Verwendung von Python zur Ergänzung traditioneller Techniken immer wichtiger. Bei Carmanah hat sich die Einführung von Python (die mit dem Ampelsystem für Fußgängerüberwege begann, einem hochentwickelten Gerät mit drahtloser Vernetzung) auf mehrere Schlüsselbereiche des Lebenszyklus von eingebetteten Systemen ausgeweitet.

Ein Python-Programm steuert den Software-Build-Prozess und ermöglicht die Zusammenstellung von Firmware für verschiedene Produkte aus einer großen Anzahl gemeinsam genutzter Komponenten. Das Build-System ist einfach, aber viel flexibler als Makefiles und lässt sich leichter anpassen, konfigurieren und erweitern. Im Gegensatz zu den vom Compiler-Hersteller gelieferten Build-Tools kann das Python-basierte Build-System mit verschiedenen Compilern arbeiten.

Python wird auch für Belastungstests und Unit-Tests verwendet – ein Entwicklungsaspekt, der bei eingebetteten Systemen besonders wichtig ist, da die Geräte im Feld nur schwer zu aktualisieren sind. Zusätzliche Einsatzmöglichkeiten von Python, z. B. für Bedienfelder und Code-Generierung, werden ebenfalls in Betracht gezogen.

Eine sehr spannende Anwendung von Python bei Carmanah ist die eines Gerätesimulators. Ein Simulator kann als Knoten in einem eingebetteten Netzwerk fungieren und gleichzeitig den internen Systemzustand über animierte Bilder auf dem Bildschirm anzeigen. Simulatoren sind in den frühen Phasen eines eingebetteten Projekts, wenn wenig tatsächliche Hardware verfügbar ist, sehr wertvoll. Durch die Übernahme der Rolle fehlender Geräte können Simulatoren die Softwareentwicklung fortsetzen lassen, noch bevor das Hardware-Design abgeschlossen ist.

Prototype of Carmanah's crosswalk traffic beacon attached to a device simulator written in Python.

Hier ist eine Veranschaulichung der Nützlichkeit von Python in der eingebetteten Entwicklung. Ein Prototyp des Ampelsystems für Fußgängerüberwege von Carmanah interagiert mit einem Python-basierten Simulator, der auf einem normalen PC läuft. Der Simulator vervollständigt effektiv das System, da für eine Fußgängerüberweganlage zwei Ampeln (eine für jede Straßenseite) erforderlich sind. Neben der deutlichen Beschleunigung der Entwicklung kann ein Python-basierter Simulator wie gezeigt problemlos Zeichnungen animieren. Dies ermöglicht aussagekräftige Demonstrationen des Systems viel früher als sonst möglich gewesen wäre. Vergrößern

Bei Carmanah wurde Python nicht nur von erfahrenen Ingenieuren, sondern auch von studentischen Praktikanten eingesetzt. Selbst Praktikanten mit wenig Programmiererfahrung können mit Python viel erreichen und benötigen weniger Aufsicht als andere Sprachen.

Schlussfolgerung

Die spannende Arbeit an der Entwicklung in sich geschlossener, autonomer Geräte wird bei Carmanah fortgesetzt. Während der Schwarm von Mini-Monolithen Realität wird, wächst die Bedeutung (und Komplexität) der eingebetteten Software. Indem Python die Entwicklung, Prüfung, Steuerung und Bereitstellung solcher Software erheblich erleichtert, ebnet es wirklich den Weg in die Zukunft des Rechnens.

Über die Autoren

George Belotsky ist ein Softwarearchitekt, der umfangreiche Erfahrung mit Hochleistungs-Internet-Servern sowie mit Hard-Realtime- und Embedded-Systemen gesammelt hat. Seine technischen Interessen umfassen C++, Python und Linux. George Belotsky hat eine Reihe von Artikeln verfasst (siehe http://www.oreillynet.com/pub/au/1204 ), darunter eine Serie über Python und Netzwerk-I/O. Er ist auch der Autor des Open-Source-Projekts Flightdeck-UI ( http://openlight.com/fdui/ ). Sie erreichen ihn per E-Mail unter questions at openlight.com.

Thomas Major ist der Produktentwicklungsmanager bei Carmanah, von Ausbildung her Elektroingenieur mit breiter Erfahrung im Produktdesign, die er bei Visteon und Philips Electronics erworben hat. Sein Interesse begann im analogen Schaltungsdesign und erweiterte sich später auf digitales Design, Software und Embedded Design.