19.06.2014 Aufrufe

Automatische Codegenerierung: Mythos und Realität

Automatische Codegenerierung: Mythos und Realität

Automatische Codegenerierung: Mythos und Realität

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

Die <strong>Codegenerierung</strong>s-Technologie von<br />

The MathWorks bietet dem Anwender<br />

vielerlei Möglichkeiten, Einfluss auf den<br />

automatisch generierten Code zu nehmen.<br />

So ist es beispielsweise möglich,<br />

bereits vorhandene Bibliotheken anstelle<br />

des automatisch generierten Standard-<br />

Codes einzubinden <strong>und</strong>/oder eigene<br />

Hilfsprogramme per „Hook-In“ in den<br />

Prozess der <strong>Codegenerierung</strong> einzubringen.<br />

Auch die angeführte mangelnde<br />

Einflussnahmemöglichkeit auf das Packaging<br />

<strong>und</strong> das Layout des Codes ist nicht<br />

richtig. Simulink <strong>und</strong> der Real-Time<br />

Workshop Embedded Coder bieten umfangreiche<br />

Möglichkeiten, beides zu beeinflussen.<br />

So kann beispielsweise der Code für den in<br />

Abbildung 1 gezeigten PD-Regler ganz einfach<br />

mithilfe des in Abbildung 2 dargestellten Dialogs<br />

als Funktion generiert werden. Außerdem<br />

kann auch die Anforderung hinsichtlich eines<br />

bestimmten Dateilayouts durch die Verwendung<br />

frei gestaltbarer Vorlagen (Templates) für<br />

den Code <strong>und</strong> die Daten erfüllt werden (vgl.<br />

Abbildung 3).<br />

degenerierung um r<strong>und</strong> 30 Prozent über der<br />

Produktivität bei einer Programmierung von<br />

Hand liegt. Diese Tatsache wiegt die Kosten für<br />

den Codegenerator mehr als auf <strong>und</strong> spricht<br />

vom Standpunkt des Return-on-Investment aus<br />

gesehen für die automatische <strong>Codegenerierung</strong>.<br />

<strong>Mythos</strong>: Leistung<br />

Abb. 2:<br />

Code-Platzierungs-Dialog<br />

Die automatische <strong>Codegenerierung</strong> für das<br />

Rapid Prototyping kann dem Target-Prozessor<br />

insbesondere im Hinblick auf die Speichernutzung<br />

mehr Ressourcen abverlangen, als zur<br />

Implementierung des nackten (Regelungs-)<br />

Algorithmus nötig wäre. Dies trifft jedoch immer<br />

zu, egal, ob der Code per Hand oder automatisch<br />

geschrieben wurde. Das liegt vor allem<br />

an dem beim funktionalen Rapid Prototyping<br />

hohen Entwicklungskomfort wie Parameter-<br />

Tuning <strong>und</strong> Signal-Monitoring „on-the-fly“<br />

<strong>und</strong> der ausschließlichen Verwendung von<br />

Gleitkomma-Datentypen. Geht man jedoch<br />

vom funktionalen Rapid Prototyping zur<br />

Produktion über, ist die freie Einstellbarkeit<br />

jedes einzelnen Parameters nicht gewünscht.<br />

Außerdem müssen die Algorithmen (zumindest<br />

für Massengüter) in Festkomma-Arithmetik<br />

implementiert werden. In Verbindung mit den<br />

mächtigen, vom Codegenerator angebotenen<br />

Optimierungs-Techniken ist der automatisch erzeugte<br />

Code der manuellen Programmierung in<br />

Bezug auf Laufzeitleistung <strong>und</strong> Speicherbedarf<br />

durchaus ebenbürtig. Aktuelle<br />

Arbeiten unabhängiger Anwender<br />

belegen dies [3], [4].<br />

<strong>Mythos</strong>: mangelnde<br />

Einflussnahme-möglichkeit<br />

<strong>Mythos</strong>: mangelnde Integrationsmöglichkeit<br />

Wenn nur ein Teil des Programmcodes eines Projektes<br />

automatisch erzeugt werden soll, ist eine<br />

anwenderfre<strong>und</strong>liche Schnittstelle zwischen<br />

den automatisch <strong>und</strong> den manuell erzeugten<br />

Teilen des Codes von allergrößter Wichtigkeit.<br />

Diese Forderung wird von den so genannten<br />

Entry Points <strong>und</strong> der Datenschnittstelle erfüllt.<br />

Der Real-Time Workshop Embedded Coder erzeugt<br />

drei Entry-Points: Eine Initialisierungs-<br />

Funktion („Initialize“), eine Schritt-Funktion<br />

<strong>und</strong> eine Beendigungs-Funktion („Terminate“).<br />

Die Datenschnittstelle kann praktisch jede<br />

mögliche Anforderung des Anwenders erfüllen.<br />

Er hat die volle Kontrolle über die Benennung<br />

sämtlicher Variablen auf der Eingangs- <strong>und</strong><br />

Ausgangsseite einer automatisch erzeugten<br />

Anwendung. Außerdem können vordefinierte<br />

oder vom Anwender selbst erzeugte Custom<br />

Storage Classes verwendet werden, um auf<br />

nicht standardgemäße Art <strong>und</strong> Weise auf Daten<br />

zuzugreifen.<br />

<strong>Mythos</strong>: Ressourcen-Hunger<br />

In der Anfangszeit der automatischen <strong>Codegenerierung</strong><br />

traf es durchaus zu, dass dieses<br />

Verfahren überwiegend für große Prozessoren<br />

mit hoher Leistung <strong>und</strong> großem Speicher geeignet<br />

war. Mittlerweile hat die automatische <strong>Codegenerierung</strong><br />

aber ein Reifestadium erreicht, in<br />

dem sie sogar für 8-Bit Mikroprozessoren anwendbar<br />

ist.<br />

<strong>Mythos</strong>: begrenzte<br />

Einsatzmöglichkeit<br />

Dass die automatische <strong>Codegenerierung</strong> nur<br />

auf sehr wenige Mikrocontroller anwendbar<br />

ist, ist schlicht <strong>und</strong> einfach falsch! Auch wenn<br />

bestimmte Mikrocontroller durch Erweiterungspakete<br />

zum Codegenerator („Embedded<br />

Targets“) explizit unterstützt werden, so gilt<br />

jedoch generell: <strong>Automatische</strong> <strong>Codegenerierung</strong><br />

ist für jeden Mikrocontroller möglich, für den<br />

auch manuell Code in C geschrieben werden<br />

kann. Auch die Annahme, dass die modellbasierte<br />

Entwicklung sich nur für zeitkontinuierli-

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!