问题一
问题描述
工作环境: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)

















