主题中讨论的其他器件:HALCOGEN、 DP83640
工具与软件:
我的目标是将使用 ARM FuSa 工具构建的库链接到使用 TI ARM 编译器工具构建的应用。
使用 TI ARM 工具 ti-cfg-arm_20_2_7.LTS 时、我尝试 使用 ThreadX 库(使用 ARM FuSa 工具6.16.2构建)以及一些 TI HalCoGen 代码和 C/C++应用程序代码建立的普通链接、但失败了。 这两个构建独立运行。 TI 代码在 ARM HDK 上成功运行。 但是、当我包含使用 ARM FuSa 工具构建的 ThreadX_XDER.a 库文件时、TI 链接器会抱怨并遇到错误(见下文)。 作为受限功能测试、我将在 TI 链接器上使用 flag --retain 尝试强制它保留 ThreadX_XDER.A 库中的其中一个目标文件、但收到错误:
####################################################################################################################
****构建项目 Config_01_POC 的配置调试****
"C:\\ti\\ccs1240\\ccs\\utils\\bin\\gmake"-k -j 20 all -O
生成目标:"CONFIG_01_POC.OUT"<***成功完成所有编译***>
调用:ARM 链接器
"c:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/bin/armcl 11.12"-mv7R4 --code_state=32 --float_support=VFPv3D16 -me --opt_for_speed=1 --define=XDER_COMPIER_TI_20_2_7_LTS --define=CCS --define=_AEABI_char_level=1 --define=fpu_present /ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/lib /ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include dead_func_XDER.txt -fill_value=0xfacedie --rom_model --compress_dwarf=off -o "Config_01_epc.out"./Config_01_poc_hal/source/adc.obj "./Config_01_hal_01_epc/hal_01_hal_hal/epc/hal_01".obj "./Config_hal_01_hal_hal_hal_hal_phal_01_phal/pc.obj ".obj "./pc/hal_01_hal_hal_hal_01_hal_hall/pc.obj ".obj ".obj ".obj "./f_01_01_hal_hall/f_01_hall/f_01_01_phon.obj Kip_Leitner /ti/Hercules/Cortex-R4 Kip_Leitner。
Makefile:187:目标"Config_01_poc.out"的配方失败
gmake[1]:***[Config_01_POC.Out]错误1.
Makefile:183:目标"全部"的配方失败
gmake:***[All]错误2.
****构建完成****
以下是 makefile 内容:
#所有目标
全部:$(OBJS)$(CMD_SRC)$(GEN_CMDS)
@$(make)--no-print-directory -Onone "Config_01_poc.out"
#工具调用
CONFIG_01_POC.OUT:$(OBJS)$(CMD_SRC)$(GEN_CMDS)
@echo 'building target:"$@"'
@echo '调用:ARM 链接器'
"c:/ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/bin/armcl 11.12"-mv7R4 --code_state=32 --float_support=VFPv3D16 -me --opt_for_speed=1 --define=XDER_COMPIER_TI_20_2_7_LTS --define=CCS --define=_AEABI_char_level=1 --define=fpu_present /ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/lib /ti/ccs1240/ccs/tools/compiler/ti-cgt-arm_20.2.7.LTS/include dead_func_XDER.txt --fill_value=0xfacedit --rom_model --compress_dwarf=off -o "Config_01_poc.out"$(ordered_OBJS)
@echo 'finished building target:"$@"
@回波''
##################################################################################################
绝对清楚的是,在 ARM FuSa 下构建 ThreadX(英语:ThreadX)(英语:ThreadX))效果很好。 HALCoGen 代码+我用 C 和 C++编写的应用程序代码的构建过程很顺利--并且执行得很好。 但是、当我尝试将 ThreadX 库链接到我的20.2.7_LTS 构建时、编译失败了。 添加的所有内容如下行:
-l"C:/Users/Studio/Development Kip_Leitner Workspace/ThreadX_XDER/Debug/ThreadX_XDER.a.
此外、为了使用 WSL 比较 ABI 标签、我使用 Linux readelf 转储(a) ThreadX_XDER.A 库和(b)使用 TI 工具构建的最终*。out 文件(无需尝试链接 库)上的 ELF 信息。 以下是标签差异(左侧是 ARM FuSa 编译器、右侧是 TI 20.2.7_LTS)。 不知道如何使所有的 Tags 相同,但似乎两个编译器都配置为产生兼容的二进制输出。
我不确定可能出了什么问题。 您能帮忙吗? 我已经在这方面工作了三天。