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.

[参考译文] TMS320F2812:某些语句在编译后被跳过

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1270759/tms320f2812-some-statements-are-skipped-after-compilation

器件型号:TMS320F2812

大家好、

CCS 版本:12.4.0.00007。  数据格式为 int32。

a: 如下图所示、前一条语句第144行的 park1.q 计算结果始终更改为 Q30格式。 下一行将该值分配给 iir.input、监控 iir.input 始终为0、Q30 * 2不会导致数字溢出、也不会基于监控结果溢出。

b.  客户在第148行添加了一个测试句、用于 instr.testCount++;instr.testCount、但每次中断该语句会增加1。

c.在第143行设置一个断点、stop 并按 step in 直接跳转到第152行、instr.testCount 正常增加、park1.q 结果通常有值、但 iir.input 始终为0。  

编译器优化级别为0、无优化、如下图中所设置:  

从汇编开始、144到151行经过优化、没有汇编语句。 但是、应该优化中间的测试语句、但它们工作正常、当从143行跳到152行时、这些语句会自动递增1。  分解如下:  

注:程序以前工作正常,使用快捷键 Ctrl +/注释整条语句时连续// 3次/,客户将其删除后出现问题。

客户进行了以下尝试、但均失败:

  • 全部删除项目文件、只需将.c 和.h 文件复制出来、然后再次构建项目文件即可。
  • 将 CCS V11的版本更改为构建。
  • 尝试替换 C2000工具。  

在其他编辑器中,使尾部字符出现,并且它的基金是,如果注释后面是一个 CR,下一个语句将不会被执行,在 CR 按压机返回 CRLF,下一个语句执行。  

 客户 只有 Windows、没有额外操作。 通常、按下 ENTER (输入)窗口为 CRLF、但它会突然改变。 您能帮助检查这个案例吗? 谢谢。

此致、

切里

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

    您好、Cherry:

    会发生一些奇怪的行为。 在第二个屏幕截图中、我看到第152行中没有源代码的程序计数器。 源代码关联可能会关闭。  

    测试用例将会非常有帮助。 是否可以提供一个? 它不需要是实际的项目,而只是一个非常分散的简化版本,可以重现相同的问题。

    谢谢

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

    Ki、您好!

    感谢您的支持。

    也许源代码关联关闭。  [/报价]

    源代码正常。

    在其他编辑器中,显示尾部字符,如果注释后面是 CR ,下一个语句将不会执行,在 CR 印刷机返回 CRLF 后,下一个语句将执行。[/引号]

    出现此问题的原因如下:  

     /每行的尾部字符在注释语句后变为 CR,但从理论上讲,Windows 的尾部字符应该是 CRLF。 导致编译器认为下一行也是注释。 解决方法是在每一行后再次按 Enter、程序将恢复正常。  

    实际上现在的情况是、这尾是如何成为 CR 的、客户没有进行复制和粘贴、而且他们没有在 Linux 上编辑它的。  

    谢谢。此致、

    切里

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

     /每行的尾部字符在注释语句后变为 CR,但从理论上讲,Windows 的尾部字符应该是 CRLF。 导致编译器认为下一行也是注释。 解决方法是在每一行后再次按 Enter、程序将恢复正常。  

    实际上现在的情况是、这尾是如何成为 CR 的、客户没有进行复制和粘贴、而且他们没有在 Linux 上编辑它的。  

    [/报价]

    客户仅可在 Windows 环境中使用 CCS 编辑源代码。 他们是否在版本控制中处理文件?

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

    Ki、您好!

    客户只能在 Windows 环境中使用 CCS 编辑源代码而工作吗? 他们是否使用版本控制中的文件?

    没有 GIT 版本用于控制、也不使用其他版本的控制软件。

    谢谢。此致、

    切里

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

    我不知道发生了什么。 我似乎无法重现此问题。 我打开特殊字符的可见性、并且始终可以看到 CRLF。

    若要打开特殊字符可见性:

    由于这之前都可以实现、我建议客户尝试使用全新的工作区文件夹并将项目导入到其中、看看这是否有帮助。