This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
C2000论坛、您好!
我要将现有的 COFF 项目迁移到 EABI。 这些是我到目前为止采取的步骤:
1) 1) 在工程设置中将输出格式从"legacy COFF"切换为"eabi ELF"
2) 2)修复了链接器文件和所有直接使用的符号、如 《C2000从 COFF 迁移到 EABI》指南中所述
3) 3)将所有使用的 coff 编译库(如 IQmath)替换为 elf 编译库
问题是链接器无法解析任何 SYSBIOS 符号。 我假设我遗漏了一些内容、这些内容会告诉 TI SYSBIOS 被编译为 elf。 我收到一条警告、指出 sysbios.ae28FP 未编译为 elf。 将 SYSBIOS 编译为 elf 而不是 coff 需要做什么?
使用以下版本:
编译器-> TI v21.6.0.LTS
XDCtools -> 3.61.2.27_core
SYS/BIS -> 6.83.0.18
CCS -> 12.2.0
控制台输出:
警告#10373-D:库"C":\ \src\sysbios\sysbios.ae28fp"包含与 ELF 输出文件不兼容的 TI-COFF 目标文件。 确保使用的库正确无误。
未定义
符号
----------------
SetDBGIER
TI_SysBIOS_BIOS_getCpuFreq__E
TI_SysBIOS_BIOS_linkedWithIncorrectBootLibrary__E
TI_SysBIOS_BIOS_setCpuFreq__E
TI_SysBIOS_BIOS_setThreadType__E
TI_SysBIOS_BIOS_START_E
TI_sysbios_family_c28_hwi_instance_finaling__E
TI_SysBIOS_family_c28_hwi_instance_init__E
TI_SysBIOS_family_c28_Hwi_Module_startup__E
TI_sysbios_family_c28_Timer_instance_finaling__E
TI_SysBIOS_family_c28_Timer_instance_init__E
TI_SysBIOS_family_c28_Timer_Module_Startup__E
...
此致、
保罗
我导入了一个示例工程来处理此问题、发现当我从 COFF 切换到 EABI 时、产品设置中的目标切换到了"ti.targets"。 埃尔夫 .c28_float"。 您的设置是什么? 它是否允许您更改它?
另请注意、运行时设置中有一个自定义编译选项、允许您为 SYS/BIOS 编译指定不同的编译器选项、因此如果目标更改不起作用、您可以尝试将--abi=eabi 添加到选项列表中。
惠特尼
惠特尼、您好!
非常感谢您的答复。 我已经仔细检查了这些标志,在下拉菜单中将输出格式更改为"eabi"时,"--abi=eabi"被正确地作为编译器标志放置。 但是、在查看工程的配置文件时、我发现为 BIOS 设置了自定义 CC 选项、这些选项覆盖了全局设置。
基本上,如果有人遇到同样的问题,请检查是否有" BIOS.customCCOpts "的条目。 如果存在这样的条目,也要在该条目中添加"--abi=eabi"。
此致、
保罗