Proprietary System

1.1 History of this Book and What You’ll Get From Reading It

Im Laufe von etwa einem Jahr, nachdem ich mein erstes Buch fertiggestellt hatte, nahm ich ein altes Lieblingsprojekt wieder auf, nämlich den Bau eines autonomen Unterseeboots (das so genannte E-2-Projekt) mit bestimmten, recht anspruchsvollen Funktionsanforderungen. Im Zuge der Entwicklung dieser Idee verbrachte ich viele Stunden im Internet und anderswo mit der Erforschung von Techniken zur schnellen Entwicklung verschiedener elektromechanischer Steuersysteme und Plattformen zur Ausführung ziemlich komplexer Signalverarbeitungsalgorithmen. Obwohl es natürlich Tausende von nützlichen Projekten und Informationsschnipseln gibt, die man im Internet und in Büchern über Hobby-Robotik finden kann, stellte ich fest, dass niemand sonst meine Prioritäten zu kennen schien. Insbesondere gibt es anscheinend kein einziges Nachschlagewerk, das zumindest einführende Lösungen für alle Fragen des eingebetteten Designs, die mein Projekt betrafen, zusammenfasst: die Notwendigkeit, kostengünstige (Open-Source-)Tools und Betriebssysteme zu verwenden, die Forderung nach mehreren Funktionen mit ziemlich harten Echtzeitanforderungen und der Wunsch, wo immer möglich billige, handelsübliche Komponenten zu verwenden. Die verfügbaren Ressourcen zu vielen Themen konzentrieren sich entweder auf sehr teure, handelsübliche Industriekomponenten oder auf stark eingeschränkte Systeme, die um einen einzigen Mikrocontroller herum aufgebaut sind, mit sorgfältig optimiertem, nicht portierbarem Code zur Steuerung von Peripheriegeräten – und einer sehr eingeschränkten Auswahl an Peripherieunterstützung obendrein. Die letztgenannten Einschränkungen des Systemdesigns sind unvermeidlich, wenn Sie mit engen Leistungsanforderungen, Platzbeschränkungen oder sehr niedrigen Stücklistenkosten arbeiten, aber es ist ein unangemessener Aufwand, solche Systeme für ein einmaliges Projekt oder einen Prototyp zu entwickeln und abzustimmen. Darüber hinaus ist es eine enorme Aufgabe, sich mit allen Details vertraut zu machen, die für den Zusammenbau eines solchen Systems erforderlich sind; man kann sich leicht in der Feinabstimmung von Details verlieren, ohne jemals ein vollständiges, funktionierendes System einsetzen zu können. Irritierenderweise müssen viele der Feinabstimmungen und die meisten der sorgfältigen Planungen, die man vorgenommen hat, um das System einsatzfähig zu machen, wieder verworfen werden, wenn man in die tatsächliche Produktion einsteigt oder wenn man weitere Einheiten mit leicht veränderten Komponenten bauen muss.

Was ich bei der Entwicklung des E-2-Projekts suchte, war eine Möglichkeit, verschiedene harte Echtzeitmodule (Sensoren und Aktoren) zu bauen, die einfach und kostengünstig an einen Allzweckcomputer mit Linux angeschlossen werden konnten. Die Linux-Box diente als Testumgebung für Algorithmen, die später in ein kleineres, kühleres und energieeffizienteres Verarbeitungsmodul portiert werden sollten. Ich brauchte eine solide Basis an bekanntem guten Code und Techniken, damit ich von diesem Punkt aus mein eigenes maßgeschneidertes System aufbauen konnte. Außerdem wollte ich einen einfachen Leitfaden für die Erstellung eingebetteter Linux-Distributionen. Für den anfänglichen, nicht einsatzfähigen Prototyp meines U-Boots hatte ich keine genaue Vorstellung davon, wie viel CPU-Leistung ich in der endgültigen Version benötigen würde – ich wollte also weder an eine bestimmte Mikrocontroller-Architektur gebunden sein, noch wollte ich mich mit dem Versuch verzetteln, viele Echtzeitaufgaben auf einem einzigen Mikrocontroller zu optimieren. Außerdem wollte ich einige Peripheriegeräte – wie z.B. Kameras – verwenden, die sich am einfachsten über ein Mehrzweck-Betriebssystem anbinden lassen.

Diese Anforderungen könnten sich mit Ihrem eigenen Arbeitsleben decken. Wahrscheinlich sind Sie schon einmal auf Situationen gestoßen, in denen es nützlich wäre, ein langfristiges Datenerfassungsexperiment zu automatisieren oder eine einfache automatische Steuerung für eine Programmier-, Fertigungs- oder andere Aufgabe zu erstellen. In diesem Sinne sind drei weitere Fälle zu nennen, in denen ich die in diesem Buch beschriebenen Techniken angewandt habe:

Die Entwicklung einer Reihe erfolgreicher (kommerziell vertriebener) vernetzter Multimediageräte, die für unbeaufsichtigte Anwendungen in der Werbung und in Kunstgalerien bestimmt sind.

Die Entwicklung spezialisierter, fast vollständig automatischer mechanischer Fehlertestgeräte für bestimmte Unterhaltungselektronikartikel.

Konstruktion eines automatischen Hochgeschwindigkeits-Datenloggers, der eine Funkverbindung überwacht und DTMF-Nachrichten extrahiert, die an bestimmte Empfänger gerichtet sind.

Der zweite Punkt oben ist von besonderem Interesse, weil er schön zeigt, wie dieses Buch von praktischem Wert in Prozesssteuerungs- und Prüfanwendungen sein kann. Im Jahr 2002 arbeitete ich kurz für eine kleine Abteilung eines multinationalen Unternehmens, das sich hauptsächlich mit Kunststoffprodukten für Haushalt und Büro befasst. Es war sehr lehrreich, deren automatisierte Prüfvorrichtungen – proprietäre Systeme – zu untersuchen und die Kosten und die Komplexität der Einrichtung dieser Vorrichtungen mit den relativ geringen Kosten und der Einrichtungszeit eines einfachen Linux-basierten SBC zu vergleichen, der dieselben pneumatischen Aktoren und Sensoren steuert. Es gibt eindeutig einen unzureichend genutzten Markt für kostengünstige Testsysteme dieser Art. Die in dieser Einrichtung verwendeten proprietären Systeme kosteten fast 20.000 $ für ein halbes Dutzend Aktuatoren und die zugehörigen SPSen, zuzüglich unzähliger Stunden an Einrichtungszeit1. Die Steuerungssoftware für diese Geräte war spezialisiert und wenig bekannt. Die meisten dieser Geräte waren ungenutzt, weil die Personen, die sie ursprünglich konfiguriert hatten, das Unternehmen verlassen hatten. Im Gegensatz dazu ließen sich dieselben Aufgaben mit einem normalen PC für ein paar hundert Dollar plus vielleicht 200 Dollar pro Aktor für die zugehörige Pneumatik leicht bewältigen. Noch wichtiger ist, dass die Steuerungssoftware für ein solches System ein einfaches C-Programm ist, das von jedem kompetenten Informatik- oder Elektrotechnikstudenten leicht verstanden und angepasst werden kann; es gab mehrere Kandidaten, die im Firmenlabor zur Verfügung standen.

Aufgrund der Art der Forschung, die zur Entstehung dieses Buches geführt hat, habe ich eine Reihe von Details aus der Marine in den Text aufgenommen, von denen nicht alle für den Embedded Engineer direkt relevant sind. Wenn dieses Material nicht von Interesse ist, können Sie es getrost ignorieren, ohne dass das Verständnis des restlichen Textes in irgendeiner Weise beeinträchtigt wird. Der Grund dafür, dass diese Informationen neben der „reinen“ Diskussion über die Embedded-Entwicklung enthalten sind, besteht hauptsächlich darin, die realen Anforderungen und Denkweisen zu veranschaulichen, die zu verschiedenen Designentscheidungen im E-2-Projekt geführt haben. Das Ingenieurwesen ist keine theoretische Wissenschaft, sondern eine angewandte Disziplin, und in diesem Sinne verwende ich spezifische Beispiele, um theoretische Punkte zu veranschaulichen.

Sie sollten auch beachten, dass einige der in diesem Buch geäußerten Meinungen, wenn auch nicht gerade kontrovers (außer nach Usenet-Standards – alles im Usenet ist kontrovers!), so doch zumindest strittig sind; zum Beispiel die Wahl des AVR als meine Echtzeit-Steuerungsplattform. Aus diesem Grund habe ich in diesem Text zusätzliche Begründungen für die von mir getroffenen Entscheidungen gegeben. Diese zusätzliche Erklärung soll die Gründe aufzeigen, die ich für die Wahl bestimmter Wege hatte, aber sie ist ausdrücklich nicht dazu gedacht, den AVR bei Leuten zu missionieren, die Erfahrung mit einer anderen Architektur haben und diese bevorzugen. Auch dieses „Bonusmaterial“ ist für das Verständnis der hier vorgestellten grundlegenden Konzepte nicht entscheidend, und Sie können es getrost auslassen, wenn Sie es wünschen.

Auch sollten Sie bedenken, dass dieses Buch absichtlich keine „Bibel“ ist. Es handelt sich nicht um eine erschöpfende Darstellung jeder einzelnen Nuance der behandelten Themen; ein solches Werk würde mehrere Regale füllen. Das primäre Ziel dieses Buches ist es, eine einfache, modulare und kostengünstige Methodik für die Implementierung komplexer eingebetteter Systeme zu beschreiben und zu veranschaulichen sowie einige gebrauchsfertige Module vorzustellen, die der Leser an seine eigenen Projekte anpassen kann. Der besondere Schwerpunkt liegt dabei auf der Realisierung von End-to-End-Lösungen unter Verwendung kostengünstiger Entwicklungshardware und freier Software-Tools. Wenn Sie die letzten Seiten erreicht haben, sollten Sie hoffentlich Folgendes haben:

Ein funktionales Verständnis der kritischen „Under-the-Hood“-Details, die erforderlich sind, um Linux auf x86-Plattformen zu booten.

Eine Einführung in die Arten von Problemen, mit denen Sie konfrontiert werden, wenn Sie eingebettete x86-Einplatinencomputer als Kern von Datenerfassungs- und Bewegungssteuerungssystemen verwenden.

Grundlegende Informationen über die Atmel AVR-Mikrocontroller-Familie.

Eine praktische Einführung in den Aufbau einiger einfacher Datenerfassungs- und Motorsteuerungsschaltungen und deren Anschluss an PCs.

Ein paar grundlegende Informationen zu den Themen Datensicherheit, Authentifizierung und Zuverlässigkeit, die sich auf eingebettete Systeme auswirken.

Der Grundgedanke dieses Buches ist, dass der Leser mit dem einen oder anderen Thema der Linux-Anwendungsentwicklung oder der Entwicklung von tief eingebetteten Systemen schon einigermaßen vertraut ist – dieses Buch ist so konzipiert, dass es Sie mit den Grundlagen der jeweils fehlenden Seite Ihrer Lernkurve nach vorne bringt. Es bietet auch den Klebstoff, der diese Informationen im Gesamtkontext eines ziemlich komplexen Projekts zusammenhält. Nebenbei bemerkt habe ich das Wort „Kochbuch“ mit einer gewissen Vorsicht verwendet. Reines Kochbuch-Engineering – das Zusammenstecken unverstandener Teile wie Capsela-Kugeln – ist nie eine gute Praxis. In diesem Buch gebe ich Ihnen einige gebrauchsfertige Capsela-Teile an die Hand, aber ich erkläre Ihnen auch, wie und warum ich die Zahnräder und Wellen in jedem Teil hergestellt habe, und bis zu einem gewissen Grad auch, wie Sie weiter gehen und selbst bessere Teile herstellen können. Diese Erklärungen sind viel wichtiger als die Baupläne für die Teile selbst.

Wenn man ein Buch wie dieses plant, tappt man leicht in eine von zwei Fallen: entweder eine einzige, monolithische „Mega-Anwendung“ zu erstellen, die alle gewünschten Punkte veranschaulicht, aber extrem schwierig kurz zu erklären ist, oder andererseits das Thema in zahlreiche kleine abstrakte Notizen zu zerlegen, die viele Leser nur schwer in reale Projekte integrieren können. Ich habe versucht, zwischen diesen beiden Extremen zu steuern, indem ich die interessanteren Module des E-2-Projekts in ein paar kleine, praktische Anwendungen unterteilt habe, die im Grunde genommen eigenständigen Code und genügend Theorie enthalten, um diese Anwendungen für Ihre eigenen Zwecke zu modifizieren und zu erweitern.

Abschließend noch ein Hinweis für diejenigen, die mein vorheriges Buch „Embedded System Development on a Shoestring“ besitzen. Dieses Buch ist nicht als Fortsetzung dieses Buches gedacht, aber es ist definitiv verwandtes Material. Wenn Sie die Techniken in diesem Buch anwenden, um einen Prototyp zu entwickeln, und diesen später in eine optimierte Ein-Chip-Lösung umwandeln wollen, wird Ihnen meine frühere Arbeit helfen zu verstehen, wie Sie freie GNU-Tools verwenden können, um Ihre Software einfach auf einen ARM-Mikrocontroller zu portieren. Die Hauptkritikpunkte, die ich für das vorherige Buch erhielt, waren, dass es ein breiteres Spektrum an Informationen hätte abdecken müssen und dass es zu wenige Illustrationen gab, was es zu einer eher trockenen Lektüre machte. Ich habe mir diese Kommentare zu Herzen genommen und hoffe, dass dieses Buch Ihre Bedürfnisse in beiderlei Hinsicht befriedigt. Wie immer sind Ihre Kommentare und Vorschläge willkommen; Sie können mir eine E-Mail schicken oder meine Website besuchen unter http://www.zws.com/.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.