Embedded-Systeme lagen schon immer ein paar Schritte hinter der Mainstream-Computertechnik. Warum? Erstens aus Kostengründen, und vielleicht weil Embedded-Entwickler von Natur aus vorsichtiger sind und garantieren müssen, dass MCUs auch in einfachen Anwendungen sicher funktionieren. Zuverlässigkeit und Robustheit sind hier wichtiger als in anderen Bereichen und können nur mit guten Design-Praktiken und einem umfangreichen Systemwissen erreicht werden.
Während also der Rest der Halbleiterwelt sich auf neue 22-nm-Geometrien und darunter zubewegt, durchbrechen die meisten MCUs, z.B. für Kühlschränke, Waschmaschinen oder TV-Fernbedienungen, gerade die 200-nm-Barriere.
Embedded-Systeme sind da, wo Desktops vor zehn Jahren standen
Diese Art der Weiterentwicklung stellt Embedded-Systeme auf eine Stufe, bei der sich der Desktop-Markt vor mehr als einem Jahrzehnt befand: Sie werden zunehmend als Logik-Gatter eingesetzt, die im Vergleich zum Gehäuse und den Analogfunktionen immer günstiger werden. Es scheint nicht mehr übertrieben oder lächerlich zu wirken, wenn heute ein 32-Bit-Core zum Blinken einer LED eingesetzt wird.
In der Elektronikentwicklung geht es immer um ein einfaches Design. Da eine zunehmende Zahl von Anwendungen mit MCUs ausgestattet wird, die elektromechanische Systeme durch Mechatronik ersetzen, müssen sich Entwickler mit der Programmierung von Firmware für Embedded-Systeme beschäftigen. MCU-Firmware ist die Grundlage der Intelligenz, die von Embedded-Produkten erwartet wird. Da immer mehr Produkte Firmware benötigen, muss diese auch schneller entwickelt werden – gerade weil die Produkteinführungszeit der wichtigste Parameter ist, an dem heute nahezu jedes Projekt gemessen wird.
Intelligente Werkzeuge helfen bei der Software-Programmierung
Der erste und augenscheinliche Vorteil kleinerer CMOS-Prozesse ist, dass wesentlich mehr Flash-Programmspeicher für einen bestimmten Richtpreis zur Verfügung steht. Damit kann die Entwicklung schneller vonstatten gehen, da die Platzbeschränkungen weniger rigoros sind und sich der Entwickler besser auf die wesentlichen Projektziele konzentrieren kann. Für die Standardisierung der Applikationsentwicklung stehen umfangreiche Bibliotheken zur Verfügung und Rapid-Prototyping-Tools helfen bei der Code-Erstellung – automatisch auf Basis von Templates. Entscheidend dabei ist der allmähliche Übergang von Assembler zu C in den letzten zehn Jahren.
Sprache macht die Entwickler unabhängig vom Core-Design
C ist ein wichtiger Schritt hin zur Core-Unabhängigkeit. Richtig eingesetzt, macht die Programmiersprache den Applikationscode besser lesbar, wartungsfreundlicher und einfacher portierbar. Mit C lassen sich Designs von der eigenwilligen Mnemotechnik und Detailgenauigkeit proprietärer MCU-Architekturen loslösen und alle Embedded-Architekturen auf das gleiche abstrakte, Stack-basierte Modell reduzieren. Entscheidend ist, dass durch den Übergang zu C das Core-Design nicht mehr länger im Rampenlicht steht.
Natürlich ist der Core weiterhin wichtig, da er schnell und effizient sein muss. Aber er ist nicht länger ein Hindernis bei der Migration. C hat das Embedded-Design in eine Ära grösserer Core-Unabhängigkeit überführt. Die Tatsache, dass ein Design auf einer 8-, 16- oder 32-Bit-Architektur basiert, wird irrelevant, wenn ein C-Compiler per Tastendruck gestartet wird.
Schneller zum Produkt durch Trennung von Hardware- und Software-Design
Ein weiterer Vorteil der C-Programmierung ist, dass sich die Embedded-Firmware-Entwicklung nun näher am Mainstream Computing orientiert. Immer mehr Unternehmen bevorzugen es, die Hardware- von der Software-Entwicklung zu trennen. Zum Teil aufgrund der hohen Zahl an Informatikabsolventen und auch weil die Hardware- und Software-Entwicklung parallel stattfinden kann, was eine schnellere Produkteinführung am Markt ermöglicht.
Hardware-Entwickler müssen weiterhin hoch qualifiziert sein und Software-Entwickler müssen sich Erfahrung im Embedded-Design aneignen oder das resultierende System wird zwar elegant, aber ineffizient. Effiziente Systeme verwenden mehrere Ebenen von Software-Bibliotheken, um komplexe Funktionen, wie z.B. die Datenanbindung (USB, TCP/IP usw.) und Dateisystem-Support unabhängig vom Core anzubieten.
Echtzeit-Betriebssysteme (RTOS) sorgen dafür, dass das Design nicht ein Gewirr aus ereignisgesteuerten Abläufen wird. Die beliebtesten Echtzeit-Betriebssysteme stehen für zahlreiche Architekturen zur Verfügung, entlasten den Entwickler von Core-Details und bieten einen sauberen Migrationspfad. Am Ende treffen alle diese Software-Ebenen auf die Hardware. Hier kommt es auf die Breite und Tiefe der Herstellerplattform an. Die Plattform muss die grösstmögliche Anzahl an Optionen bereitstellen, um dem Entwicklungsteam eine komplette Matrix an Peripherie, Speicher und passenden Gehäusen zu bieten.
Den Core von der Last befreien
Es scheint, dass die Marketing-Abteilungen der meisten MCU-Hersteller darauf ausgerichtet sind, die Rohperformance in MIPS (Millions of Instructions per Second) zu vermitteln, entgegen der Tatsache, dass der MIPS-Nennwert einer MCU in Bezug auf die echte Leistungsfähigkeit der Applikation wenig aussagt. Ein Beispiel: Software-Emulationstechniken, die oft als «Bit Banging» bezeichnet werden, kommen in Embedded-Systemen häufig zum Einsatz – allerdings auf Kosten der Leistungsfähigkeit. Andererseits kann die richtige Peripherie für eine erhebliche Reduzierung des Performance-Bedarfs (MIPS) in einem Projekt sorgen. Ist die richtige Logik am richtigen Platz und werden die richtigen Peripherieblöcke und deren Verbindungen so konfiguriert, dass sie ideal zur Applikation passen, kann der Prozessor in den Standby- oder einen Stromspar-Modus versetzt werden, was den MIPS-Bedarf der Anwendung auf nahezu Null absenkt.
Kontinuierliche Innovation, zusätzlich zur Perfektionierung der Peripherieblöcke, kann einen grösseren Unterschied machen als die Wahl des Cores. Moderne 8-Bit-Architekturen bieten zum Beispiel konfigurierbare Logikblöcke und feine Granularität in der Peripherie-Architektur, zusammen mit hoher interner Datenanbindung. Damit können sie problemlos mit dem schnellsten 32-Bit-Prozessor mithalten, der über weniger flexible Peripherie verfügt.
Den richtigen Mikrocontroller wählen ist wie ein Auto kaufen
In vielerlei Hinsicht gleicht die Wahl einer MCU einem Autokauf: die Entscheidung wird durch den persönlichen Geschmack vorgegeben, muss aber in Bezug auf den speziellen Einsatz des Fahrzeugs vernünftig durchdacht sein. Für regelmässige Fernreisen spielen die Geschwindigkeit, der Komfort und die Leistung eine wichtige Rolle und ein grosses Auto mit Turbo-Dieselmotor wäre wohl die beste Wahl. Für den Stadtverkehr über kurze Distanzen und für das Parken auf kleinem Raum wäre eher ein kompaktes Auto angebracht, am besten mit einem Hybrid- oder Elektromotor.
Verschiedene Motoren bieten unterschiedliche Leistungen und Kraftstoffverbräuche, genauso wie verschiedene Cores in einer MCU-Plattform unterschiedliche Rechenleistung, Benutzerfreundlichkeit und einen unterschiedlichen Stromverbrauch für verschiedene Anwendungen aufweisen. Interessanterweise hat trotz der heute grossen Marken- und Modellauswahl bei den Fahrzeugherstellern noch keiner behauptet, dass ein einziger Motor für alle Kunden zufriedenstellend wäre.
Drittanbieter sorgen für Produktvielfalt
Die Analogie zu Autos kann auch auf das After-Sales-Netzwerk oder Support-Ecosystem angewendet werden. Bei MCUs sind dies alle Produkte von Drittanbietern. In einem bestimmten Ecosystem gibt es z.B. eine grosse Auswahl konkurrierender Entwicklungs-Tools wie IDEs, Compiler, Bibliotheken und Debugger. Jeder Drittanbieter arbeitet jedoch hart daran, dass sein Tool-Paket nicht so einfach austauschbar ist. Jeder strebt danach, eine umfassende Lösung zu bieten – unabhängig von der Core-Gemeinsamkeit konkurrierender Drittanbieter.
Jeder Drittanbieter bietet zusätzlich auch Hardware-Tools, die speziell für einen bestimmten MCU-Hersteller ausgelegt sind. Warum? Diese Tools sind durch die Peripherie und Anschlussoptionen der MCU festgelegt. Tatsache ist, dass es bis heute keine zwei 32-Bit-Prozessoren im gleichen Gehäuse und mit kompatiblem Pin-out gibt – obwohl sie den exakt gleichen Core enthalten.
Entscheidungskriterien für die Auswahl eines Prozessors
Die Core-Gemeinsamkeit ist in aller Munde, aber die Wahl einer bestimmten MCU erfolgt immer noch über Core-unabhängige Faktoren:
- Pin-out-Kompatibilität und die Universalität der Entwicklungstools
- Flexibilität, um auf die grösste Auswahl von Peripherie, Speichergrösse und Gehäuse zugreifen zu können
- die Innovationskraft der Hersteller und deren Engagement, die Produktfähigkeiten zu erweitern
Keiner dieser Faktoren hängt direkt von der Wahl eines bestimmten Cores ab, noch profitieren sie von einer engeren Auswahl an Cores. Wenn überhaupt, fordern Effizienz und Innovation die grösstmögliche Auswahl in einem dynamischen Markt, in dem ständig neue Ideen und Alternativen erforscht und den Embedded-Entwicklern zur Verfügung gestellt werden.
Infoservice
Microchip Technology Inc.
Karlsruher Strasse 91, DE-75179 Pforzheim
Tel. 0049 7231 424 750, Fax 0049 7231 424 7599 www.microchipdirect.com