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.

[参考译文] TMS570LS3137:Cortex R4运行时库

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1406593/tms570ls3137-cortex-r4-runtime-library

器件型号:TMS570LS3137

工具与软件:

您好!

我刚刚注意到、我的安装(v 20.2.7.LTS)中不存在 ARM 模式运行时库"rtsv7R4_A_be_v3D16_eabi.lib"。 这里只有 Thumb 模式1。

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
PS C:\ti\ccs1270\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib> ls
Directory: C:\ti\ccs1270\ccs\tools\compiler\ti-cgt-arm_20.2.7.LTS\lib
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 4/19/2024 4:41 PM src
-a---- 8/7/2022 7:42 PM 70090 libc.a
-a---- 8/7/2022 7:42 PM 2901 lnk.cmd
-a---- 8/7/2022 7:42 PM 1761708 mklib
-a---- 8/7/2022 6:33 PM 129151 mklib.c
-a---- 8/7/2022 6:33 PM 431728 mklib.exe
-a---- 8/7/2022 7:42 PM 27171858 rtsv5_A_le_eabi.lib
-a---- 8/7/2022 7:42 PM 27132908 rtsv7A8_T_le_n_v3_eabi.lib
-a---- 8/7/2022 7:42 PM 26734526 rtsv7M3_T_le_eabi.lib
-a---- 8/7/2022 7:42 PM 26739346 rtsv7M3_T_le_xo_eabi.lib
-a---- 8/7/2022 7:42 PM 26740806 rtsv7M4_T_le_eabi.lib
-a---- 8/7/2022 7:42 PM 27021634 rtsv7M4_T_le_v4SPD16_eabi.lib
-a---- 8/7/2022 7:42 PM 27047234 rtsv7M4_T_le_v4SPD16_xo_eabi.lib
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

主题为 e2e.ti.com/.../10008-d-cannot-find-file-rtsv7r4_a_be_v3d16_eabi-lib
我们看到该文件位于版本20.2.1.LTS 中。

这是由于某些安装选项造成的吗?还是库已被删除?

谢谢!

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

    您好、Varban、

    您是对的、我也可以在20.2.5 LTS 中看到它

    rtsv7R4_A_be_v3D16_eabi

    在20.2.7LTS 中没有找到

    让我与编译器团队核实、我会尽快提供更新。

    ——
    谢谢、此致、
    Jagadish。

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

    您好、Varban、

    以下是编译器团队对以下问题的反馈:

    是的、在较新的编译器版本中特意将其删除。

    编译器不再随附所有预编译的库。 它们仅随附几个常见的。 但是、RTS 的所有源代码都随编译器提供、因此如果确定它需要未预先编译的 RTS、则编译器将随后不停地构建。

    这就是您在20.2.5安装中发生的情况。 请注意、在您的屏幕截图中、库具有不同于其他库的(较新)时间戳。 因为它不像其他编译器那样进行预编译。

    编译器团队这样做是 为了减小编译器包的下载大小。

    ——
    谢谢、此致、
    Jagadish。

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

    尊敬的 Jagadish:

    好吧、但是"rtsv7R4_T_be_v3D16_eabi.lib "是一个预编译库、我们将与其进行链接。

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    Building target: "GIO.out"
    Invoking: Arm Linker
    .... "../GIO/source/sys_link.cmd" -lrtsv7R4_T_be_v3D16_eabi.lib
    <Linking>
    Finished building target: "GIO.out"
    **** Build Finished ****
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    因此、stdlib/string/stdio 函数调用最终将在 Thumb 模式而不是纯 ARM 模式下执行。

    使用 20.2.7.LTS、当我编译示例并将其反汇编时、我获得类似的内容(全部在.thumb 段中):

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    012a7e: memcpy:
    012a7e: .thumb
    012a7e: 2A00 CMP R2, #0
    012a80: D04A BEQ _ret2_ [0x12b18]
    012a82: EA5F0C00 MOVS.W R12, R0
    012a86: 078B LSLS R3, R1, #30
    012a88: D11C BNE _unaln [0x12ac4]
    012a8a: 0783 LSLS R3, R0, #30
    012a8c: D122 BNE _saln [0x12ad4]
    012a8e: _aln:
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    012bb4: .thumb
    012bb4: .text:fputc:
    012bb4: 4A21 LDR R2, $C$CON1 [0x12c3c]
    012bb6: B5F8 PUSH {R3, R4, R5, R6, R7, LR}
    012bb8: 6812 LDR R2, [R2]
    012bba: 460C MOV R4, R1
    012bbc: 4605 MOV R5, R0
    012bbe: 4790 BLX R2
    012bc0: 4620 MOV R0, R4
    012bc2: F000FA3B BL __TI_wrt_ok [0x1303c]
    012bc6: 2800 CMP R0, #0
    012bc8: 4E1D LDR R6, $C$CON2 [0x12c40]
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    Fullscreen
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    012cbe: .thumb
    012cbe: 2200 MOVS R2, #0
    012cc0: __aeabi_memset4:
    012cc0: __aeabi_memset8:
    012cc0: __aeabi_memset:
    012cc0: 4613 MOV R3, R2
    012cc2: 460A MOV R2, R1
    012cc4: 4619 MOV R1, R3
    012cc6: memset:
    012cc6: B571 PUSH {R0, R4, R5, R6, LR}
    012cc8: F0100F03 TST.W R0, #3
    012ccc: D00B BEQ _word_aligned [0x12ce6]
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    我仍然无法理解编译器团队的动机-考虑到小端字节序 RTS 存在、我不明白为什么 BE lib 也没有存在。  据我所知、我安装的 CCS 仅支持 Hercules、这是一个"硬接线"大端字节序的器件。

    但是... 没关系。 让我们以这种方式总结一下我的请求:如果我想要一个纯 ARM (无 Thumb-free)可执行文件、有没有办法实现它? 我不介意编译源代码中的所有内容、并且不与任一.libs 连接、只要这是 Hercules 工具链环境中的一种"稳定"且推荐的方法即可。

    谢谢!

    Varban

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

    您好、Varban、

    我将与我们的编译器团队专家再次讨论您的问题、并会尽快提供我的更新信息。

    ——
    谢谢、此致、
    Jagadish。

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

    有关非常类似的情况的讨论以及解决方法、请参阅 此论坛主题。

    谢谢。此致、

    -George.

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

    您好、George:

    那么... 如果我需要在 ARM 模式下使用 RTS、而不是 Thumb、那么我需要自己手动编译吗? 因为工具链的当前版本不会作为预编译的.lib 附带该工具链。

    我能正确理解您吗?

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

    最新动态:

    设置" "选项中、CCS 为我创建了_a_库。

    Fullscreen
    1
    warning #10366-D: automatic library build: using library "C:\...\lib\rtsv7R4_A_be_v3D16_eabi.lib" for the first time, so it must be built. This may take a few minutes.
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    再次感谢你,并对困惑抱歉!