小编Ens*_*ieT的帖子

如何在嵌入式C代码库中查找与数据一致性相关的问题?

让我解释数据一致性问题的含义.以下面的场景为例

uint16 x,y;
x=0x01FF;
y=x;
Run Code Online (Sandbox Code Playgroud)

显然,这些变量是16位,但如果这个代码使用8位CPU,则读或写操作不会是原子的.因此,中间可能发生中断并改变值.这是可能导致数据不一致的一种情况.

这是另一个例子,

if(x>7) //x is global variable
{
 switch(x)
        {
           case 8://do something
                   break;
           case 10://do something
                   break;
           default: //do default
        }
}
Run Code Online (Sandbox Code Playgroud)

在上面的摘录代码中,如果中断在if语句之后但在switch语句之前将x的值从8更改为5,那么我们最终会出现默认情况,而不是情况8.

请注意,我正在寻找方法来检测这种情况(但不是解决方案)

是否有任何工具可以检测嵌入式C中的此类问题?

c embedded data-consistency

9
推荐指数
1
解决办法
269
查看次数

标签 统计

c ×1

data-consistency ×1

embedded ×1