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.

[参考译文] 编译器/TMS320F280049:在 COFF 至 EABI 期间初始化未初始化段

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/819525/compiler-tms320f280049-uninitialized-section-initialization-during-coff-to-eabi

器件型号:TMS320F280049

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

尊敬的香榭丽舍

我向我们的客户提出这一问题。

用户尝试将 COFF 转换为 EABI、但在未初始化的段中遇到问题。

他曾提到  

http://processors.wiki.ti.com/index.php/C2000_EABI_Migration#C28x_EABI_Sections

但仍然有这个问题。

环境是:

CCS:9.0.1.00004

编译器:v18.12.2

设置链接器命令:

(1)   –zero_init=on

(2)   –cinit_compression=off

下图是与 cinit 表相关的映射文件

其中.data 是初始化段

.CLAData、.StackCLA abd .bss 是未初始化的段。

这些已确认正确且符合预期。

下图是加载到目标上时的存储器数据。

由 cinit 表提供0x8F050

(1)   已初始化的段:数据和初始化结果正确。

(2)   未初始化的段:

要为0的存储器数量只是映射文件数量的一半

初始化不正确。 只有一半被清除。  

 


为什么链接器在映射文件中未初始化的段看起来是正确的、但在将代码加载到目标上之后是错误的?  

请帮助我们了解用户可能出错的地方吗? 例如、在设置或其他方面?

黄维恩

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

    韦恩、

    我怀疑字节与16位字之间的关系。  映射文件显示的是字节。  但处理器中的所有内容都是以16位字表示的。  您是否检查了内存是否已正确初始化为零?

    此致、

    David

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

    [报价用户="Wayne Huang"]请帮助我们显示用户可能出错的位置

    我觉得客户没有出错。 我可以用一个简单的测试用例重现问题。 我在 SDOWP 系统中提交了条目 CodeGen-6456以对此进行调查。 欢迎您在我的签名中使用下面的 SDOWP 链接进行访问。

    谢谢、此致、

    乔治

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

    乔治

    感谢您的更新。

    我们将等待它的修复。

    韦恩

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

    您好、George、

    我只是想告诉大家、我在使用完全相同版本的 CCS 和代码生成工具的 F28388上遇到了完全相同的问题。

    此致、

    皮埃尔

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

    谢谢你。  我在同一 SDOWP 条目中注意到了您的情况。

    谢谢、此致、

    乔治