EmEEPROM causing build error: cymcuelftool.exe

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

cross mob
Anonymous
Not applicable

Hi there,

We are receiving a build error upon adding the EmEEPROM component, and think it is an issue with the linker scripts since we are only using single core (cm4 never gets enabled). However we aren't too familiar with linker scripts -- we are looking for assistance on what is meant by "you must reallocate the declaration of the '.cy_em_eeprom' section' in the PDL for EmEEPROM? Thank you.

PDL description:

"Also note that by default, the Em_EEPROM storage is fully allocated to both of the PSoC 6 cores in the ".cy_em_eeprom" section. If the Em_EEPROM is used on one of the cores, you must reallocate the declaration of the ".cy_em_eeprom" section in both linker scripts. Otherwise, while building the project the cymcuelftool will report an error because of ".cy_em_eeprom" section contents collision."

0 Likes
1 Solution
ShipingW_81
Moderator
Moderator
Moderator
500 replies posted 250 solutions authored 250 replies posted

Hi Steve,

The section '.cy_em_eeprom' allocated for two cores should have same initial values. If you use only cm0+ as well as BLE component, system will also allocate eeprom space in section '.cy_em_eeprom' to store BLE bonding list for only cm0+, which can cause mismatch between the two cores.

Given only cm0+ used, I believe you can just comment lines in cm4 linker file (.ld) to make it unaccessible to eeprom space:

em_eeprom         (rx)    : ORIGIN = 0x14000000, LENGTH = 0x8000      /*  32 KB */

or

/* Emulated EEPROM Flash area */

.cy_em_eeprom :

{

      KEEP(*(.cy_em_eeprom))

} > em_eeprom

View solution in original post

2 Replies
ShipingW_81
Moderator
Moderator
Moderator
500 replies posted 250 solutions authored 250 replies posted

Hi Steve,

The section '.cy_em_eeprom' allocated for two cores should have same initial values. If you use only cm0+ as well as BLE component, system will also allocate eeprom space in section '.cy_em_eeprom' to store BLE bonding list for only cm0+, which can cause mismatch between the two cores.

Given only cm0+ used, I believe you can just comment lines in cm4 linker file (.ld) to make it unaccessible to eeprom space:

em_eeprom         (rx)    : ORIGIN = 0x14000000, LENGTH = 0x8000      /*  32 KB */

or

/* Emulated EEPROM Flash area */

.cy_em_eeprom :

{

      KEEP(*(.cy_em_eeprom))

} > em_eeprom

Anonymous
Not applicable

Hi fwan,

Thank you for your help! That did the job, both options successfully compile the project with EmEEPROM

0 Likes