主题中讨论的其他器件:controlSUITE、 C2000WARE、 MOTORWARE
您好!
当 uC 由 CSM 区域2保护时、浮点运算会出现一些问题。
代码:
volatile float fDebugVal3 = 0.000488234;
volatile _iq iqDebugVal4;
_iq function( uint16_t par1, uint16_t par2, float par3 )
{
float fReturn;
//some other code
fReturn = fDebugVal3;
iqDebugVal4 = _IQ( fReturn * 4096.0 );
return _IQ( fReturn * 4096.0);
}
当上述代码运行时、当闪存受到保护时、变量 iqDebugVal4为0。 代码在受 Zone2保护的扇区 E 之外运行。 变量 fDebugVal3和 iqDebugVal4处于未受保护的 RAML 中。 当我通过#pragma 将这些变量置于受保护的 RAML 中时、我得到相同的0结果。
当我使用调试器运行此代码时、我获得了正确的1.9998结果。
我们使用编译器版本 v20.2.3.LTS。 对于编译器版本21.6.0.LTS、问题相同。 在处理器选项中、我们将--float_support 设置为 softlib。
此致
David
