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.

[参考译文] TMS320F28379D:阻止的数据与未阻止的数据警告

Guru**** 2609955 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1033133/tms320f28379d-blocked-data-vs-non-blocked-data-warning

器件型号:TMS320F28379D

您好!

我将使用 CCS10和编译器版本20..2.5.LTS 更新一些较旧的代码。  它会生成一条警告、提示以下内容:

警告:符号," "、引用于" .obj"、假设数据被阻止、但正在访问" .obj"。 可能会导致运行时故障。

阻塞数据与非阻塞数据的含义是什么?

谢谢、

ED

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

    请参阅 此论坛主题

    谢谢、此致、

    乔治

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

    尊敬的乔治:

    更多信息。  使用 CCS10、我将重建一些最初使用 CCS8构建的旧代码、但不会像文章建议的那样使用 CLA。  是否有另一种方法来生成它?

    谢谢、

    ED

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="366241" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1033133/tms320f28379d-blocked-data-vs-non-blocked-data-warning/3820679 #3820679"]是否有其他方法生成此信息?

    只要存在与...类似的汇编代码(可能由编译器生成),就会发生这种情况。

            MOV       AL,@$BLOCKED(_symbol)

    (笑声) 与该符号关联的存储器的定义不会被阻止。  通常、该符号在 CLA 代码中定义。  但它也可以在手工编码的汇编语言中定义。   

    [引用 userid="366241" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1033133/tms320f28379d-blocked-data-vs-non-blocked-data-warning "]但正在访问" .obj[/quot]

    生成 FileName2.obj 的源代码是否是手动编码的汇编文件?

    谢谢、此致、

    乔治

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

    尊敬的乔治:

     

    Filename1是用 CPP 编写的、而 Filename2是用汇编语言编写的、其中相关变量的声明如下:

     

    my_struct     .cstruct

    VAR1.ulong                       

    VAR2.ulong                       

    my_struct_len             .endstruct

     

    <_variable_name>.tag my_struct

    <_variable_name>.usect "MyTag"、my_struct_len

     

    在 cmd 文件中、MyTag 位于联合体中的 SECTIONS 区域中、如下所示:

    存储器

                   第1页:

                                   MySpace:origin = ,lenight =

     

    部分

                   联合:>MySpace,页=1

                   {

                   MyTag

                   AnotherTag

                   }

     

    谢谢、

    ED

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

    因为这条线...

    [引用 userid="366241" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1033133/tms320f28379d-blocked-data-vs-non-blocked-data-warning/3821153 #3821153"] <_variable_name>.usect "myTag"、my_struct_len[/quot]

    (笑声) 错误诊断正确。  该变量不会被阻止、但编译器生成的代码会假设它被阻止。   

    修复方法有两种。

    1. 阻止数据
    2. 告诉编译器数据未被阻止

    若要阻止数据、请在.usect 指令的末尾添加、1。

    <_variable_name> .usect "MyTag", MY_STRUCT_len, 1

    有关更多详细信息、 请在 《C28x 汇编工具手册》中搜索 标题 为"未初始化部分"的子章节。

    要告诉编译器数据未被阻止、请使用变量属性 noblocked。  下面是一个示例...

    __attribute__((noblocked))
    extern struct sss global_struct;

    有关更多详细信息、 请在 C28x 编译器手册中搜索 标题为 数据页(DP)指针负载优化的子章节。

    谢谢、此致、

    乔治

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

    良好的基准。  那是可行的。  谢谢 George、

    ED