问题一
问题描述
工作环境:ECU外接canoe
操作:使用CANoe模拟发送NM报文,然后停发或者断开CANoe
现象:程序跑死,调用call stack查看压栈情况如下图所示

定位代码如下图所示。可见是由于CAN模块在设置Controller状态时由于Can LOOP导致的,联想到CAN模块的Hardware loop check问题

查找相关文档,发现需要对下图中几个模块设置exclusive area,与《如何解决OS ErrorHook 的E_OS_DISABLED_INT错误》解决方法一致。

问题二
按上述修改后,运行代码发现初始化就挂掉了,call stack情况如下图所示。可见是由于CanSM在切换状态时,CAN模块尚未初始化,因此应该调整初始化顺序。

当前有问题的初始化顺序如下

最终将Can初始化放到CanSM初始化之前,问题解决。

064:添加字符065:数组变换066:装箱问题](https://img-blog.csdnimg.cn/direct/6dc326485bb246f2bb9225f22ce39a23.png)

















