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.
工具/软件:TI C/C++编译器
您好!
使用适用于 TDA2xx 上 A15的 Linaro 工具。
我希望您能帮助您了解 Linaro 工具文件夹树、特别是如何选择合适的 FPU 库。
在版本4_9_2015q3上、有几个包含 FPU 库的 FPU 文件夹(即一个在 gcc 文件夹下、一个在 lib 下、 在某些架构文件夹下)-对于所有这些文件夹的存在原因以及如何知道哪一个是正确的选择(如果需要选择的话-是否可以根据其他配置在内部定义它?)、这是非常令人困惑的。
除了较新的 Linaro 工具版本之外、gcc 文件夹下的 FPU 不再存在、并且通常文件夹树会发生更改、因此这会增加对如何正确地知道应使用什么以及如何使用的混淆。
另一个问题是,我已经尝试安装新的 CCS 9,在 CCS 8上有 CG_GCC_SEART_PATH 的自动变量定义,但在新的 CCS 9上,这不再存在。 您能解释一下区别吗?
谢谢
家伙
[引用 user="Guy Mardiks">除了更新的 Linaro 工具版本、 gcc 文件夹下的 FPU 不再存在、并且通常文件夹树已发生更改、因此这会增加对如何正确了解应使用什么以及如何使用的混淆。 GCC multilib 用于选择要链接的库、 基于命令行参数。 在 CCS 安装的不同 GCC ARM 版本上使用-print-multi-lib 选项会显示以下内容:
~/ti/ccs830/ccsv8/tools/compiler/gcc-arm-none-eabi-4_9-2015q3/bin/arm-none-eabi-gcc -print-multi-lib 。 ;thumb;@mthumb FPU;@mfloat-abi= hard armv6-m;@mthumb@March = armv6s-m armv7-m;@msp=armv7-mspu armv7e-mspumb@armv7e-mfpu ;@msp=armv7msps armv7msp/mspumb@armv7mfpf-mfpu@armbotip-msp=armv-msp=armv7-msps armv7empf-mfpu;armv7msp=armv7msp=msp/mspumb@armv-mspumpf-mspumb@armv7mspumb@armv-msp/mspumb@armv7empf-mfpf-mfpf-mfpu@@@@@@@@@@@armbotip-msp=armv7empf-msp=armv7empf-msp=armv7empf-msp=armv @@@@@@@@@@@@@@@@@@@@
~/ti/ccs830/ccsv8/tools/compiler/gcc-arm-none-eabi-6-2017-q1-update/bin/arm-none-eabi-gcc -print-multi-lib ; thumb;@mthumb hard;@mfloat-abi=hard thum/v6-m;@mthum=armv6s-m thumb/v7-m;@msp=armv7-msp/mspumb@msp/v7e-msp=armv7msp/msp=msp/msp/mspumb @msp=msp/msp/msp/mfthumb@@ @@ @@ @@ @@@@ @@@@msp/msp=msp/msp/msp=msp-msp-msp=msp=msp/v7msp=msp/msp/msp=msp/msp-msp=msp/msp/msp/msp/msp/msp/msp/mspumb v7msp=msp=msp=msp/msp/msp=msp/msp/msp/msp/msp/msp/mspum=msp/fthum=msp=msp/msp=msp/ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
~/ti/ccs830/ccsv8/tools/compiler/gcc-arm-none-eabi-7-2017-q4-major/bin/arm-none-eabi-gcc -print-multi-lib ; thumb;@mthumb hard;@mfloat-abi=hard thum/v6-m;@mthum=armv6s-m thumb/v7-m;@msp=armv7-m thum/v7e-msp=armv7e/msp=msp=msp/mspumb@mv7msp/msp=msp/mspumb @ msp/mspumb@msp/v7mspumb fumb@msp=msp/msp=msp/msp/mspumb@msp-msp/v7mfumb@msp=msp/msp/msp=msp/msp/mspumb@msp-msp/msp/mspumb@msp/msp/msp/mspumb fthumb fumb@@@@@@ @@@@ @msp/v7msp/msp/msp=msp=msp/msp=msp/msp/msp=msp/msp @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
因此、虽然库的文件夹树在不同版本之间发生了变化、但工程应根据编译器选项选择适当的库、而无需将特定的编译器库目录添加到搜索路径。
例如、对于使用-marm -mfloat-abi=hard 选项的 Cortex-A15项目、则:
a:使用 v4.9.0进行编译时、链接器映射文件显示 FPU 目录中的库已链接
b.使用 v7.2.1编译时、链接器映射文件会显示已链接的硬目录中的库。
是传递给链接器的选项、用于选择运行时库链接的目录、 其中 -print-multi-lib 的输出显示了用于选择库的选项。'例如、关于 v4.9.0中的 FPU 目录-它是哪个 FPU 目录(正如我提到过的、在不同的文件夹树分支下有多个名为 FPU 的文件夹)?
使用 -mfloat-abi=hard -mfpu=none-vfpv4来针对 ARM 模式的 Cortex-A15、那么:
v4.9.0链接 gcc-arm-none-eabi-4_9-2015q3/arm-none-eabi/lib/FPU 中的库
v7.2.1链接 gcc-arm-none-eabi-7-2017-Q4-majer-Win32/arm-no-eabi/lib/hard 中的库
虽然 v4.4.3安装中有多个名为 FPU 的目录、 但 arm-none-eabi/lib/fpu 用于 ARM 模式、而在链接时选择 Thumb 模式时则使用其他目录。
查看 为经验编译的 FPU 库的 multilib March 和 mfpu 选项、这些库适用于 Cortex-M 或上一代 FPU、而不是 Cortex-A15中的 VFPv4-D32。 因此、建议将-marm 保留 为传递给链接器的选项、以选择支持-mfloat-abi=硬硬件浮点的 ARM 模式库(交互工作意味着程序可以包含 ARM 和 Thumb 模式函数的组合)。
在深入了解这一点的同时、发现 了《揭秘 ARM 浮点编译器选项 》、其中包含-mfpu 和-mfloat-abi 选项的有用概述。