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.
工具/软件:TI C/C++编译器
大家好、
我遇到了一些与 CCSv6和更高版本相关联的奇怪问题、这些问题与 TI v19.6.0 STS 的所有编译器版本都相关。 当我尝试使用编译器 TI v3.3.3将我的项目从 CCSv4升级到使用最新编译器的较新 CCS 时、就会出现此问题。 我使用 CCSv8导入了项目并使用 TI v18.1.4 LTS 进行编译、我的代码表现出了一些异常行为、例如似乎跳过代码行或优化寄存器设置等 它看起来也不像<<>>运算符、如所示
参数<= 0x01;
我怀疑它与优化有关、但我尽力确保完全关闭它、就像在 CCSv4环境中一样(Settings/MSP430 Compiler/Optimization /Optimization level (-opt_level、-O):off)、没有结果。 是否有方法确保所有优化都已关闭。 或者、如果您对从 CCSv4转换到更新的 CCS 和编译器的缺陷有任何想法或了解、请告诉我。
提前感谢、
ED
编译器选项设置--opt_level=off 会禁用大多数优化。 当使用优化使代码工作不正常时、一个典型的原因是未能使用 volatile 关键字。 优化级别越高、出现此类问题的可能性就越大。
谢谢、此致、
乔治
感谢乔治的回答、但它没有太大帮助、因为我已经知道你所说的大部分内容。 这里的问题是、在 CCSv4中使用 TI v3.3.3编译器编译的完全代码没有问题。 只有当我使用较新的编译器将同一项目导入到 CCSv8时、我才会看到异常。 在这两种情况下、我都尽力关闭优化。 将-opt_level 设置为 off 时、"大多数优化"是什么意思? 我可能错过了哪些其他优化?
感谢您的帮助!
编译器*始终*执行了一些优化。 我不知道专门用于 TI 编译器、但例如、如果您具有:
Omega = f * 2 * m_PI;
编译器将在编译时计算2 * m_pi。
此外、如果您创建如下循环:
int i;
(i=0;i<1000;i++);
为了浪费时间、编译器可能会将其删除、因为它不起作用。
此外、对于<<运算符、实际操作数是多少、您得到了什么、您期望得到了什么?
感谢 Keith 的澄清。 我的意思是更明显的、可以在设置中打开/关闭。 我的问题同样更像是编译器3.3.3为什么不显示任何优化异常;仅使用新的 CCS 和编译器。
关于值班操作员、我只是进行了一次有教育经验的猜测。 我有如下内容:
如果(第>段)
{
while (Para < 0x80000)
{
参数<= 0x01;
}
}
一旦进入 while 循环中的蓝色月亮 Para、就会莫名变为0、这会使代码卡在 while 循环中并导致 WD 复位。
实际上、如果(Para = 0){break;}在 while 环路中、我必须设置防护、以防止 WD 复位。
它可能来自移位器<<、也可能与我不知道的隐藏优化设置相关。 非常非常非常奇怪。 这种情况在具有3.3.3编译器的 CCSv4中不会发生(我们已经使用它多年了、没有任何问题)。
[引用 user="snuk"]在 while 循环中的蓝色月亮 Para 中,会莫名变为0[/quot]
如果这是间歇性发生的、那么这听起来就像是硬件中的问题。
谢谢、此致、
乔治
绝对不是硬件问题、因为使用3.3.3编译器的 CCSv4中从未发生过这种情况。 此外、这只是其中一个异常。 另一个与 GPIO 引脚相关的问题是、始终没有像编码时那样"打开"、而不是间歇性的。
我们不想返回 CCSv4、因为我们需要在不久的将来支持 uint64_t 数据类型、但如果此问题仍然存在、我们似乎没有选择。
尝试使用 gcc 编译器。
也尝试了! 在为项目手动和费力地将设置转换为 GNU 环境后、我仍然遇到大量警告和错误。 我们的项目设置为使用 TI 编译器、切换到 GNU 将是一项工作(即不支持 pragma 等)。 这种努力带来的缺陷将使这种努力变得不值得。
除非我当然遗漏了一些东西。
再次感谢 George、如果时间允许、我将尝试。 我知道 TI 最近不支持像多年前那样的现场工程师、但是否可以获得某种现场帮助、因为我们的代码非常特定于硬件?
在工作台级别更容易演示异常。
[引用 user="snuk"]如果时间允许,我将尝试该操作。
只需5-10分钟。
[报价用户="snuk"]是否可以获得某种现场帮助[/quot]
我不知道。 这不是我安排过的。 请先让我了解该测试用例。 每种情况都是不同的。 但您可能会对我们在这方面取得的进展感到惊讶。
谢谢、此致、
乔治