东方红锁车版本死机问题分析

现象:与东方红ecu交互过程中,程序进入hardfault异常;

查找过程:
方式1、通过keil软件调试功能,在hardfault处打断点,查看call stack窗口。call stack窗口处,有函数调用过程,但全是freertos系统函数调用,没有自己定义的函数,系统函数是没问题的,故想通过查看call stack窗口查找问题行不通了;

方式2、软件版本,从哪一版程序开始出现此问题的;

方式3、通过排除法定位问题,屏蔽新加入的内容,注释掉yto_ecu_opt()函数(与ecu交互函数),死机问题不在复现了;故,是yto_ecu_opt()函数导致死机。下面要找根本原因了。yto_ecu_opt()函数内又调用了两个函数(最终调用can发送函数发送数据),其中一个是aes加解密函数(此函数是从网上cp下来的)。

用can分析盒子发现,每次死机时,ecu都会发送三次此帧(程序死掉,ecu重发几次);这就有规律了,每次ecu发送此帧数据时,程序就挂掉了
image

然后用can盒子模拟发送此帧数据,发现无论can数据是什么,都会导致程序挂掉,故,问题就是can数据接收处理那的问题了。屏蔽代码,找到根本问题了。

回想以前种种线索,泰山版本问什么不死机(没有此帧数据)

本次问题,关键点是每次ecu发送此帧数据,程序就会挂掉!


0708
试验环境:
没有接ecu
用can盒子模拟发送此帧数据

试验结果:
没有复现死机问题


0710
试验环境:
昆明云内ecu

试验结果:
复现死机问题,具体解决方法详见:https://www.cnblogs.com/chino-ll/p/18295557


posted @ 2024-02-22 09:38  我爱茜茜公主  阅读(5)  评论(0编辑  收藏  举报