我正在使用Mathworks Polyspace进行CODE分析。我有一个硬件寄存器,我写了一个KEY + MODE并读取寄存器来检查寄存器中的值是否等于MODE。
问题是,Polyspace认为这是“总是失败”,因为我正在编写并连续读取不同的值。
Polyspace中是否有任何选项可以解决此问题。?
答案 0 :(得分:1)
由于KEY + MODE与MODE不同,Polyspace会在逻辑上将测试your_hardware_register == MODE
视为失败(幸运)。
KEY和MODE似乎是您寄存器的位标志。 所以我看到两个选择:
使用按位AND运算符测试寄存器:if (your_hardware_register & MODE)
使寄存器易变(通过将限定符volatile添加到寄存器的声明中),因此Polyspace会认为它可以取任何值(包括MODE)。