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.

[参考译文] TMS570LC4357:使用 TI ARM Clang 编译器

Guru**** 2124260 points
Other Parts Discussed in Thread: TMS570LC4357, HALCOGEN
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1070681/tms570lc4357-use-of-ti-arm-clang-compiler

部件号:TMS570LC4357
“线程: HALCOGEN测试”中讨论的其它部件

我的问题是 TMS570LC4357 MCU 是否与使用 TI Arm Clang 编译器兼容,我们希望使用该编译器与 GCC 工具兼容。

我成功地创建了一个 Hello World 计划,该计划基于以下论坛帖子 进行编译和链接:https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/998144/ti-arm-clang-compiler-tools-user-s-guide-v1-3-description-of-run-time-library-selection-seems-incorrect

但是,程序在目标上执行不正确。 程序似乎从不进入主程序,而是在_c_int00期间中止

有人能提供一个简单的 hello 世界示例程序,使用 TI Arm Clang Compiler 为 TMS570LC4357 MCU 进行编译,链接和执行,或者告诉我 Clang 编译器是否还不受此主板支持?

请提前感谢

e2e.ti.com/.../TMS570LC4357_5F00_TI_5F00_CLANG_5F00_hello.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="501156" url="~/support/微控制器/arm-based 微控制器-组/基于 ARM 的微控制器/f/arm-based 微控制器- forum/1070681/tms570lc4357-use-di-arm-clang-compiler"]如果没有支持 TI 的 Clang 编译器,有人能提供一个简单的 Clang 示例程序,链接 TMS570lcu,或者使用 TI 的 Clang Clang 编译器,或者 Clang clang-compiler[引用本编译器]

    ART-CGT:从 ART-CGT 到 ART-CGT-clang-X。 HALCOGen 不支持 TI Arm Clang 编译器。

    https://github.com/Chester-Gillon/E2E_example_projects/tree/master/TMS570LC4357_TI_compilers_halcogen 是一个我确实让 TI Arm Clang 编译器与 HALCoGen 配合使用的项目示例。  CCS 项目中的 Debug_TI_clang 生成配置使用 TI Arm Clang 编译器。

    [引用 userid="501156" url="~ë/support/icls/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forume/1070681/tms570lc4357-use-di-arm-clang-compiler)]但是,程序在目标上执行不正确。 程序似乎从不进入主菜单,而是在_c_int00期间中止

    从内存中看,程序在创建时确实起作用,但我目前没有硬件来测试它。

    您使用的 CCS 是哪个版本?

    可能相关的原因是 ,对于 CCS 11.0和 CCS 11.1中固定的大型 endian 设备,程序未正确加载到正确的加载地址

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    主席先生,你好,谢谢你的快速答复。 我使用的是 CCS 11.0版,但我可以确认该二进制文件已正确加载到目标上,因为初始 PC 指向_c_int00地址。

    但是,HALCOGen 没有得到官方支持这一事实让我认为,在为 Hercules 提供官方支持之前,我们不想走 TI Arm Clang 的路线。 预计哈洛科代官方对提尔克朗的支持将在什么时候出现?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="501156" url="~ë/support/icls/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1070681/tms570lc4357-use-di-arm-clang-compiler/3962662#3962662]Harmang 预计官方支持时间线[时,HarmGen]

    我不是 TI 员工,因此无法对此发表评论。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    切斯特,您好,谢谢您的帮助。 我将继续努力,将此问题标记为已解决,因为您已回答了我的基本问题,即对 Hercules MCU 上的 TI Clang 编译器的官方支持程度。

    感谢您的支持。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢切斯特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="501156" url="~ë/support/icls/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forume/1070681/tms570lc4357-use-di-arm-clang-compiler)]但是,程序在目标上执行不正确。 程序似乎从不进入主菜单,而是在_c_int00期间中止

    我已经回去调查了。  TMS570LC4357_TI_clang_hello 示例最初是使用 CCS 10.3和 TI Clang v.1.3.0-beta-1开发的。

    我已经参加了同一个项目,更改为 TI Clang v1.3.LTS 编译器,并在不同的 CCS 版本下进行了测试:

    对于 CCS 10.3,该示例可以正确运行。

    对于 CCS 10.4,11.0或11.1,此示例无法正确运行。 在尝试执行第一个指令时获得 UNDEF 异常。

    该问题似乎是由可执行文件中的不正确无误引起的。

    使用 CCS 10.3构建并工作时,入口点的以下“分解”视图:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    _c_int00():
    0003f89c: EE110F50 mrc p15, #0, r0, c1, c0, #2
    0003f8a0: E3A0360F mov r3, #0xf00000
    0003f8a4: E1800003 orr r0, r0, r3
    0003f8a8: EE010F50 mcr p15, #0, r0, c1, c0, #2
    0003f8ac: E3A00101 mov r0, #0x40000000
    0003f8b0: EEE80A10 vmsr fpexc, r0
    0003f8b4: E10F0000 mrs r0, apsr
    0003f8b8: E3C0001F bic r0, r0, #0x1f
    0003f8bc: E3800010 orr r0, r0, #0x10
    0003f8c0: E129F000 msr cpsr_fc, r0
    0003f8c4: E59FD020 ldr r13, [pc, #0x20]
    0003f8c8: EBFF65DF bl __mpu_init
    0003f8cc: EBFF4BFD bl _system_pre_init
    0003f8d0: E3500000 cmp r0, #0
    0003f8d4: 0A000000 beq #0x3f8dc
    0003f8d8: EBFFFE9B bl __TI_auto_init_nobinit_nopinit
    0003f8dc: EB0004E3 bl _args_main
    0003f8e0: E3A00001 mov r0, #1
    0003f8e4: EBFFFFD7 bl exit
    0003f8e8: EAFFFFFE b #0x3f8e8
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    以下是使用 CCS 11.1构建的入口点的“分解”视图,在第一个指令中会出现 UNDEF 异常:

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    _c_int00():
    0003f89c: 500F11EE andpl r1, pc, r14, ror #3
    0003f8a0: 0F36A0E3 svceq #0x36a0e3
    0003f8a4: 030080E1 movweq r8, #0xe1
    0003f8a8: 500F01EE andpl r0, pc, r14, ror #3
    0003f8ac: 0101A0E3 smlatteq r1, r3, r0, r10
    0003f8b0: 100AE8EE andne r14, r10, r14, ror #17
    0003f8b4: 00000FE1 andeq r0, r0, r1, ror #31
    0003f8b8: 1F00C0E3 svcne #0xc0e3
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    请注意,32位指令十六进制值是在工作程序和非工作程序之间的 endian 交换。

    使用 CCS 10.3构建的项目运行正常,CCS 生成的 makefile 将 -be32选项传递给链接器。 而当使用 CCS 10.4,11.0或11构建同一个项目时 ,--be32选项会传递给链接程序。

    在使用相同的.project,.cproject 和.ccsproject 文件时,CCS 版本如何解释设备的不可用性存在一些奇怪的地方。

    在 CCS 10.3中,设备无内核报告为 BE32:

    由于 CCS 11.1中的项目相同,因此“设备无功能”被报告为“大:

    这似乎是一个 CCS 问题,可能是设备文件的问题。 将尝试调查。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="91588" url="~/support/icls/arm-based 微处理器组/基于 ARM 的微控制器/f/arm-based 微控制器-forum/1070681/tms570lc4357-use-of -ti-arm-clang-compiler/3964869#3964869]CCS 文件,这可能是 CCS 文件的问题。 将尝试调查。

    它似乎不在设备文件中,而是在其他文件中。  在 CCS 11.1中,使用 TI Clang 编译器的 TMS570LC4357项目不再支持正确的 be32设备 endiess,这一项目已在 CCS 论坛上提出。