c - 使用 Polyspace 处理硬件

标签 c code-analysis

我正在使用 Mathworks Polyspace 进行代码分析。我有一个硬件寄存器,我在其中写入 KEY+MODE 并读取寄存器以检查寄存器中的值是否等于 MODE。

问题是,Polyspace 认为这“总是失败”,因为我在连续的步骤中写入和读取不同的值。

Polyspace 中是否有任何选项可以处理此问题?

最佳答案

由于 KEY+MODE 与 MODE 不同,Polyspace 会在逻辑上认为测试 your_hardware_register == MODE 失败(幸运的是)。

看来 KEY 和 MODE 是您寄存器的位标志。 所以我看到两个选择:

  1. 使用按位 AND 运算符测试寄存器:if (your_hardware_register & MODE)

  2. 使寄存器具有 volatile (通过将限定符 volatile 添加到寄存器的声明中),以便 Polyspace 认为它可以采用任何值(包括 MODE)。

关于c - 使用 Polyspace 处理硬件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32859388/

相关文章:

c - 打印变量(或指针)的内存位置

c - 使用 C 的 B 树

C语言运算符

c# - 如何修复 CA2100 Review SQL 查询的安全漏洞问题

algorithm - NP和co-NP有什么区别

使用 malloc 或堆栈的 C sprintf 函数

c - 一个有趣的 C 链表习语

c# - 代码分析规则 CA1062 行为

c# - 使用 Roslyn 检测 lambda 表达式的长度

c# - 如何在 Visual Studio 中抑制程序集引用警告?