Thread 中讨论的其他器件:controlSUITE
您好、编译器团队、
被叫方提到 了编译器问题。 这是他支持的最初职位:
我有一 个使用编译 器 v6.1.3构建的工程、没有问题、工作正常 、但在 使用同一工程/代码上的编译器 TIv20.2.4.LTS 进行编译时、CPU 暂停问题。
完成了一些测试、显示了这两个编译器版本之间的不同执行时间。
如果需要、我准备提供.pp 文件。 如果能够进一步分析这一点、以了解在最新编译器版本上导致问题的原因、我将不胜感激。
谢谢、
Andy
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.
您好、编译器团队、
被叫方提到 了编译器问题。 这是他支持的最初职位:
我有一 个使用编译 器 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/3811436 #3811436">我认为我需要提交由较旧和最新编译器版本生成的.pp 文件。 是这样吗?是的、这会很有帮助。 然后、我可以使用两个编译器生成代码、并比较汇编输出。
谢谢、此致、
乔治
您好、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
唯一有意义的区别是中断函数是如何结束的。 以下是版本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.2.x 和6.4.x 之间的 ASM 生成中没有明显变化、除了一个可降低 ISR 延迟的 tweak。
这种变化的副作用是数据结构/指针在一个周期内解引用的速度变慢。 每次代码使用结构->成员符号的变量时,底层 ASM 都会增加一条 ADD 指令,从6.2.x 增加到6.4.x (及更高版本)。 新的结构->成员惩罚可能会改变系统的实时动态。
如果是这种情况,您可以选择进行开发:a)将编译器版本限制为6.2.x 及更早版本,或 b)重新考虑软件,以最大限度地减少代码段中可能影响实时最后期限的结构->成员解引用的使用。
Tommy