How to use PDL 3.0.4 instead of older PDL 3.0.x version in PSoC Creator?

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

cross mob
Anonymous
Not applicable

Hi there,

Is there a way to confirm that PDL 3.0.4 is being used instead of an older version? Whenever right clicking a component (i.e. Bluetooth) and opening the PDL Documentation, we encounter this description which specifies the PDL 3.0.1 is being used.

pastedImage_0.png

Best,

Steve

1 Solution
shRe_2888731
Level 3
Level 3
5 likes given First like received First like given

If you go to Tools -> Options , under Project Management you will see the PDL v3 (PSoC 6 devices) location. You can then browse for the PDL location of your choice. Also if you do this, make sure, at Project->Build Settings.. under "Peripheral Driver Library" select Default option. You can also choose custom and then browse the location of PDL.

View solution in original post

10 Replies
shRe_2888731
Level 3
Level 3
5 likes given First like received First like given

If you go to Tools -> Options , under Project Management you will see the PDL v3 (PSoC 6 devices) location. You can then browse for the PDL location of your choice. Also if you do this, make sure, at Project->Build Settings.. under "Peripheral Driver Library" select Default option. You can also choose custom and then browse the location of PDL.

MeenakshiR_71
Employee
Employee
100 likes received 50 likes received 25 likes received

Steve,

After following shams_2888731​ suggestion, please check "Help > Documentation >Peripheral Driver Library" and you should see the version of PDL linked to the project as shown below -

pastedImage_0.png

Regards,

Meenakshi Sundaram R

Anonymous
Not applicable

Hi msur,

We've been able to confirm that we're using the updated PDL with the image you attached.

But we've run into an error on project build:

C:\Users\Steve\Desktop\PSoC\Design0594.cydsn\CortexM0p\ARM_GCC_541\Debug\Design0594.elf: Merge error: Section 0x14000000 at C:\Users\Steve\Desktop\PSoC\Design0594.cydsn\CortexM0p\ARM_GCC_541\Debug\Design0594.elf overlaps section 0x14000000 from C:\Users\Steve\Desktop\PSoC\Design0594.cydsn\CortexM4\ARM_GCC_541\Debug\Design0594_signed.elf,

but it contains different data

The command 'C:\Program Files (x86)\Cypress\PDL\3.0.4\tools\win\elf\cymcuelftool.exe' failed with exit code '1'.

We have also tried cleaning and rebuilding the project but run into the same error. It seems that the old and new PDL files are overlapping. What do you recommend to be the safest way to fix the error without corrupting other files?

Best,

Steve

0 Likes
Anonymous
Not applicable

Hi Meenakshi,

After some trial and error we noticed that the merge error occurs when including both Bluetooth and EEPROM into the same project. The error doesn't occur when including either component in isolation. Is there some overlap occurring in Flash for Bluetooth and EEPROM?

Best,

Steve

0 Likes

Steve,

Are you using the EEPROM component in one core and the BLE host in another core? If yes, then that might result in overlapping data. The reason is the code for M0+ and M4 are compiled separately and any code placed in the section ".cy_em_eeprom" will try to get placed from the start in each core - resulting in overlap if both core place some stuff in the ".cy_em_eeprom" section.

Now to overcome this, you will need to split the EEPROM between the cores - whatever proportion you want.  Based on the compiler you are using, change the linker script (*.ld files for GCC) "em_eeprom" ORIGIN and LENGTH values and make sure they dont overlap for the cores i.e. edit the file for both the cores.

An example -

In cy8c6xx7_cm0plus.ld:

em_eeprom     (rx) ORIGIN = 0x14000000, LENGTH = 0x4000 /*  16 KB */

In cy8c6xx7_cm4.ld:

em_eeprom     (rx) ORIGIN = 0x14004000, LENGTH = 0x4000 /*  16 KB */

Let me know if this helps.

Regards,

Meenakshi Sundaram R

0 Likes
Anonymous
Not applicable

Hi Meenakshi,

Thank you for the prompt reply, but we are only using one core - both the host and controller are on M0+ core.

Best,

Steve

0 Likes

Can you post the project? Is your Emulated EEPROM component used in M4? If yes, then that is the problem and making the change which I suggested should fix the issue.

0 Likes
lock attach
Attachments are accessible only for community members.
Anonymous
Not applicable

Meenakshi,

We've attached the project that we are currently testing. The attached project compiles with the mentioned error, but when either disabling Bluetooth or EEPROM component the project compiles.

Best,

Steve

0 Likes

Looks like our EEPROM component is getting compiled for both cores and placing the eeprom data for both cores. I will investigate a bit more on the behavior.

For now, you can change the cy8c6xx7_cm4_dual.ld:

em_eeprom     (rx) ORIGIN = 0x14007E00, LENGTH = 0x200 /*  512 B */

It worked for me. Let me know if it helps your code or not.

Regards,

Meenakshi Sundaram R

0 Likes
Anonymous
Not applicable

Meenakshi,

That did the job. Thank you!

Looking forward to hear back on the strange behavior.

Best,

Steve

0 Likes