Die Entwicklungsumgebung DAVE 3 (Digital Application Virtual Engineer) ist eine Eclipse-basierende Plattform mit C-Code-Generator, kostenlosem GCC-Compiler und Debugger. Über eine komponentenbasierte Programmierung mit einer grafischen Oberfläche ähnlich zu Matlab können Signalleitungen mittels grafischer Programmierung verbunden werden; die entsprechende Peripherie wird dann automatisch konfiguriert. Über Plug-ins können auch Tools anderer Hersteller wie z.B. der ARM-Compiler aus dem Hause Keil eingebunden werden.
Der Vorteil gegenüber reinen Code-Beispielen, wie sie andere Hersteller liefern, besteht darin, dass sich mit DAVE auch die Kombination von mehreren Low-Level-Treibern einfach gestaltet – was sich von der Zusammenführung mehrerer isolierter Code-Beispiele ja nicht immer sagen lässt. Das Konzept erlaubt auch die Entwicklung von DAVE-Apps auf verschiedenen Layern. Somit können generische Low-Level-Treiber (z.B. PWM-Funktion) mit applikationsspezifischer Software (z.B. Motorsteuerung) über API-Schnittstellen verbunden werden.
DAVE enthält weiterhin Funktionen für Workspace- und Projektmanagement und ist ein offenes System, in das sich weitere Tools wie Lader, Monitor oder DOXYGEN (ein von Dimitri van Heesch entwickeltes Software-Dokumentationswerkzeug, das als freie Software unter der GNU General Public License zur Verfügung steht) einbinden lassen.
Ein Highlight von DAVE, mit dessen Hilfe sich die Entwicklungszeiten signifikant verkürzen lassen, ist der automatische C-Code-Generator, mit dem man nicht nur Peripherie und Systemeinheit initialisieren, sondern auch Low-Level-Treiber, Steuerungs-Software und sogar komplette Anwendungen erstellen kann.
Innovative Peripherie im Cortex-M0-Universum
Allen Unterfamilien gemeinsam sind zwei On-Chip-Oszillatoren mit 64 MHz (DC01) bzw. 32 kHz (DC02) und ein Oszillator-Watchdog, der die Frequenzen der Oszillatoren überwacht und damit die Anforderungen gemäß IEC 60335 (Klasse B) erfüllt. Mit seiner Hilfe kann beim Ausfall der Taktversorgung eine Notfall-Routine angesprungen werden, die das System in einen sicheren Zustand herunterfährt. Während der Core über einen Frequenzteiler /8192 bis /2 von DC01 mit 125 kHz bis 32 MHz getaktet wird, können Peripherielelemente wie CCU4, CCU8, BCCU (Helligkeits- und Farbsteuerung für LEDs) oder der mathematische Coprozessor von 125 kHz bis zu vollen 64 MHz getaktet werden. Lediglich die Echtzeituhr und der Watchdog-Timer werden über den Oszillator DC02, der als Backup für DC01 wirkt, falls dieser einmal versagen sollte, versorgt.
Ebenfalls implementiert ist Clock-Gating für einzelne Peripherieelemente (Bild 2), um die Leistungsaufnahme zu reduzieren, wenn Peripherie-Blöcke gerade nicht benötigt werden.
Interessant ist die Möglichkeit, die Frequenz von DC01 in Abhängigkeit von der Die-Temperatur über Software anzupassen. Dabei wird ein Offset auf Basis von zwei im Flash-Konfigurationssektor hinterlegten Werten und einer ebenso dort gespeicherten Formel berechnet, der dem Original-Frequenzwert hinzugeschlagen wird.