Enable_cpu_cm_001_workaround

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

cross mob
Not applicable
I find this macro ENABLE_CPU_CM_001_WORKAROUND in startup_XMC4500.S. Howerver, I could findout where the macro is defined. Is this macro defined for xmc4500 step ac chip?
0 Likes
7 Replies
User10215
Level 4
Level 4
First like received
Hi shenj,

as far as I remember that define is used when you have a XMC4500 with AA or AB step. With the define there is some additional code added in front of interrupts in order to work around the errata "PMU_CM.001".
When you use DAVE you can search for "Project->Properties->C/C++ Build->Settings->ARM-GCC C compiler->Preprocessor" and put the define into the "Defined symbols (-D)"-list.
You can find the errata-sheets here if you are curious about that particular errata:
http://www.infineon.com/cms/de/product/microcontroller/32-bit-industrial-microcontroller-based-on-ar...

Regards,
Niclas
0 Likes
User10215
Level 4
Level 4
First like received
Well, just saw that what I just wrote is partly wrong. That define is used as workaround for the errata "CPU_CM.001" which is in all steps of the XMC4500.

Regards,
Niclas
0 Likes
Not applicable
HI,

Thanks, Niclas.

The label in the XMC4500.s is incorrect. The workaround is actually for "PMU_CM.001.Branch from non-cacheable to cacheable address space instruction may corrupt the program execution"
This bug regarding the CPU is solved in XMC4500 AC step. Also in XMC4400 AB and XMC4200 AB.

We will update the comment and it will be in the July release.


Regards,
Daryl
0 Likes
Not applicable
0 Likes
Not applicable
I am confused. For XMC4500-AB and AC, should I use ENABLE_CPU_CM_001_WORKAROUND or another MACRO (if the naming is not proper) at that same place?
0 Likes
Not applicable
HI,

For XMC4500-AC step devices, this bug is fixed. This workaround is not needed.
For XMC4400-AB and XMC4200-AB devices, this bug is also fixed.

However, the bug is still present in XMC4500-AA and XMC4500-AB step devices. The label for the macro is incorrect.
This bug is "PMU_CM.001: Branch from non-cacheable to cacheable address space instruction may corrupt the program execution". It is not CPU_CM.001.
Since the label is incorrect, we will correct it in the upcoming July DAVE update.

However, if you would like to use the workaround till the upcoming DAVE July update, you can enable this workaround, use the macro "ENABLE_CPU_CM_001_WORKAROUND"

Hope this clears things up.

Regards,
Daryl
0 Likes
Not applicable
Thanks, it makes things clear. I am doing a project in eclipse, which has problem that the program runs fine but does get started again ( the beginning part of my software runs to some point and then starts from the very beginning gain to the same point and repeats it again ). I think _Veneer version in the c startup code. Is there is a c startup code example?

Update: it was this flag. Now the project can be built correctly in eclipse.
0 Likes