Software-Entwicklung

Schneller für XMC4000 mit DAVE 3 entwickeln

9. November 2012, 16:20 Uhr | Von Georg Huba
Diesen Artikel anhören

Fortsetzung des Artikels von Teil 2

Manuelle Pin-Festlegung

Manuelle Zuordnung der Pins, damit der Ressourcen-Solver die Randbedingungen eines vorhandenen PCBs bei der Ressourcen-Zuordnung berücksichtigen kann.
Bild 5. Manuelle Zuordnung der Pins, damit der Ressourcen-Solver die Randbedingungen eines vorhandenen PCBs bei der Ressourcen-Zuordnung berücksichtigen kann.
© Infineon

Die bisherigen Einstellungen und Konfigurationen der DAVE-Apps sind nicht auf bestimmte Hardware-Ressourcen bezogen. Bisher wurde es dem Solver überlassen, die Peripherie-Ressourcen auswählen. Bei der Pin-Auswahl ist es oftmals notwendig, Vorgaben zu machen, um beispielsweise die Software auf ein vorhandenes Board zu portieren.

Dazu gibt es eine ManualPin-Assignment-Ansicht (zunächst in Tabellenform, später auch als Grafik), in der beispielsweise das PWM-Ausgangssignal und der Puls-Eingang einem bestimmten Pin zugeordnet werden sollen (Bild 5).

Um sicherzustellen, dass die gewünschten Funktionen auch auf den Chip “passen“, wird der Ressourcen-Auflöser automatisch nach bestimmten ressourcenrelevanten Transaktionen gestartet. Man kann ihn auch explizit manuell starten. Ergebnis: Die DAVE-Apps wurden automatisch den verfügbaren Chip-Ressourcen konfliktfrei und unter Berücksichtigung aller Randbedingungen zugeordnet.

Entsprechend den zugeordneten Ressourcen erfolgt danach die Codeerzeugung. Je DAVE-App werden spezifische Header-Dateien und C-Quelldateien erzeugt, welche die Initialisierungsfunktionen und die APIs für die verschiedenen Funktionsaufrufe beinhalten.

Obgleich es bei dem erzeugten Code um C-Code handelt, folgt die Codeerzeugung Vorgaben der objektorientierten Programmierung. Der erzeugte Code ist unabhängig von der Anzahl der DAVE-App-Instanzen; je Instanz wird eine Datenstruktur erzeugt, in der die jeweilige Konfiguration sowie Ressourcen-Informationen gespeichert sind. Im Grunde sind die DAVE-Apps Klassen, die beim Zufügen zu einem Projekt als deren jeweiliges Objekt instanziiert werden.

Benutzung der API im User-Code

Nach diesen ersten fünf Schritten sind alle Hardware-relevanten Aufgaben der Software-Entwicklung erledigt und man kann sich voll und ganz auf das abstrakte Programmieren konzentrieren. In unserem Fall ist es lediglich notwendig, zwei Interrupt-Handler-Funktionen zu definieren:

  • Eine Funktion, die von der PWM-Period-Match getriggert wird, die im Wesentlichen das Update des Tastverhältnisses durchführt und nach Erreichen von 90 % die Zähler-App-Instanz 0 startet.
  • Eine Funktion, die vom Count-Event-Match der Zähler-App Instanz 1 getriggert wird und die im Wesentlichen eine neue Sequenz vorbereitet.

passend zum Thema

Mit wenigen Funktionsaufrufen kann dieses Beispiel programmiert werden; die von DAVE bereitgestellten Funktionen starten jeweils mit dem Namen der DAVE-App, gefolgt von einer funktionalen Beschreibung. Das erste Argument ist immer der Zeiger auf die
Bild 6. Mit wenigen Funktionsaufrufen kann dieses Beispiel programmiert werden; die von DAVE bereitgestellten Funktionen starten jeweils mit dem Namen der DAVE-App, gefolgt von einer funktionalen Beschreibung.
© Infineon

Bild 6 zeigt die beiden Code-Sequenzen. Die Funktionsnamen beginnen jeweils mit dem App-Namen als Präfix, gefolgt von einem funktionalen Suffix; das erste Argument der Funktionen ist fast immer ein Zeiger auf die Daten-Struktur der jeweiligen App-Instanz.

Mit dem in DAVE 3 verfügbaren kostenlosen GNU-Compiler und Tasking-Debugger kann der Code kompiliert und auf dem Zielsystem getestet werden. Das fertige Projekt kann auch aus der online verfügbaren DAVE-Projektbibliothek geladen werden; das Schlüsselwort lautet „Elektronik-17“.

Obgleich es sich hier um ein sehr einfaches Beispiel handelt, zeigt sich doch das Einsparpotenzial, welches in DAVE 3 steckt. Auch ein erfahrener Software-Entwickler würde für diese Aufgabe ohne DAVE 3 ein Mehrfaches der Zeit benötigen. Wenn die Anforderungen nun erweitert oder geändert werden, kann man auf das existierende Projekt einfach aufsetzen und weitere benötigte DAVE-Apps instanziieren.

Die heute vorhandene DAVE-Apps-Bibliothek beinhaltet bereits eine Vielzahl von DAVE-Apps, welche einen breiten Anwendungsbereich abdecken und die ständig kontinuierlich erweitert werden. Die Tabelle zeigt eine Übersicht über die aktuell bzw. kurzfristig verfügbaren DAVE-Apps. Das Einzigartige an DAVE 3 und am Konzept der DAVE-Apps ist die Flexibilität, mit der die gewünschte Funktionalität durch die Komposition verschiedener DAVE-Apps und entsprechender HW-Signal-Verbindung zusammengebaut werden kann.

Basis-Apps Middleware Spezifische Applikationen
Service-Apps
Timer CMSIS RTOS Feldorientierte Motorsteuerung DMA
CAN USB-Stack, Class-Driver Stromrichter Interrupt
I2S, I2C, UART, SPI TCP/IP-Stack plus HTTP, FTP, SNMP Touch/HMI I/O
Einfacher A/D-Wandler Dateisystem Modbus CRC
Komplexer A/D-Wandler GUI-Bibliothek Licht-Steuerung AES-Verschlüsselung
Delta-Sigma-Demodulator     DebugLog
D/A-Wandler      
Resolver      
PWM      
Capture      
Zähler      
Position-Schnittstelle      
Ethernet/PHY      
USB      
Touch      
Flash-Speicher      

Überblick über die verfügbaren DAVE-Apps. Ein großer Block sind die Low-Level-Peripherie-Funktionen. Es steht aber auch ein komplettes Set von Middleware-Applikationen wie CMSIS-RTOS, Dateisystem, Grafik-Bibliothek, USB und TCP/IP zur Verfügung.


Es ermöglicht die volle und umfangreiche komponentenbasierte Nutzung der Hardware, ohne dass man sich im Detail in das Hardware-Referenzhandbuch vertiefen muss. Das Konzept unterstützt auch die Einbindung existierender Software-Module oder kommerzielle Software-Lösungen von Drittanbietern. Dabei geht es im Wesentlichen darum, dass die benötigten Hardware-Ressourcen diese Software-Module vom Ressourcen-Auflöser nicht für andere Zwecke verwendet werden.

Dies geschieht durch die künftige Möglichkeit, dass Hardware-Ressourcen reserviert werden oder aber, dass solche Komponenten durch eine dedizierte DAVE-App unterstützt werden wie zum Beispiel die Konfiguration (über erzeugte Header-Files) und die flexible Ressourcenzuordnung.

Dieser Ansatz wird auch dadurch gefördert, dass in Zukunft ein umfangreiches DAVE-App-Devlopment-Kit kostenlos zur Verfügung gestellt wird. Vielen Software-Entwicklern, die bereits lange mit einer existierenden Tool-Chain arbeiten, ist nun nicht wohl beim Gedanken, auf etwas Neues umsteigen zu müssen, wenn sie die Vorteile von DAVE 3 nutzen wollen.

Auch hier zeigt sich DAVE 3 flexibel: DAVE 3 ist zwar eine komplette Entwicklungsplattform, man kann sich aber auf die Funktion der komponentenbasierten Codeerzeugung beschränken und den Code in anderen Tool-Chains importieren. Manche Tool-Anbieter arbeiten sogar daran, nur das DAVE-3-Plug-in zur Codeerzeugung in deren eigene Eclipse-basierte Tool-Chain zu integrieren.

Aktuell werden von DAVE 3 die Bausteine der XMC4500-Serie unterstützt. Alle relevanten DAVE-Apps werden zur Zeit zügig auf die XMC4400-, XMC4200- und XMC4100-Serie portiert. Die Anzahl der verfügbaren DAVE-Apps wird kontinuierlich weiter zunehmen. Mehr Komponenten bedeuten mehr Optionen, Ihre Anforderungen zu lösen.


  1. Schneller für XMC4000 mit DAVE 3 entwickeln
  2. Wie funktioniert das nun in der Praxis?
  3. Manuelle Pin-Festlegung
  4. Literatur

Lesen Sie mehr zum Thema


Das könnte Sie auch interessieren

Jetzt kostenfreie Newsletter bestellen!

Weitere Artikel zu Infineon Technologies AG