![9852bbd48179abd7fd40ba527e3cf601.png](https://i-blog.csdnimg.cn/blog_migrate/158298c7f8bc7907baef55539ea4712b.png)
作者:董燕
1前言
在上期的《中断冲突分析(一)——基于参数类型访问的中断冲突分析》的说明中,是针对几种参数类型进行一次访问操作过程中引入的数据不同步场景分析。
针对同一个参数的多次访问过程中,如果存在多次访问操作被中断打断的可能时,需要从参数访问序角度分析是否存在访问冲突。本文结合参数访问序的几个典型场景,给出对应的冲突分析,最后给出相关的结论。
2
参数访问序冲突场景分析
一个变量在主程序、各级中断服务子程序中多次进行读写,哪些会在读写过程中引入变量访问冲突呢,在此以中断中有读操作和写操作进行分类,并通过实例加以分析说明。
part 1 中断写操作时主程序访问序
a. 主程序中有读读操作序
![b0bf035e78e47a61e0a591e223549438.png](https://i-blog.csdnimg.cn/blog_migrate/5a0791f7e6dc90ea1547619f8dc5401c.png)
图1 主程序读-读操作序场景
Fig.1 Main program reading reading-interrupt reading operation order
上述图1代码针对变量rsCount的访问就是主程序进行连续两次读,中断服务子程序中进行一次写的操作。该种形式的访问序会在主程序第一条读语句执行后,第二条读语句执行前,如果产生中断,会导致第二次读出的数值与第一次不同。通过对本实例的分析,两条读语句对应的变量值应该为同一时刻的数值,上述代码存在访问冲突,在此称为“读读之间产生写”,通过该实例可以总结如下:
针对“读读之间产生写”访问序,分析是否发生中断冲突的途径就是确认两次或多次读语句对应该变量值是不是要求为同一时刻的值,如果要求是同一时刻的值,即多次读的过程中不能被中断改写,则该“读读之间产生写”访问序就存在中断访问冲突。
针对两次或多次读语句对应该变量值是不是要求为同一时刻的值,需要结合代码实现逻辑及软件功能进行测试需求分析,一般在同一个模块中连续读操作的访问冲突概率较大。
b. 主程序中有读写操作序<