工具/软件:
您好的团队、
我向我的客户询问这个问题。
客户在其应用程序中调用函数、此函数将通过 CAN 接收主计算机发出的命令、然后将此值(ulVal 从 CAN 获取)分配给全局变量(PfcCtrlOnOff)、以确定其设备是否启动;如果 PfcCtrlOnOff 为1、设备将断电。 变量 PfcCtrlOnOff 将仅在此代码中分配。


但现在、器件运行大约30分钟后、即使不通过 CAN 发送断电命令、器件也会自动断电。
他们发现:
1.如果它们接近优化水平,这种现象不会发生,这意味着设备不会自行断电;

在这种情况下、组装如下所示:

2.但如果他们设置的级别是 O-3 ,这种现象将会发生;然后他们连接调试,发现变量变为1但 ulVal 为0;
在这种情况下、组装如下所示:

3.他们设置级别为 O-3、添加另一个全局变量 PfcOnoffTest 并将值 ulVal 分配 给该变量、 PfcOnoffTest 的值 不会 意外更改、这意味着尽管 PfcOnoffTest 的值 更改为 q、但 PfcOnoffTest 的值 与 ulVal 相同;

我比较上面的组装,并找到:
1、优化级别之间为 off 和3、DP 变化的位置不相同、且恢复 ulVal 的寄存器也不相同;我不确定它是否与此现象有关;
优化级别已关闭

优化级别为3
2.在优化级别为3,它将显示代码:返回 ulRet,不出现在 优化级别是关闭的

1.当优化是差异时,您能就上述差异给出您的意见吗?
2.你能给你的建议如何找到根本原因?
BRS
Shuqing