Reduce SW Development Time with DAVE 3 March, 2012
Why DAVE 3? XMC 4500 Offering Powerful, SWconfigurable peripherals Flexible interconnections and pin mapping options Pressure to Engineer Short time to market Tough to get familiar with all the HW details Solution DAVE 3 Page 2
The DAVE 3 Solution What is DAVE 3? DAVE 3 is a free toolset for automatic code generation with Plug in / Interface options for commercial solutions What is DAVE 3 good for? DAVE 3 significantly shortens time and effort for SW development for XMC 4500 Series Page 3
With DAVE 3 we are Merging the Functionalities of earlier DAVE Tools into one Tool Free tool chain Low level code generation High level Application code generation Page 4
DAVE 3 is a Free Toolset for Automatic Code Generation LLD Middle ware RTOS. Any free or commercial solutions from third parties SW Components: DAVE Apps DAVE 3 IDE Code Engine DAVE Apps Manager GNU Compiler Debugger 3 rd party 3 rd party 3 rd party Automatic code generation based on predefined and tested SW components (DAVE Apps) Configuration via graphical user interface Generated code can be used via well documented APIs (like a library) Option for third parties to plug in other commercial or free tools Page 5
Concept of DAVE Apps Component based programming Is a well know methodology to develop SW by re-using existing and tested SW components with a defined programming interface (API) Application Notes Reference Code to handle specific uses cases Apps Applications for a specific use case for a smart phone or a tablet computer Can be easily downloaded from the web DAVE Apps are flexible use case oriented SW components to generate code That can be downloaded from the web That could be a complete embedded solution/ application That could be used to compose (model) an embedded solution/ application Page 6
Component Based Programming with DAVE Apps User selects and adds a DAVE App to his project Configuration via a graphical UI API to use the generated code HW Signals (virtual) to connect to other DAVE Apps e.g. PWM App Selection can be done via categories: Application use cases Supported peripherals and keyword filter Configuration options Init parameters Functionality. User code call functions.. { PWM_start( ); Set_duty( ); Set_frequency( ); } Example for Signals: Timer overflow Compare match PWM output To be connect to other Apps to Trigger an ADC Crete a output signal A DAVE App is well defined and tested SW component that can be used to build an embedded application on an high, easy to understand abstraction level Page 7
Composition of DAVE Apps: Virtual Signal connection The user or a another App may request the connection of two signals PWM App Timer overflow Compare match ADC start ADC App Apps can be freely composed by the user Interrupt Request Interrupt App Page 8
PWM Example -1- Graphical UI to define the initial PWM functionality Selecting the DAVE App Selected DAVE App Additional required DAVE Apps will be automatically included Page 9
PWM Example -2- Resource Solving and Code Generation Signal Connection Pin Constraints DAVE 3 includes a resource solver that automatically assigns the chip resources considering the available chip resources and connectivity constraints Page 10
PWM Example -3- Generated Code API to control the PWM signal Page 11
Instances of DAVE Apps Normally a individual DAVE App can be instantiated several times (limitation is essentially the available HW) User want to use a similar functionality on different HW resources : e.g. CAN App Some DAVE Apps can only be instantiated once (singletons) Those App are normally limited to a resource that is only available once E.g. Clock-App Page 12
Object Orientation of DAVE Apps The generated code for a DAVE App is independent of the instance of the App Each Instance of a DAVE App has a dedicated data structure Independent of number instance there are two c modules created for each App <appname>.c contains the API <appname>conf.c contains the data structure for each instance When using the API in the user code the address to the data structure (handle) has to be but in the parameter list Example: status_t = CNT001_GetEvtCountValue(&CNT001_Handle0, &variable_for_countvalue); Page 13
How to get DAVE Apps / Selection of DAVE Apps App Lib1 App Lib3 DAVE Apps will be made available as library of DAVE Apps from the web or any other media http://dave.infineon.com/libraries/daveapps/xmc4500/v3.0 Local App store C:\Users\yourname\Infineon\LibraryStore The user can search for DAVE Apps (library of DAVE Apps) from the DAVE 3 platform and can download them to his local drive The user can select the DAVE Apps from his local DAVE App store and add them to his project Searching and selection is support by categories and key word filters Version management is supported Page 14
Overview of Planned DAVE Apps Service Apps DMA NVIC I/O EBU Flash CRC Debug Log CMSIS RTOS Peripherals Specific Apps Basic Applications Timer CAN USIC (I2S, I2C, UART, SPI) Simple ADC Complex ADC Delta Sigma demodulator DAC Resolver PWM Capture Counter POSIF ETH Touch Middle Ware USB stack, class drivers TCP/IP stack plus HTTP, FTP, SNMP SD/MMC, file system, GUI lib plus driver for intel. LCD FOC motor control Touch / HMI Modbus. Complete Solutions Web server Motor control HMI Demos.. Page 15
Architecture of the Code Generation Functionality (DAVE Apps, Device Description, Code Engine) Code Engine (Mother System) Is the device independent interface to the user to manage all activities Developed as plug in for an Eclipse platform: Tasks Web Interface to find, download and select Apps Generate UI to configure, connect and compose Apps Project mgmt to add Apps based views to the SW project Resource management to solve resource requests from Apps with the target MCU modeled in the DAVE Expert Device description Data consistency management Code generation DAVE Apps Use case oriented SW components A DAVE Expert App consist of Manifest Required resources (URI) Provided resources (to other apps or GUI) GUI definition based on predefined widgets Code templates Documentation To develop DAVE embedded Apps a dedicated SDK (SW development kit will be provided) DAVE Device Description Resource and connection model of the target MCU Content SFRs and SFRs bit fields in resource groups Interconnections (signals) and respective constraints Uniform Resource Identifier (URI) of mapable resource groups Provided Resources App Use Case Required Resources For GUI or other Apps As URI or alias URI As alias URI to HW or to other Apps Page 16
Device Description and DAVE Apps How to get the device description of specific device? Devices are loaded like DAVE Apps-Lib (entire devices) from the web http://dave.infineon.com/libraries/daveapps/xmc4500/v3.0/ Relation of device description and DAVE App A device description represents a defined SW ID Different devices can have the same SW ID as long as they are SW compatible A DAVE App can be assigned to several SW IDs In DAVE3 In the current implementation there is an implicit filter that only the Apps can be selected that are valid for the SW ID of the chosen device Page 17