打印
[技术讨论]

GD32F105RCT6启动时在Reset_Handler中PC指针跑飞的问题

[复制链接]
45|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
龙千校|  楼主 | 2024-11-21 10:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
芯片是GD32F105RCT6,仿真中按步运行发现,一开始PC指针和R0就乱了,没想明白是为什么,没有思路太痛苦了.最近调MCU的OTA功能,测试时发现设备会异常的复位,而且复位的位置非常靠前,基本上一启动MCU外设的初始化还没跑完就复位了,今天发现一个更奇葩的现象,甚至连Reset_Handler都没跑完.
测试是这样设置的,因为有OTA功能所以分了BootLoader和APP两个部分,BootLoader一开始就检测要不要升级,不升级就转跳到APP部分,APP里设置了上电两分钟就调用while(1)来触发独立看门狗复位MCU,接稳压电源进行测试,这次大概是运行了一天吧,有台设备复现了这种异常复位的现象,接STLink在STM32 ST-LINK Utility内看PC指针的位置,发现指针位置很奇怪,指向了BootLoader程序的GPIO初始化函数,但是这次测试并没有触发OTA流程,程序应该直接转跳APP的,不应该跑到GPIO初始化这里面.利用keil仿真发现在BootLoader里面连Reset_Handler都没跑完,甚至第一个跳转到SystemInit()函数都没跳对,直接跳到一个UART相关的函数里面,然后从这个函数出来后也没用正确的跳转到main()里面,而且跳到GPIO初始化函数,并且在一个很奇怪的位置卡住了,接着应该是触发了看门狗或者其他复位机制直接复位了.
录了两个跑仿真的视频
异常:


正常:






使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

4

帖子

0

粉丝