DAvE (Infineon)

DAVE (Infineon) Digital Application Virtual Engineer (DAVE), a C/C++-language software 
development and code generation tool for microcontroller applications. DAvE is a standalone system with automatic code generation modules and is suited to develop software drivers for Infineon microcontrollers and aids the developer with automatically created C-level templates and user desired functionalities.
Latest releases of DAVE include all required parts to develop code, compile and debug on the target for free (based on the ARM gcc toolsuite). Together with several low-cost development boards one can get involved in microcontroller design very easy. This makes Infineon micocontroller products also more usable to small companies and to home-use / DIY projects - similar to established products of Atmel (AVR, SAM) and Microchip (PIC, PIC32) to name a few.
DAVE was developed by Infineon Technologies. Therefore, the automatic code generator supports only Infineon microcontrollers. The user also has to get used to the concept of the Eclipse IDE. The generated code can be also used on other (often non-free) development environments from Keil, Tasking and so on.
Latest version 4 (beta) for ARM-based 32-bit Infineon processors.
The successor of the Eclipse-based development environment for C/C++ and/or GUI-based development using "Apps". It generates code for the latest XMC1xxx and XMC4xxx microcontrollers using Cortex-M processors. The code generation part is significantly improved. Beside the free DAVE development software, a DAVE SDK is a free development environment to set up own "Apps" for DAVE. Details (downloads, getting started, tutorials etc.) can be found on the website.
After starting DAVE, an Eclipse environment appears. In the project browser, a standard C/C++ or a DAVE project can be set up by selecting one of the available processors of Infineon. The latter project setup allows configuration of the selected MCU using a GUI-based approach. This simplifies the setup of complex peripherals significantly. It also ensures that related peripherals (e.g. PLL configuration for peripheral clock on the one hand and the peripheral itself on the other hand) are configured consistently. In simplest cases, the user ends up in coding callback functions to certain peripheral events and a main loop. Pre-configured project templates allows to successfully set up first programs easily.
Stable version 3 for ARM-based 32-bit Infineon processors.
Automatic code generation is based on use case-oriented, configurable and tested SW components, DAVE Apps. They are comparable to executable and configurable application notes that can be downloaded form the web just like apps for smart phones or tablet PCs. This environment is based on Eclipse, beside the "App approach" ordinary program development using C/C++ is available as well. Targets are XMC1xxx and XMC4xxx microcontrollers using ARM Cortex-M processors.
Previous (older) versions.
This version targets 32-bit MCUs (TriCore AUDO family), 16-bit MCUs (C166, XC166, XE166, and XC2000 family) and 8-bit MCUs (XC800 family) from Infineon. After the initial setup the configuration wizard appears and gives an overview over the hardware peripherals, control units, and modules. Here, the actual microcontroller application can be created by selecting the desired functionality. At this step, module specific functions have to be selected for module initialization and control. Finally, the application source files will be generated by DAvE and embedded in a project for the selected development environment, where one can continue to modify the code or add it to an existing project.
The installation of DAvE and DIP-files is unproblematic, with only a few clicks after downloading the application from Infineon’s web page. One can start working with DAvE and already generate example code without reading a manual, as the steps for doing so are pretty much self-explanatory when following the application wizard. Furthermore, Infineon provides many application notes and tutorials on how to use DAvE in combination with different microcontrollers and development environments.
A user interface allows to familiarize oneself with the basic functionality of DAvE in a significantly small amount of time. Once the user has learned the main steps of creating an embedded application with DAvE the application development can be performed very fast. By providing a graphical user interface and a wizard it is easy to memorize the steps, even when the user returns to the tool after a period of not using it. In general, in embedded application development it is easy to make mistakes by creating conflicting configurations, e.g., assigning one I/O pin to multiple modules or select not supported baud rate for communication or wrong operating frequency. When using DAvE these conflicts are being resolved by reducing the configuration choices automatically. In addition to that, in order to being able to use the source code generated by DAvE and to create a meaningful embedded application, it is crucial to understand the functionality of the generated C-functions and the targeted hardware. DAvE’s interactive user interface provides a fail-safe way to select desired features before beginning to program an application. Configuration windows allow the designer to select and configure a specific product and then automatically generate code for that product, including its core, peripherals, memory, appropriate driver functions, and interrupts. As changes are made in configuration options, all resulting changes in code are dynamically updated and displayed in all applicable open configuration windows. In addition, the program automatically creates detailed documentation for each configuration, with complete explanations of function calls, macros, parameters, and return values. It also features a built-in register viewer that displays all registers and enables the user to easily track changes up to bit configurations. To add user specific functionality to the automatically generated code DAvE offers designated user code areas (marked by //USER CODE BEGIN and //USER CODE END comment section), where application specific code can be entered using any editor. This ensures that these parts won’t be overwritten when applying further changes to the microcontroller configurations through DAvE later.
DAvE is meant to be a one-stop access point to all standard knowledge associated with 
Infineon’s embedded technology expertise, by offering a context sensitive access to user’s manuals, data sheets, application notes, etc. directly from the development environment. It also provides an environment to build AddIns. To build an AddIn for DAvE, the DAvE Template Generator creates a template for an AddIn and has the capability to add sample code of your choice. Furthermore, there is a detailed documentation with a sample project being installed together along with DAvE’s SDK. VB syntax is not hard to understand especially when an example project is being provided. It may take some more time to get acquainted with DAvE’s SDK than with the code generator, but it will be possible to obtain a runnable AddIn within a day.
DAvE-related software.
Besides the main development environment, DAvE, Infineon also developed additional software that can be used in conjunction with DAvE for specific microcontroller families or additional hardware: DAvE Bench for XC800 is a platform providing free development tools for Infineon's 8-bit microcontrollers family, based on the Open Source Eclipse architecture.
DAvE Drive is a GUI-based software tool that allows application developers to create 
embedded software for control of brushless synchronous three-phase motors.
Alternative software.
As mentioned, the Infineon MCUs are directly supported by several commercial products – depending on the selected MCU target. Also an embedded coder library for Matlab exists. As a free alternative to DAvE, the developer can use the Keil Microcontroller Development Kit (MDK) Version 5. Code for the XMX1000 series up to 128 kB can be developed this way without purchasing a license from Keil.