可乐狂魔 发表于 2024-3-21 10:48:06

GD32H7异常死机

移植了一块GD32H757的板子,驱动和应用程序都移植完成,在进行长时间测试的时候,发现板子总是偶尔出现死机的现象(经常在晚上7-9点死机),死机的现象就是RUN灯不闪,由于程序已经移植了CM_BACKTRACE,也没有任何打印内容(可以判断没有进任何的fault,每个fault中断里也对单片机进行了复位)。
有几次连着JLINK也出现了死机,现象就是系统时间定时器还在工作,但是一旦点X停止调试则立马跳出调试模式(JLINK失去控制)。

目前在删减代码继续测试过程中,发现问题出在串口通讯上,但是把串口硬件屏蔽掉还是会死机,则问题出现在填串口数据包上,但是还是无法定位到详细位置,想请教一下大佬们有什么办法可以详细定位出现死机的地方?或者有什么其他办法来查找这个死机问题?(死机概率太低有什么办法加大死机概率)

skyshine 发表于 2024-3-21 11:25:42

看样子是纯软件问题,先用静态代码分析工具看一下有没有简单错误。在各个功能模块加个判断标志,模块功能结束清除标志,开定时器中断定时检查这些标志,如果长时间卡在某模块就给他打印出来。如果卡住的地方每次都不一样或者出问题不打印,那可能就是中断有问题。jlink退出调试模式可能因为开了看门狗,一暂停芯片就复位了,jlink没法继续连接

可乐狂魔 发表于 2024-3-21 14:01:36

相同的程序在RT1061和STM32H7上运行都没有问题,这次是为了研究国产h7才移植至gd32h7的,怎么感觉都跟芯片有关系。
看门狗是没有开启的,但是JLINK还是断了,感觉是芯片异常跑飞了。

西域海盗 发表于 2024-3-22 10:28:29

可乐狂魔 发表于 2024-3-21 14:01
相同的程序在RT1061和STM32H7上运行都没有问题,这次是为了研究国产h7才移植至gd32h7的,怎么感觉都跟芯片 ...

底层驱动程序改了吗?不会直接用H7的代码跑吧,这样肯定会有问题的

可乐狂魔 发表于 2024-3-22 10:55:16

西域海盗 发表于 2024-3-22 10:28
底层驱动程序改了吗?不会直接用H7的代码跑吧,这样肯定会有问题的

底层驱动程序肯定是改了的呀,应用程序是同一套。

可乐狂魔 发表于 2024-3-22 10:58:40

现在板子死机的时候用jlink工具查看PC指针的位置,查出来是0x08046B64,而这个地址正好对应SYSTICK_HARDLER的入口,感觉是一直卡在系统定时器里。

可乐狂魔 发表于 2024-3-25 10:03:04

可乐狂魔 发表于 2024-3-22 10:58
现在板子死机的时候用jlink工具查看PC指针的位置,查出来是0x08046B64,而这个地址正好对应SYSTICK_HARDLER ...

突然发现这张图里寄存器地址中的LR寄存器的地址为0XFFFFFFE9,这个值的话不是应该会进错误中断吗?为什么gd32h7不进错误中断,而是一直卡在系统时间中断里(systick_handler)???
页: [1]
查看完整版本: GD32H7异常死机