Notizen zum Projekt (-Praktikum)


von Prof. Jürgen Plate

Entwurf von Mikrocontrollersystemen

(Nach Motiven von Prof. Walter Ries)

Die Phasen eines Mikrocontroller-Projekts

Die Entwicklung von Systemen, in denen Mikrocontrolleren zum Einsatz kommen, d.h. Hardware-Baugruppen und Software-Module zu einem Gesamtsystem integriert werden, ist i. a. ein komplexes Projekt. Der Projektverlauf lässt sich anschaulich in voneienander abhängige Phasen aufteilen, von denen jede eine Weiterentwicklung der vorhergehenden in Richtung auf die Fertigstellung des Gesamtsystems darstellt.

Erkennbar ist, dass während der verschiedenen Phasen Hardware- und Softwareteile zunächst gemeinsam spezifiziert, dann jedoch getrennt voneinander entwickelt werden, um im Anschluß daran integriert zu werden. Zwei Dinge sind im Bild oben besonders zu beachten:

Wie Sie in der Projekttechnik-Vorlesung gehört haben, verlangt jedes Entwicklungsprojekt - und sei es noch so klein - eine sorgfältige Planung. Diese umfasst nicht nur die Terminplanung, sondern auch die Resourcenplanung (Verfügbarkeit von Personal, Kapital, Fertigungskapazität, Werkzeugen etc.) und ihre Überwachung.

Die Entwicklungsphasen in Stichworten:

Allgemeine Entwurfsregeln

Es lohnt sich immer, beim Entwurf komplexer Systeme nach einem bewährten Schema vorzugehen. Es gibt eine Reihe von Entwurfsprinzipien, vor allem für die Software-Entwicklung, die zum Teil durch Programme unterstützt werden. Im Phasenmodell des ersten Abschnitts ist es vor allem der Systemgrobentwurf), der für die Qualität des zu entwickelnden Produkts ausschlaggebend ist. Hier und auch im anschließenden Feinentwurf sollte nach folgenden Regeln vorgegangen werden:

Weitere Punkte, die bei allen strukturierten Entwürfen zu beachten sind:

Realisierungsalternativien

Eine der ersten Fragen zu Beginn einer Mikrocontroller-Systementwicklung (System-Grobentwurf) lautet: kaufen oder selbermachen (genauer: wieviel kaufen und was selbermachen?). Die Antwort kann im allgemeinen nur als Gewichtung zwischen diesen beiden Alternativen gegeben werden, denn ganz ohne Eigenentwicklung wird es nicht gehen und nur ganz seiten wird man die Möglichkeit haben, alles selbst zu machen, z. B. sogar den Prozessorchip selbst zu entwickeln und herzustellen (obwohl, bei modernen FPGA-Bausteinen ...). Es existiert ein riesiger Markt an Produkten zur Entwicklung von dedizierten Rechnersystemen, wobei die Palette von diskreten Bauteilen (passive und aktive) über ICs der verschiedenen Integrationsdichten und mechanischen Bauteilen bis hin zu halbfertigen und fertigen Baugruppen bzw. Subsystemen reicht.

Idealerweise kann man sich die Entwicklung eines dedizierten Systems wie das Zusammensetzen verschiedener LEGO-Bausteine vorstellen. Das Problem dabei ist nur, eine insgesamt wirtschaftliche Gesamtlösung zu finden. Abgesehen von ganz wenigen Projekten, wo der Kostenfaktor eine untergeordnete Rolle spielt (Raumfahrt, Militär), hat man im allgemeinen die verschiedenen Kostenanteile genau zu überdenken. Die wichtigsten davon sind

Erschwert wird das Problem noch dadurch, dass die verschiedenen Kostenanteile sich gegenseitig beeinflussen; so können z.B. die Herstellungs-, Service- und Folgekosten möglicherweise durch einen höheren Entwicklungsaufwand erheblich reduziert werden.

Man unterscheidet in Bezug auf die "Einstiegsebene" grob zwei Realisierungsaltemativen: die Bauteil-Ebene (Eigenentwurf, Speziallösung) und die Baugruppen-Ebene (Systemlösung). Ein wichtiges Entscheidungskritedum stellt die zu erwartende Stückzahl dar.

Auswahl des Mikrocontrollers

Die wichtigste Rolle spielt der Controller selbst. Hier kann man zur Auswahl nach folgendem Schema vorgehen:

  1. Erstellen Sie eine Liste der Hardwareanforderungen. Das geht recht einfach, wenn man sich eine Blockschaltung skizziert. Zum einen werden die Kommunikationsschnittstellen aufgelistet, beispielsweise sind dies 1 x USB, 1 x UART, 1 x I²C und 1 x SPI. Beim USB-Anschluss kann man auf externe Bausteine + UART ausweichen, wenn die CPU keine eigene USB-Schnittstelle besitzt. Statt 1 x USB und 1 x UART stände dann 2 x UART in der Liste (mit dem Nachteil, dass die endgültige Schaltung aufwendiger wird. Zum anderen werden die "einfachen" Schnittstellen aufgeführt, im Beispiel 7 x GPIO (digitale E/A) und 1 x ADC (Analog-Digital-Wandler).
  2. Dann folgt eine Aufstellen der Anforderungen an die Softwarearchitektur. Hier sind Fragen zu klären wie Taktfrequenz und Mächtigkeit des Befehlssatzes (8 MHz Atmel Atmega oder 80 MHz DSP). Wird Gleitpunktarithmetik benötigt? Kann die Gleitpunktarithmetik emuliert werden oder muss sie der Prozessor in seiner Hardware implementiert haben. Mit welcher Frequenz müssen die digitalen und analogen Ein- und Ausgänge angesprochen werden? Hir darf man ruhig grob abschätzen, es kommt eher auf die Zehnerpotenz als auf einen exakten Wert an. Insgesamt muss also der Bedarf an Rechenleistung abgeschätzt werden.
  3. Aufgrund der beiden vorhergehenden Punkte kann eine Entscheidung für den einzusetzenden Prozessor fallen. Dabei spielen wieder die Taktfrequenz, aber auch die Wortbreite (8, 16 oder 32 Bit), die Größe des Flash-Programmspeichers und des RAM eine Rolle. Denken Sie dabei auch etwas in die Zukunft. Nicht jeder Controller wird so lange produziert wie der 8051, der schon in den 1980er Jahren entwickelt wurde und immer noch lieferbar ist. Es kann auch durchaus vorkommen, dass das etwas "größere" 16-Bit-Modell weniger kostet als der 8-Bit-Controller aus der gleichen Familie.
  4. Nicht nur die o. g. Kriterien spielen eine Rolle, sondern auch die Expertise im Haus. Tiefe Kenntnisse einer Controllerfamilie führen nicht nur zu kürzeren Entwicklungszeiten, sondern können auch "schlauere" Gesamtlösungen zur Folge haben. Aber auch hier sollte man offen für Neues sein und auch ganz unvoreingenommen alternativlösungen in Betracht ziehen. Mitunter ist die Auswahl des Controller ein iterativer Prozess. Auch der Energiebedarf kann eine Rolle spielen, beispielsweise bei Batteriegeräten oder akkugespeisten Datenerfassungssystemen.
  5. Schließlich spielen auch noch Preis und Lieferbarkeit eine entscheidende Rolle. Hier spielt es eine Rolle, ob der ausgewählte Kandidat bei mehreren Distributoren erhältlich ist oder sogar von mehreren Herstellern produziert wird. Wie lange sind die Lieferzeiten? Sind auch größere Stückzahlen in angemessener Zeit lieferbar? Wie viele Jahre wird der Prozessor noch gefertigt?
  6. Ist die Wahl auf einen "neuen" Controller gefallen, lohnt es sich, ein Entwicklungssystem zu kaufen, um die theoretisch ermittelten Eckpunkte auch an der realen Hardware zu testen. Gleichzeitig bekommt man ein Gefühl für die Handhabung des neuen Systems und stößt möglicherweise sogar auf ein K.O.-Kriterium. Gibt es kein Entwicklungssystem, sollte man die Wahl des Controllers ggf. überdenken.
    Bei der Gelegenheit kann auch gleich die Qualität und Bedienbarkeit von Compiler, Assembler, Debugger und anderen Tools zu testen. Gibt es eine IDE, eine integrierte Entwicklungsumgebung, oder nur einzelprogramme? Wie einfach ist das Übertragen des Programms in den Controller? Welche Programmieradapter werden benötigt? Was kosten die Softwaretools?
  7. Last but not least: Starten Sie mit einem kleinen Projekt, einem Pilotprojekt. Erst wenn das erfolgreich mit allen Schritten gelaufen ist, fällen Sie die endgültige Entscheidung. Gestalten Sie das Pilotprojekt so, dass es möglichst die kritischen Kriterien erfüllt, die Sie bei der Vorplaung aufgestellt haben.

Sinngemäß kann bei der Software ebenso verfahren werden wie bei der Hardware: Betriebssystem bzw. "Echtzeitkem" eines Betriebssystems und evtl. eine Bibliothek von Standard-Programmroutinen kaufen und die anwendungsspezifischen Programme selbst entwickeln.

Neben den Kosten sind auch noch einige weitere Punkte zu beachten:

Daraus ergeben sich wichtige Anforderungen an die beteiligten Entwicklungsingenieure:


Copyright © Hochschule München, FK 04, Prof. Jürgen Plate
Letzte Aktualisierung: