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.

[参考译文] TMS320F28069:将编译器从 TI v6.1.3升级到 TIv20.2.4.LTS 时、处理器停止

Guru**** 2558850 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1030658/tms320f28069-the-processor-halt-when-upgrade-the-compiler-to-tiv20-2-4-lts-from-ti-v6-1-3

器件型号:TMS320F28069
Thread 中讨论的其他器件:controlSUITE

您好、编译器团队、

 被叫方提到 了编译器问题。 这是他支持的最初职位:  

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1011613/tms320f28069-the-processor-halt-when-upgrade-the-compiler-to-tiv20-2-4-lts-from-ti-v6-1-3/3808568#3808568

我有一 个使用编译 器 v6.1.3构建的工程、没有问题、工作正常 、但在 使用同一工程/代码上的编译器 TIv20.2.4.LTS 进行编译时、CPU 暂停问题。

完成了一些测试、显示了这两个编译器版本之间的不同执行时间。  

 

如果需要、我准备提供.pp 文件。 如果能够进一步分析这一点、以了解在最新编译器版本上导致问题的原因、我将不胜感激。

谢谢、

Andy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="151589" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1030658/tms320f28069-the-processor-halt-when-upgrade-the-compiler-to-tiv20-2-4-lts-from-ti-v6-1-3 "]如果需要,我准备提供.pp 文件。

    我认为这意味着您已经确定了导致问题的函数。  对于包含此函数 的源文件、请按照文章如何提交编译器测试用例中的说明进行操作。  此外、请告诉我函数的名称。

    谢谢、此致、

    乔治

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

    您好、George、

    感谢您的快速响应。 我更喜欢通过私人消息提交文件。 我认为我需要提交由较旧和最新编译器版本生成的.pp 文件。 是这样吗?

    谢谢、

    Andy

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="151589" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1030658/tms320f28069-the-processor-halt-when-upgrade-the-compiler-to-tiv20-2-4-lts-from-ti-v6-1-3/3811436 #3811436"]我更喜欢通过私人邮件提交文件。

    好的。   有关如何执行此操作的说明、请阅读文章 如何提交编译器测试用例

    [引用 userid="151589" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1030658/tms320f28069-the-processor-halt-when-upgrade-the-compiler-to-tiv20-2-4-lts-from-ti-v6-1-3/3811436 #3811436">我认为我需要提交由较旧和最新编译器版本生成的.pp 文件。 是这样吗?

    是的、这会很有帮助。  然后、我可以使用两个编译器生成代码、并比较汇编输出。

    谢谢、此致、

    乔治

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

    您好、George、

    已通过消息发送文件。  

    谢谢、

    Andy

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

    我收到了预处理文件。  谢谢你。  但是、我仍然缺少编译器选项。  也请提交。  请务必复制并粘贴选项的文本、不要使用屏幕截图。

    您指出两个功能与问题有关。  遗憾的是、这些功能很大。  我需要您进一步缩小这些函数中出现问题的位置。  如果没有这个进一步的方向、我就看不出如何找到问题的原因。

    谢谢、此致、

    乔治

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

    您好、George、

    以下是编译器选项:

    -v28 -ml -mt --cla_support=cla0 --float_support=fpu32 --vcu_support=vcu0 --include_path="C:/ti/ccs1031/ccs/tools/compiler/ti-cgt-c2000_20.2.4.LTS/include --include_path="C:/vektrefix_support=float_support=fs/vekidecabx/spircuit/dspircuit_support=trads/secnecnecnecnecnecure-trads/trads/secnecnecnecnecnecnecnecnecnecneck/tradse-tradse-trads/secnecnecnecnecnecnecnecnecnecneck/trads-super:-trup/dsp/dsp/dsp/trup/trads/secnecnecnecnecnecnecnecnecnecnecnecnecnecnecnecnecnecnecnecnecneck/dsp/trads-super -trads-supment_sup

    对于与问题相关的可疑功能、我无法缩小功能出错的范围。 我进行了测试,表明 SubSourceSafetyAndChannelStateSlowISR()中有太多嵌套中断。 并对该函数进行了测量、发现两个编译器版本之间的执行时间不同。  

    谢谢  

    Andy

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

    感谢您提供构建选项。

    我一直在比较汇编代码。  有很多东西要看。  到目前为止,我没有发现明显的差异。   

    我注意到您构建时没有进行优化。  如果可行、请使用-opt_level=3选项进行构建、看看这是否有用。   

    谢谢、此致、

    乔治

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

    您好、George、

    我尝试了 opt_level=3和 opt_for_speed=5、 尽管发生了 CPU 暂停、但在 v6.1.3中发现了应用程序中断的一些功能。

    谢谢、

    Andy

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

    唯一有意义的区别是中断函数是如何结束的。  以下是版本20.2.4.LTS 内部版本的外观...

            SUBB      SP,#4                 ; [CPU_ARAU] 
            MOV32     R3H,*--SP             ; [CPU_FPU] 
            MOV32     R2H,*--SP             ; [CPU_FPU] 
            MOV32     R1H,*--SP             ; [CPU_FPU] 
            MOV32     R0H,*--SP             ; [CPU_FPU] 
            MOV32     STF,*--SP             ; [CPU_FPU] 
            MOVL      XAR7,*--SP            ; [CPU_ALU] 
            MOVL      XAR6,*--SP            ; [CPU_ALU] 
            MOVL      XAR5,*--SP            ; [CPU_ALU] 
            MOVL      XAR4,*--SP            ; [CPU_ALU] 
            MOVL      XT,*--SP              ; [CPU_ALU] 
            POP       AR1H:AR0H             ; [CPU_ALU] 
            SETC      INTM, DBGM            ; [CPU_ALU] 
            POP       RB                    ; [CPU_FPU] 
            NASP      ; [CPU_ALU] 
            IRET      ; [CPU_ALU] 
    

    除了第13行中的 SETC 指令不存在外、6.1.3版生成的代码是相同的。  我看不出这个特定的 SETC 指令是如何产生影响的。  但也许您可以。  我还将邀请其他 C28x 专家来看看。

    谢谢、此致、

    乔治

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

    Andy、

    从原始线程中、您报告了编译器6.4.0也存在问题。 使用编译器6.4.0时、不会插入额外的 SETC INTM、DBGM 指令、因此这不是问题的根源。

    您是否对器件使用 CSM 密码保护? 您是否能够共享.cmd 和.map 文件?

    Tommy

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

    Tommy、您好!

    我没有对器件使用 CSM 密码保护。

    对于.CDM 和.map 文件、我应该使用编译器6.4.0或最新版本20.2.4进行编译吗?

    谢谢、

    Andy

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

    Andy、

    6.4.0是最大程度地减小差异的首选方法。

    我在6.2.x 和6.4.x 之间的 ASM 生成中没有明显变化、除了一个可降低 ISR 延迟的 tweak。

    这种变化的副作用是数据结构/指针在一个周期内解引用的速度变慢。 每次代码使用结构->成员符号的变量时,底层 ASM 都会增加一条 ADD 指令,从6.2.x 增加到6.4.x (及更高版本)。 新的结构->成员惩罚可能会改变系统的实时动态。

    如果是这种情况,您可以选择进行开发:a)将编译器版本限制为6.2.x 及更早版本,或 b)重新考虑软件,以最大限度地减少代码段中可能影响实时最后期限的结构->成员解引用的使用。

    Tommy