我正在使用 Mathworks Polyspace 进行代码分析。我有一个硬件寄存器,我在其中写入 KEY+MODE 并读取寄存器以检查寄存器中的值是否等于 MODE。
问题是,Polyspace 认为这“总是失败”,因为我在连续的步骤中写入和读取不同的值。
Polyspace 中是否有任何选项可以处理此问题?
最佳答案
由于 KEY+MODE 与 MODE 不同,Polyspace 会在逻辑上认为测试 your_hardware_register == MODE
失败(幸运的是)。
看来 KEY 和 MODE 是您寄存器的位标志。 所以我看到两个选择:
使用按位 AND 运算符测试寄存器:
if (your_hardware_register & MODE)
使寄存器具有 volatile (通过将限定符 volatile 添加到寄存器的声明中),以便 Polyspace 认为它可以采用任何值(包括 MODE)。
关于c - 使用 Polyspace 处理硬件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32859388/