Was kann Dave 3? Drei Tests sollen im Folgenden klären, wie gut sich die IDE von Infineon in der Praxis schlägt. Dave steht dabei für „Digital Application Virtual Engineer“ und ist ein virtueller Assistent für den Entwickler. Eine solche Software, mit der der Entwickler auf grafischem Weg ein Quellcodegerüst inklusive der Peripherie-Initialisierung erzeugen, ersetzt die sonst übliche zeitaufwändige Datenblattrecherche. Bislang stand der Assistent lediglich separat zur Verfügung. Bei Dave 3 ist diese Funktionalität in die IDE voll integriert (Bild 1): Zur Entwicklungsplattform gehören neben dem kostenlosen Toolset mit der Eclipse-basierten Entwicklungsumgebung (IDE) auch frei verfügbare Compiler und Debugger. Außerdem hat Infineon sogenannte Apps eingeführt.

Bild 1: Mit Dave 3 kann der Anwender nicht nur eigenen Code schreiben (oben), sondern auch Apps laden, verbinden und konfigurieren (unten).

Bild 1: Mit Dave 3 kann der Anwender nicht nur eigenen Code schreiben (oben), sondern auch Apps laden, verbinden und konfigurieren (unten).Rutronik

App-Hilfe

Die Dave-3-Apps ermöglichen es, Peripherie grafisch zu initialisieren sowie Quellcode für den XMC4500 zu erzeugen, der nach dem Reset automatisch auf dem Controller abläuft. Außerdem stellen sie der eigentlichen Applikation praktische Funktionen zur Verfügung, von einer einfachen „SetPin()“- oder „ClearPin()“-Funktion bis hin zu etwas aufwändigerem Code mit „SetDutyCyle()“ für eine PWM-Einheit oder einem „SendString()“ an der USB-Schnittstelle.

Jede App ist für ein Peripheriemodul bestimmt. Daher punkten Apps vor allem bei Aufgaben, die mehrere Peripherie-Einheiten benötigen – das dürfte bei fast allen tatsächlichen Anwendungen der Fall sein. Bislang standen für die verschiedenen Schnittstellen und Peripherien lediglich Beispiele des jeweiligen Controller-Herstellers als Hilfestellung zur Verfügung. Dabei ging die Wahrscheinlichkeit, ein Beispiel zu finden, das exakt die benötigte Peripherie nutzt, gegen Null. Somit stand der Entwickler vor der Aufgabe, den Code mehrerer Beispiele zusammen zu ziehen und jede Zeile zu prüfen, ob sie für den aktuellen Kontext relevant ist. Bei Dave 3 kann sich der Entwickler die benötigten Peripherien einfach zusammenklicken. Die App erzeugt dann die zugehörige Initialisierung inklusive API für den eigenen Applikationscode. Typische Dave-3-Apps steuern zum Beispiel ein OLED-Display über SPI inklusive Segger-Grafikbibliothek oder stellen einen kompletten Webserver zur Verfügung. Weitere Apps, zum Beispiel für Motor-Control, hat Infineon bereits angekündigt.

Bild 2: Das Starterkit für den Infineon XMC4500 bringt alles Nötige mit, um die Möglichkeiten des Mikrocontrollers und der IDE Dave 3 zu erkunden. Sogar ein OLED-Display hat Infineon vorgesehen.

Bild 2: Das Starterkit für den Infineon XMC4500 bringt alles Nötige mit, um die Möglichkeiten des Mikrocontrollers und der IDE Dave 3 zu erkunden. Sogar ein OLED-Display hat Infineon vorgesehen.Infineon

Display ansteuern

Ziel des ersten Versuchs ist es, mit Hilfe des Starterkits (Bild 2) mit OLED-Display und Apps zuerst das OLED-Display anzusteuern und dann einen Sensor am I²C-Bus auszulesen und die Messwerte zu visualisieren. Hierfür muss der Anwender zuerst ein neues Projekt erstellen und die GUISL001-App hinzufügen. Dieses kleine Programm greift auf eine als SPI-Master konfigurierte USIC-Schnittstelle und einen I/O-Pin zu, um darüber mit dem OLED-Display zu kommunizieren.

Da sich im XMC4500 fast jede Pin-Funktion auf mehrere Pins legen lässt, muss man die gewünschte Pinzuordnung definieren. Dies ist jederzeit möglich, so dass sich eine spätere Layout-Änderung mit wenigen Mausklicks auch in der Software berücksichtigen lässt. Im nächsten Schritt gilt es, etwas Quellcode zu schreiben, der die Segger-Bibliothek nutzt. Daraufhin wird das Projekt kompiliert und mit dem Debugger auf das Starterkit geladen, fertig. Nur sechs Zeilen selbst geschriebener C-Code genügen, um eine Ausgabe auf das OLED zu erzeugen.

Baukastenprinzip

Statt Bibliotheken und Beispielprogramme lose zusammenzustellen, führt Infineon mit Dave 3 eigene Apps ein. Diese steuern Peripherie und lassen sich per GUI sehr einfach konfigurieren und miteinander verbinden. Wie gut das in der Praxis klappt, hat der Autor mit drei recht einfachen Tests untersucht.

Das zweite Testprogramm soll einen Dreiachsen-Beschleunigungssensor von Bosch über I²C auswerten. Hierfür existiert eine eigene I²C-App. Um den Sensor darüber korrekt auszulesen, sind zwar mehr als sechs Befehle notwendig, doch Dave 3 stellt Funktionen zur Verfügung, die dabei wertvolle Hilfestellung leisten. So lassen sich die Messwerte vom Sensor mit Hilfe der Segger-Bibliothek problemlos auf dem OLED darstellen.

USB-Kommunikation

Der dritte Versuch sollte eine Kommunikation mit dem PC aufbauen. Da das Starterkit keine RS-232-Schnittstelle besitzt, fiel die Wahl auf USB-OTG (On-the-go). Um den Controller im USB-Device-Modus zu betreiben, kann man einen virtuellen COM-Port auf dem PC öffnen. Mit diesem Setup lassen sich die ersten Kommunikationsversuche mit einem einfachen Terminalprogramm starten. Es folgen die Einbindung der Dave-App USBVC001 in das Programm und drei Anweisungen, zwei davon in einer Endlosschleife:

USBVC001_Init();
while (1) {
  USBVC001_SendString((const char *)“TEST“);
  USB_USBTask();
}

Kaum läuft das Programm, fragt der PC nach einem USB-Treiber. Das zeigt: Die erste Hürde ist genommen, USB wurde als Zielobjekt erkannt. Den notwendigen Treiber findet man in der Hilfe-Funktion der App. Wie bei allen Dave-Apps trägt diese Hilfe ihren Namen zu Recht und liefert wertvolle Hinweise. Nachdem die kurze Treiber-Installation abgeschlossen ist, erscheint in den Systemeinstellungen ein virtueller COM-Port. Er lässt sich mit einem Terminalprogramm öffnen, und schon geht eine ganze Reihe an „TEST“-Meldungen ein. Damit ist die Basis gelegt für eine komplette Applikation, die Sensordaten liest, aufbereitet und über USB an den PC sendet. Dieser kann die Daten dann weiter auswerten.

Wirklich einfach

Diese drei simplen Tests zeigen: Infineons Aussagen, mit Dave 3 die Entwicklung von Embedded-Code drastisch zu vereinfachen, ist mehr als ein Marketing-Versprechen. Dank der Apps und der GUI ist der Zugriff auf vorhandene Funktionen wesentlich leichter und flexibler als sonst üblich.