Code Generation confused

Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
User7902
Level 2
Level 2
Hello,

my Dave3 Project refuses to link. Source of the error is USBBL001_Conf.c:


/*******************************************************************************
** DAVE App Name : USBBL001 App Version: 1.0.12
** This file is generated by DAVE, User modification to this file will be **
** overwritten at the next code generation. **
*******************************************************************************/

/*CODE_BLOCK_BEGIN[ADC002.c]*/

/*******************************************************************************
Copyright (c) 2014, Infineon Technologies AG **
All rights reserved. **
**
Redistribution and use in source and binary forms, with or without **
modification,are permitted provided that the following conditions are met: **
**
*Redistributions of source code must retain the above copyright notice, **
this list of conditions and the following disclaimer. **
*Redistributions in binary form must reproduce the above copyright notice, **
this list of conditions and the following disclaimer in the documentation **
and/or other materials provided with the distribution. **
*Neither the name of the copyright holders nor the names of its contributors **
may be used to endorse or promote products derived from this software without**
specific prior written permission. **
**
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" **
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE **
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE **
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE **
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR **
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF **
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS **
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN **
CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) **
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE **
POSSIBILITY OF SUCH DAMAGE. **
**
To improve the quality of the software, users are encouraged to share **
modifications, enhancements or bug fixes with Infineon Technologies AG **
dave@infineon.com). **
**
********************************************************************************
** **
** **
** PLATFORM : Infineon XMC4000/XMC1000 Series **
** **
** COMPILER : Compiler Independent **
** **
** AUTHOR : SSAM **
** **
** MAY BE CHANGED BY USER [yes/no]: Yes **
** **
** MODIFICATION DATE : Jan 31, 2014 **
** **
*******************************************************************************/

/**
* @file ADC002.c
*
* @brief This file contains ADC002 App API definitions
*
* Change History:
* Date version Details
* 12-Dec-2012 1.0.6 Initial code added for XMC1000
* 30-Jan-2013 1.0.8 App version changed
* 24-Apr-2013 1.0.12 Ported to XMC4500 step AB
* Source Result selection Feature added
* 10-Jun-2013 1.0.14 1. Integer Parameter updated in manifest to support
* PMSMFOCSL01 app.
* 2. In the Header comment section device name changed
* to XMC1000
* 3. Source Result register selection feature disabled
* due to header file update not available.
* 27-Jun-2013 1.0.16 Source Result register selection feature removed to
* simplify the app.
* 10-Sep-2013 1.0.18 1. Arbitration slot enable(ASEN) code is moved to the
* end of ADC002_lInit function.
* 2. Added support for the following devices under
* XMC1200 and XMC1300 Series XMC1201, XMC1202, XMC1301.
* 27-Sep-2013 1.0.20 ADC002_InitializeQueue api issue - the queue is not
* created if interrupt is enabled is fixed.
* 31-Oct-2013 1.0.22 '10 bit Fast compare mode' is made invisible in GUI
* for standard conversion mode.
* 30-Jan-2014 1.0.26 1. Error codes are added in various functions, that
* can be logged with DBG002 App.
* 2. Bugfix for incorrect interrupt-clear in
* ADC002_InitializeQueue API
*/
/**
* @cond INTERNAL_DOCS
*/

... and so on, the whole code for ADC002.

Does the code generator cache the app code somewhere?
Is it possible to reset the code generator, delete caching directories or so?
0 Likes
8 Replies
Not applicable
Hi Daniel,

I was wondering where comes USBBL001_Conf.c since there is no GUI available in USBBL001[1.012]?

BR,
Zain
0 Likes
Not applicable
Hi DrNOP,

Which link error message do you get ?

Best regards
Aaron
0 Likes
User7902
Level 2
Level 2
Hello Zain,

yes, i wonder too.
I found "usbld001_confc_template.java" in the Cache/src/ folder, which contains only 35 lines of Java code - nothing with ADC002.
Maybe there was something wrong in the Cache or Model directory - don't know. The project is under SVN control - but i don't think, that should be a problem, since i'm deleting missing files and adding every new one at commit time.

Now -- i created a copy of the project, deleted and reinserted USBBL001 in the original project. After solving and generating code it seemed to work for USBBL001.
In the project copy i deleted some other apps which where meant to be placeholders (for pin assignment). Then i tried to reinsert USBBL001. That failed (HW resources not shareable constraint), because i replaced SYSTM001 with SYSTM002 in the meantime.
I switched back to the original project, solved, code generated and recompiled it. Now there's DSDIF001 code in my USBBL001_Conf.c. This is weird.

@Aaron:
The linker complains about duplicate symbol definitions in ADC002.c and USBBL001_conf.c. Obviously - because the code has been generated twice.

Best regards,
Daniel
0 Likes
User7902
Level 2
Level 2
The code:


/*******************************************************************************
** DAVE App Name : USBBL001 App Version: 1.0.12
** This file is generated by DAVE, User modification to this file will be **
** overwritten at the next code generation. **
*******************************************************************************/


/*CODE_BLOCK_BEGIN[DSDIF003_Conf.c]*/

/*******************************************************************************
Copyright (c) 2011, Infineon Technologies AG **
All rights reserved. **
**
Redistribution and use in source and binary forms, with or without **
modification,are permitted provided that the following conditions are met: **
**
*Redistributions of source code must retain the above copyright notice, **
this list of conditions and the following disclaimer. **
*Redistributions in binary form must reproduce the above copyright notice, **
this list of conditions and the following disclaimer in the documentation **
and/or other materials provided with the distribution. **
*Neither the name of the copyright holders nor the names of its contributors **
may be used to endorse or promote products derived from this software without**
specific prior written permission. **
**
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" **
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE **
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE **
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE **
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR **
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF **
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS **
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN **
CONTRACT, STRICT LIABILITY,OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) **
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE **
POSSIBILITY OF SUCH DAMAGE. **
**
To improve the quality of the software, users are encouraged to share **
modifications, enhancements or bug fixes with Infineon Technologies AG **
dave@infineon.com). **
**
********************************************************************************
** **
** **
** PLATFORM : Infineon XMC4000 Series **
** **
** COMPILER : Compiler Independent **
** **
** AUTHOR : App Developer **
** **
** MAY BE CHANGED BY USER [yes/no]: Yes **
** **
** MODIFICATION DATE : Oct 10, 2013 **
** **
*******************************************************************************/

/*******************************************************************************
** Revision History **
********************************************************************************
** 12 Nov 2012 V1.0.0 KP Initial version **
** 30 May 2013 V1.0.1 SS Updated for XMC4400 controller family CLock **
gating **
** 10 Oct 2013 V1.0.2 SS Bugfix for External clock selection defect **
*******************************************************************************/

/*******************************************************************************
** Author(s) Identity **
********************************************************************************
** **
** Initials Name **
** ---------------------------------------------------------------------------**
** SS Sridhar Sampath **
** KP Kapil **
*******************************************************************************/


/**
* @file DSDIF003_Conf.c
* App Version DSDIF003 <1.0.6>
* @brief This file has the App instance configurations

*
*/
#include




DSDIF003_DynamicDataType DSDIF003_Dynamicdata0;

const DSDIF003_HandleType DSDIF003_Handle0 =
{
.DSDKernelNum = 1U,
.DSDKernelRegPtr = DSD_CH1,
.ModuleClockDivider = -1U,
.Strobe = (uint8_t)DSDIF003_ALTERNATE_FALLING_EDGE,
.InputDataInverted = -1U,
.StartAfterInit = -1U,
//.DecimationFilterType = (uint8_t)COMBF,
.DecimationFactor = -2U,
.DecimationStartVal = -2U,
.ResultOffset = -1,
.MainFilterInterruptMode = (uint8_t)DSDIF003_MF_ALWAYS,
.FastFilterEnabled = -1U,
//.FastFilterType = (uint8_t)COMBF,
.FastFilterDecimationFactor = -2U,
.FastFilterUlimit = -1,
.FastFilterLlimit = -1,
.FastFilterIntEnable = -1U,
.FastFilterInterruptMode = (uint8_t)DSDIF003_FF_OUTSIDE_BOUNDARY,
.IntTriggerMode = (uint8_t)DSDIF003_INTEGRATOR_CONTINUOUSLY,
.TSTriggerMode = (uint8_t)DSDIF003_TIMESTAMP_BOTH_EDGES,
.IntWindowSize = -2U,
.IntWindowStart = -1U,
.IntNumCycles = -2U,
.FFEventCoupled = -1U,
.StartChannel = -1U,
.StartMask = -1U,
.IntegratorStopMode = -1U,
.DynamicData = &DSDIF003_Dynamicdata0,
};



DSDIF003_DynamicDataType DSDIF003_Dynamicdata1;

const DSDIF003_HandleType DSDIF003_Handle1 =
{
.DSDKernelNum = 0U,
.DSDKernelRegPtr = DSD_CH0,
.ModuleClockDivider = -1U,
.Strobe = (uint8_t)DSDIF003_ALTERNATE_FALLING_EDGE,
.InputDataInverted = -1U,
.StartAfterInit = -1U,
//.DecimationFilterType = (uint8_t)COMBF,
.DecimationFactor = -2U,
.DecimationStartVal = -2U,
.ResultOffset = -1,
.MainFilterInterruptMode = (uint8_t)DSDIF003_MF_ALWAYS,
.FastFilterEnabled = -1U,
//.FastFilterType = (uint8_t)COMBF,
.FastFilterDecimationFactor = -2U,
.FastFilterUlimit = -1,
.FastFilterLlimit = -1,
.FastFilterIntEnable = -1U,
.FastFilterInterruptMode = (uint8_t)DSDIF003_FF_OUTSIDE_BOUNDARY,
.IntTriggerMode = (uint8_t)DSDIF003_INTEGRATOR_CONTINUOUSLY,
.TSTriggerMode = (uint8_t)DSDIF003_TIMESTAMP_BOTH_EDGES,
.IntWindowSize = -2U,
.IntWindowStart = -1U,
.IntNumCycles = -2U,
.FFEventCoupled = -1U,
.StartChannel = -1U,
.StartMask = -1U,
.IntegratorStopMode = -1U,
.DynamicData = &DSDIF003_Dynamicdata1,
};



/*CODE_BLOCK_END*/


Linker message:
...
Dave/Generated/src/DSDIF003/DSDIF003_Conf.o:(.rodata+0x0): multiple definition of `DSDIF003_Handle0'
Dave/Generated/src/USBBL001/USBBL001_Conf.o:(.rodata+0x0): first defined here
Dave/Generated/src/DSDIF003/DSDIF003_Conf.o:(.rodata+0x2c): multiple definition of `DSDIF003_Handle1'
Dave/Generated/src/USBBL001/USBBL001_Conf.o:(.rodata+0x2c): first defined here
...


Regards,
Daniel
0 Likes
Not applicable
Hi Daniel,

To clarify:
1) Is the project originally built in DAVE 3.1.6/3.1.8?
2) Did you use DAVE Project Import function to import the project into DAVE 3.1.10?
3) Did you do Apps Migration after importing to DAVE 3.1.10?

Best regards,
Sophia
0 Likes
User7902
Level 2
Level 2
Hello Sophia,

i think i rebuilt the app structure from scratch in Dave 3.1.10 after deleting all apps. So the project file may be an artifact from Dave 3.1.8, which i migrated to 3.1.10. There are two Migration reports in that directory, so i assumedly did not create a new project directory after migration. :confused:
After building up the new structure i used to copy the project (ctrl-c/ctrl-v in the project tree), to have checkpoints. The actual project is a result of 4 copy-paste actions.
I also put it under version control by TortoiseSVN.

Maybe i should build it up a third time - now from scratch. It's very annoying, because many pins have to be mapped manually. A kind of import function for the Pins and the App Structure (including Signals) would be really great.

Regards,
Daniel
0 Likes
User7902
Level 2
Level 2
Hello Sophia,

i just made a new Workspace,created a new Dave Project and rebuilt 90% of the project app structure. I didn't make any manual Pin Assignments. Solved and Generated Code. No own source code - only automatically generated code.
Now, when building the project, two errors appear, one for SPI001_WriteData and one for SPI001_ReadData.

The Message List contains:
Description Resource Path Location Type
conflicting types for 'SPI001_ReadData' SPI001.c /HAL_test/Dave/Generated/src/SPI001 line 786 C/C++ Problem

SPI001.c contains:
/* This function reads out  the content of the USIC receive FIFO Buffer. 
* Returns true in case FIFO is not empty.else otherwise.
*
*/
bool SPI001_ReadData(const SPI001_HandleType* Handle, uint16_t* DataPtr)
{
bool Result = (bool)FALSE;
USIC_CH_TypeDef* USICRegs = Handle->USICRegs;
/* <<>>*/
if(USIC_ubIsRxFIFOempty(USICRegs))
{
Result = (bool)FALSE;
}
else
{
*DataPtr = (uint16_t)USICRegs->OUTR;
Result = (bool)TRUE;
}

return Result;
}

previously declared in SPI001.h, which contains:
bool SPI001_ReadData(const SPI001_HandleType* Handle,uint16_t* DataPtr);


ok, now removing eth004 from the project makes it compile...
!?
Seems like "bool" gets redefined somewhere in the ethernet code.

Regards,
Daniel
0 Likes
Not applicable
Hi Daniel,

With reference to the building error "conflicting types for 'SPI001_ReadData'", the similar issue has been address in eTicket 131766738.
Quick fix is available:
1) Include "stdbool.h" in types.h located under ..\inc\LIBS folder (eg. (C:\DAVE3_Workspace\ws3.1.10\xmc4500_ac\Dave\Generated\inc\LIBS)
2) Remove the following codes from types.h
#if (!defined(__cplusplus) && !defined(_STDBOOL_H))
typedef unsigned char bool;
#endif


As for the DAVE project originally built in DAVE 3.1.6/3.1.8, pls use DAVE Import Function to move the project to DAVE 3.1.10 then do Apps Migration 1st before continue the project.

Best regards,
Sophia
0 Likes