DAvE (Infineon)
DAVE (Infineon) Digital Application Virtual Engineer (DAVE) is a C/C++-language software development and code generation tool for microcontroller applications. DAVE is a standalone system with automatic code generation modules. It is suited for the development of software drivers for Infineon microcontrollers and aids the developer with automatically created C-level templates and user-desired functionalities. The latest releases of DAVE include all required parts to develop code, compile and debug on the target for free (based on the ARM GCC tool suite). Together with several low-cost development boards, one can get involved in microcontroller design very easily. This makes Infineon microcontroller products also more useful to small companies and to home-use or DIY projects, similar to the 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. Besides the free DAVE development software, a DAVE SDK is a free development environment to set up its 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 the 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 a peripheral clock on the one hand and the peripheral itself on the other hand) are configured consistently. In simplest cases, the user ends up coding callback functions to certain peripheral events and the main loop. Pre-configured project templates allow you to successfully set up first programs easily. Stable version 3 for ARM-based 32-bit Infineon processors  
Automatic code generation is based on the use of case-oriented, configurable, and tested software (SW) components, called DAVE Apps. They are comparable to executable and configurable application notes that can be downloaded from the web, just like apps for smartphones or tablet PCs. This environment is based on Eclipse. Besides the "App approach," ordinary program development using C/C++ is also available. The targets for this development are XMC1xxx and XMC4xxx microcontrollers that use 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 of 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 one 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 resolved by reducing the configuration choices automatically. In addition to that, to be 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 will not 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 context-sensitive access to user 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 can add a sample code of your choice. Furthermore, there is detailed documentation with a sample project being installed together 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 the 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. References 

Programming tools
Embedded systems