进一步调查我发现问题似乎与为 se_interface 导出的符号有关,编译到 2_Images_SBSFU_CM0PLUS 项目并导出为 .elf 和 .o 文件,因此包含在 2_Images_UserA__CM0PLUS 项目链接阶段。
在带有 WL 固件包 1.0.0 的 Windows 10 上运行
STM32CubeIDE 1.6.0。
我无法继续进行……我是否遗漏了什么?
谢谢
进一步调查后的快速更新:
寻找链接器返回的第一个问题:
c:ststm32cubeide_1.6.0stm32cubeidepluginscom.st.stm32cube.ide.mcu.externaltools.gnu-tools-for-stm32.9-2020-q2-update.win32_1.5.0.202011040924 oolsarm -none-eabiinld.exe
:../../../2_Images_SBSFU/STM32CubeIDE/CM0PLUS/Debugse_interface_app.o:在函数“SE_KMS_CloseSession”中:
(.SE_IF_Code+0xbd8): `SE_KMS_CloseSession'的多重定义;../../../2_Images_SBSFU/STM32CubeIDE/CM0PLUS/Debugse_interface_app.o:(.SE_IF_Code+0xbd8): 首先在这里定义
似乎链接器找到了两次符号 SE_KMS_CloseSession @ .SE_IF_Code+0xbd8... 但此符号在生成的 .map 文件中仅出现一次:
.SE_IF_代码 0x000000000802c000 0x0
0x000000000802c000 。= 对齐 (0x8)
*se_interface_app.o(.text .text*)
*se_interface_kms.o(.text .text*)
0x000000000802c000 。= 对齐 (0x8)
.SE_IF_Code 0x000000000802c000 0x0 ../../../2_Images_SBSFU/STM32CubeIDE/CM0PLUS/Debugse_interface_app.o
0x000000000802c000 SE_APP_GetAc
tiveFwInfo
[……]
0x000000000802cbd8 SE_KMS_CloseSession
我看到该符号已从用作链接器命令行库的 se_interface_app.o 正确导入。
所以,严格来说,在我看来,同一个符号,只从链接器中包含一次,被识别两次,但在相同的相对地址......
有什么提示吗?
谢谢你。