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.

[参考译文] 编译器/TMS320F28377S:未使用编译然后链接的函数!

Guru**** 2589280 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/838949/compiler-tms320f28377s-not-used-function-compiled-and-then-linked

器件型号:TMS320F28377S

工具/软件:TI C/C++编译器

你好

我正在寻找一些存储器空间、然后我看到一些存在的功能是一些未使用的 c 文件、它们会链接并在存储器映射中占用一些存储器空间。

简单示例:

文件 F2837xS_DefaultISR.c 包含映射到矢量表并进入 F2837xS_PieVect.c 的所有默认 ISR

由于所有函数都相同、并且从未使用、因为当使用中断时、会映射到其他函数、因此我决定更改默认矢量表。

示例  

CLA_underflow_ISR -> NOTUSED_ISR

(笑声)

然后、所有表都是指向 NOTUSED_ISR 或 PIE_RESERTE_ISR 的链接。

但在编译后、在 memoryAlllocation 视图中

.text:retain (F2837xS_DefaultISR.obj) 1413!!

未使用的函数(CLA_undercie_ISR...) 出现在.map 文件中:

000dcabc 全局_CANA1_ISR (.text:retain)
000dcac6全局_CANB0_ISR (.text:retain)
000dcad0全局_CANB1_ISR (.text:retain)
000dcb2a 全局_CLA1_1_ISR (.text:retain)
000dcb34全局_CLA1_2_ISR (.text:retain)
000dcb3E 全局_CLA1_3_ISR (.text:retain)
000dcb48全局_CLA1_4_ISR (.text:retain)
000dcb52全局_CLA1_5_ISR (.text:retain)
000dcb5c 全局_CLA1_6_ISR (.text:retain)
000dcb66全局_CLA1_7_ISR (.text:retain)
000dcb70全局_CLA1_8_ISR (.text:retain)
000dccf6全局_cla_overflow_ISR (.text:retain)
000dcd00全局_cla_underflow_ISR (.text:retain)

是否可以选择不链接未使用的函数、然后赢得大量存储器空间?

我用于编译器优化、但没有更改任何内容。 (链接器问题…)

谢谢

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

    您好!

    您是否尝试过编译器选项--gen_func_subsections? 您可以在此 文档中找到有关相同的详细信息

    此致、

    Vivek Singh

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

    你(们)好

    我会尝试。

    但竞争对手是什么? 为什么此选项不是由卸车激活的? 因为这对我来说似乎是正常的、不会链接未使用的功能...

    谢谢。

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

    a GIR 说:
    为何此选项未被定义者激活?

    因为旧版本的编译器不会这样工作。  我们避免更改编译器在默认配置中的工作方式。

    编译器选项-gen_func_subsections 是否解决了您的问题?  它只影响 C 编译器生成的段、而不影响用手工编码的汇编语言编写的段。

    谢谢、此致、

    乔治

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

    你好

    我成功地测试了它。

    我的代码从197K 到182K!

    谢谢。

    除了变量之外、"--gen_data_subsections "上方的选项是否相同?

    我认为是的。

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

    [引用 user="a GIR"]上面的选项"-gen_data_subsections "是否相同、但对于变量而言?

    是的。  但并非所有变量。  全局和静态聚合变量。  聚合是数组、结构和联合体。

    谢谢、此致、

    乔治