当前所在位置: 首页 > 资讯 >

工程开发问题(九):中断嵌套,状态机状态错序,刷写失败-天天动态

2023-06-21 15:25:11来源:个人图书馆-新用户3849ayns


(资料图片)

问题描述1问题描述

程序刷写过程中,Sender和Receiver在多帧传输过程中,Sender端偶发性地

3、中断嵌套引发状态错序

Sender端打包FF数据,数据打包后,使能发送中断;t0时刻,数据成功发送到总线,Tx Interrupt发生,程序进入Tx InterrupyRoutine;t1时刻,接收到FC帧,由于配置的接收中断优先级比发送中断优先级高,发送中断例程被打断,执行接收中断例程(Rx Interrupt Routine)。在接收中断例程中,识别到收到的报文是FC类型,将Sender的状态机切换到Send_CF状态;t2时刻,程序返回发送中断例程,将Sender的状态机由Send_CF切换到Wait_FC;t3时刻,发送中断例程执行完毕,Sender继续处理下一帧发送,由于识别到Sender状态处于Wait_FC,Sender不发送CF,一直等待对方发送FC,而Receiver实际已经将FC发送完成,导致Sender一直处于Wait_FC状态而不能发送CF,最终导致程序刷写失败。问题示意如下所示:不出问题时,Tx Interrupt Routine执行完成,Rx Interrupt没有打断Tx Interrupt Routine,Sender的状态机可以正常切换,如下所示:所以,这也问题偶发的原因,发送中断例程被接收中断打断的时候,问题产生,没有被打断时,问题不产生。3解决措施

可以看出,上述问题的实质是中断抢占导致状态机被切换。因此处理策略是:使能发送中断之前将状态机提前切换到Wait_FC状态。

当然,解决策略可能远不止这一种方式,比如:提高发送中断的优先级,避免被抢占。

关键词:

上一篇:一手反向拆股,一手3亿美元融资,贾跃亭又为FF续命
下一篇:最后一页