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:堆和 CIO 对齐:CodeGen-4875

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/727338/compiler-tms320f28377s-heap-and-cio-alignment-codegen-4875

器件型号:TMS320F28377S

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

您好!

3个月前报告了相关问题、但尚未计划发布目标版本来纠正此错误。

这对我们来说是非常重要的,因为我们已经失去了一百个字,我们需要一些地方来继续发展我们的系统。

我能否知道修正计划在哪个版本上进行?

谢谢

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

    不幸的是,我们不能完全理解这个问题的严重性。  我认为问题主要是由于 C I/O 缓冲区的对齐而浪费的18个字、即.cio 段。  因此,在 SDOWP 中的加入没有得到高度优先。

    现在我们了解到您的问题是由数据段阻塞引起的。  它影响的段比.cio 多。  有关此主题的背景信息、请搜索  C28x 编译器手册中标题为数据页(DP)指针负载优化的子章节。

    在我们进一步详细介绍时、请耐心等待。

    谢谢、此致、

    乔治

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

    我们计划向编译器添加一个新功能、以解决因数据分块而导致内存丢失的问题。  新变量属性 NOBLOCK 告诉编译器不会阻止变量、并且推定该变量的位置可以在任意点跨越页边界。  语法将类似于...

    int global_array[100]__attribute__((NOBLOCK)); 

    此功能将首先在计划于10月初推出的版本18.9.0.STS 中提供。  它还将在定于11月初推出的版本18.1.4.LTS 中提供。  要了解 STS 和 LTS 版本之间的区别、请参阅文章 编译器版本号及其含义

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好
    确切地了解问题并不容易、因此我不知道何时必须使用这个新的 attrut、在哪个变量上? (有什么? 仅适用于某些部分?)

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

    只对全局或静态数据变量应用 NOBLOCK。  它对局部变量没有影响。

    将 NOBLOCK 应用于数组以及包含数组的任何结构。  这将避免数据存储器中大部分未使用的数据间隙、这些间隙来自数据阻断、同时导致很少(通常没有)额外的指令来加载 DP 寄存器。  如果由于数据分块而仍然丢失大量数据存储器、请对大型结构应用 NOBLOCK。  我很确信、在典型代码中、这就足够了。  我有兴趣听取这样做未能解决问题的案例。

    谢谢、此致、

    乔治