我用的mcu是nxp 的s32k148,最近发现软件死循环,触发看门狗重启,但是仿真时断点没有进入hard fault,初步分析是死循环,但是不知道怎么定位?
看时间长短了,如果运行好几个小时或者几天才看门狗重启,那排查起来比较复杂了
时间短的话,你关闭看门狗,debug, 是不是暂停下,看停在哪然后继续运行,重复几次后如果一直或者大概率停在同一个地方,说明那地方是耗时长的地方,可能的死循环出现的地方
出现hard fault就最好了,直接可以定位到核心问题
1,查中断,是否是某些情况下中断比较频繁,来不及喂狗,特别是喂狗时间比较短的情况
2,查外设驱动,有些外设驱动函数,比如spi,usart等,老的函数会用while 一直死等,导致超时,特别是你外设异常的时候
3,是否你的主函数逻辑里面某些情况下,存在耗时比较长的情况,这时来不及喂狗