cancel
Showing results for 
Search instead for 
Did you mean: 

Trying for 2_Images_UserApp with STM32WL55 Nucleo-64 but seems I'm not able to link the User App for CM0+ core. The linker is specifying that several symbols have been already defined elsewere.

MSign.1
Associate II

Further investigating I see that the problem seems related to symbols exported for the se_interface, compiled into the 2_Images_SBSFU_CM0PLUS project and exported as .elf and .o file, thus included in the 2_Images_UserA__CM0PLUS project linking phase.

Running STM32CubeIDE 1.6.0 on Windows 10 with WL firmware pack 1.0.0.

I'm no more able to proceed... Is there something I'm missing?

Thank you

0693W000008wdl9QAA.jpg 

A quick update after further investigation:

Looking for the 1st problem returned by the linker:

c:\st\stm32cubeide_1.6.0\stm32cubeide\plugins\com.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_1.5.0.202011040924\tools\arm-none-eabi\bin\ld.exe: ../../../2_Images_SBSFU/STM32CubeIDE/CM0PLUS/Debug\se_interface_app.o: in function `SE_KMS_CloseSession':

(.SE_IF_Code+0xbd8): multiple definition of `SE_KMS_CloseSession'; ../../../2_Images_SBSFU/STM32CubeIDE/CM0PLUS/Debug\se_interface_app.o:(.SE_IF_Code+0xbd8): first defined here

Seems that the linker is finding twice the symbol SE_KMS_CloseSession @ .SE_IF_Code+0xbd8... but this symbol is present only one time in the generated .map file:

.SE_IF_Code   0x000000000802c000    0x0

        0x000000000802c000        . = ALIGN (0x8)

 *se_interface_app.o(.text .text*)

 *se_interface_kms.o(.text .text*)

        0x000000000802c000        . = ALIGN (0x8)

 .SE_IF_Code  0x000000000802c000    0x0 ../../../2_Images_SBSFU/STM32CubeIDE/CM0PLUS/Debug\se_interface_app.o

        0x000000000802c000        SE_APP_GetActiveFwInfo

[....]

        0x000000000802cbd8        SE_KMS_CloseSession

I see that the symbol has been correctly imported from the se_interface_app.o used as library in the linker command line.

So, strictly speaking, seems to me that the same symbol, included from the linker only one time, is identified twice, but at the same relative address....

Any hints on this?

Thank you.

1 ACCEPTED SOLUTION

Accepted Solutions
MSign.1
Associate II

The problem seems related to SE_*** symbols included twice by the SMT32CubeIDE 1.6.0 when opening the sample project.

I was able to compile the 2_Images_UserApp_CM0PLUS project by following the procedure mentioned here: https://community.st.com/s/question/0D53W00000cRsLASA0/the-update-to-cubeide-160-cause-a-linker-error-compiling-the-userapp

So, summarising, by changing the 2_Images_UserApp_CM0PLUS project settings by:

1) Removing the -l:se_interface_app.o from Tools Settings/Libraries/Libraries

2) Adding the same -l:se_interface_app.o in Tool Settings/Miscellaneous/Other flags

View solution in original post

1 REPLY 1
MSign.1
Associate II

The problem seems related to SE_*** symbols included twice by the SMT32CubeIDE 1.6.0 when opening the sample project.

I was able to compile the 2_Images_UserApp_CM0PLUS project by following the procedure mentioned here: https://community.st.com/s/question/0D53W00000cRsLASA0/the-update-to-cubeide-160-cause-a-linker-error-compiling-the-userapp

So, summarising, by changing the 2_Images_UserApp_CM0PLUS project settings by:

1) Removing the -l:se_interface_app.o from Tools Settings/Libraries/Libraries

2) Adding the same -l:se_interface_app.o in Tool Settings/Miscellaneous/Other flags