工具/软件:
您好:
我希望标题能很好地匹配这个问题。
因此、我们的情况是我们使用 MCU-PLUS-SDK、我们希望覆盖一些函数、虽然这对大多数驱动器来说效果很好、覆盖一些 DPL 功能并不能按预期正常工作。 我得到了 George 的一些指导、帮助大家了解链接器的工作原理 :AM243X-AM243X:“不要剥离符号 X、因为它在重定位中命名“-基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI MCU-PLUS-SDK 支持论坛
在重新定义您自己的库中的实现时,我们还修复了链接段的问题,但您提到了两个库 — 其中包含要覆盖的函数的库以及您自己的库,其中明确提到了包含覆盖 MCU-PLUS-SDK 功能的章节 的库:SDK-AM243X:使用自己的实现功能覆盖 SDK-functions 无法正常工作 — 基于 Arm 的微控制器论坛 — 基于 Arm 的微控制器 — TI E2E 支持论坛
在上述情况中、我们确实覆盖了中止处理程序、但现在我们要覆盖一些调试功能。
到目前为止,我设法,林克没有抱怨重新定义的 smybols,所以这似乎是有效的。 此示例的文件夹结构如下: 
这些.c 文件是从 SDK 复制的并包含修改后的内容、但仍定义了将被覆盖以包含在一个编译单元中的所有函数。
修改也会影响这些部分、因为我们会将其中一些函数放在这样的特殊.text.debug-section 中(标题激活此部分,只是 VSCode 不能正确显示): 
请注意、在 SDK 中、这些函数不会放在这样的部分中!
现在、重要的部分发生了、这在链接器脚本中有点特殊。
我们将 FreeRTOS 库放置在一个部分中、该库包含要覆盖的符号: 
.text.debug-section 还位于: 
如果我现在在不做进一步修改的情况下进行编译、我们的.text.debug-section 不包含这些符号。 相反、映射文件显示包括 FreeRTOS 库中的那些:

我们的库在 FreeRTOS 库之前的链接命令中链接。 从链接命令中提取: 
一旦我从链接器脚本中删除 freeRTOS-library、它就会有效并使用我们库中的文件副本: 
但一旦我再次添加 freertos-lib、并尝试像添加其他解决方案一样添加它:

我在链接时收到此错误:
linker_r5f_mcu1_0_freertos_debug.cmd", line 63: error #10068-D: no matching section
这对我来说毫无意义、因为这个部分显然在这个库中。
它甚至会更加令人困惑、因为当我现在再次删除 freeRTOS 库时、它会再次编译、并将我们的部分放在那里、同时添加了 libti_hw_support-mcu1_0.a 的显式放置!
为什么链接器显示没有匹配的部分、而即使有一个、它也会使用它? 该消息是否只是另一个问题的指标?
我猜是因为 SDK 中的函数没有.text.debug-section-attribute、所以它们在输入部分的定义有所不同、所以链接器会以不同的方式处理它们?
我在这里做什么?
编辑:我通过删除我们的 section-attributes 进行了测试、然后可以在链接器脚本中包含这两个库。 因此、将这些函数放在 SDK 之外的单独部分中似乎是问题所在。
不幸的是,我们有一个原因,为什么这是需要的,但它是一段时间前,我会发现.
是否可以同时将 SDK 库函数放置在与 SDK 中函数不同的部分中替换这些函数?
此致、
Felix