你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32G031K8T6,大伙有没有碰到过,flash问题?

[复制链接]
Hans.he 提问时间:2021-9-23 09:19 / 未解决
主要问题:STM32G031K8程序打断点在STARTUP.S文件中,停在断点处就出现FLASH_CR寄存中的CFGBSY置位为1,导致操作flash错误。而且按照手册说明该位的置位和复位均由硬件决定。所以外部完全无法操作。导致G系列的flash是无法操作的。本人认为是芯片的设计问题,已经排除芯片坏掉,除非整个批次均有问题因为已经换过5片MCU以验证问题。(按照断点处的情况 即整个代码只执行了一句话)。
主要情况如下:IDE为MDK-KEIL-V5.36,工具是STM32G031-Nucleo-32。参考例程是官方例程STM32Cube_FW_G0_V1.5.0\Projects\NUCLEO-G031K8\Examples_LL\GPIO\GPIO_InfiniteLedToggling_Init中的例程MDk例程(当然也做过自己的工程测试,结局一样)(为啥采用GPIO工程例程而不是操作flash工程来说明芯片有情况,是因为用flash工程一样出现该情况)。具体测试情况如下面图片,毕竟有图有真相。
不知道大家是否有碰到过,请远离深坑! 微信图片_20210922163242.png
收藏 评论11 发布时间:2021-9-23 09:19

举报

11个回答
butterflyspring 回答时间:2022-7-15 12:35:06
MDK在STM32G0系列上对于断点的处理有点特殊,默认会写一点内容在FLASH里面,以前看到有人在原版说明上有个截图。我试过,与FLASH有关的操作,不使用断点就正常。当然为了调试方便,可以换个编译器或者在原版说明上找个变通的方式试试。另外MDK是ARM收购的软件公司,与ST不是同一家公司,他是做软件配合ST产品用的,就如同IAR公司一样。
Hans.he 回答时间:2021-9-23 09:21:48
有人碰到过吗
xmshao 回答时间:2021-9-23 11:53:33
我用g031基于IAR IDE做了反复测试,结果是这样的:


如果用Mdk,那个CFGBSY位似乎有点不稳定,感觉跟IDE有点关系。
xmshao 回答时间:2021-9-23 11:54:51
xmshao 发表于 2021-9-23 11:53
我用g031基于IAR IDE做了反复测试,结果是这样的:

uuu.png
Hans.he 回答时间:2021-9-23 14:22:27

您好,如果用IAR,在显示上面的确如您贴图所示CFCGSY不会为1,但是照样操作不了Flash,原因是一致的,只是CFCGSY不是为1,没在IDE上显示,但是操作flash那一步需要判断时条件达到了 如下代码进入了:
  /* Wait for control register to be written */
  timeout = HAL_GetTick() + Timeout;

  while ((FLASH->SR & FLASH_SR_CFGBSY) != 0x00U)
  {
    if (HAL_GetTick() >= timeout)
    {
      return HAL_TIMEOUT;
    }
  }

Hans.he 回答时间:2021-9-23 14:25:57
xmshao 发表于 2021-9-23 11:53
我用g031基于IAR IDE做了反复测试,结果是这样的:

MDK不是不稳定, 是把把必出现该位置1,不知道ST后续是否会优化处理该问题,同样问题在STM32G4上也有,不过G4没有这个CFGBSY位,则会导致PGAERR,PGSERR两位置1,同样是打断点,没有执行与flash任何相关的代码,我个人怀疑是断点所导致,不过暂时没有定位明白。
xmshao 回答时间:2021-9-23 15:04:58
Hans.he 发表于 2021-9-23 14:25
MDK不是不稳定, 是把把必出现该位置1,不知道ST后续是否会优化处理该问题,同样问题在STM32G4上也有,不 ...

是的,怀疑跟MDK处理端点这个地方有关。
Hans.he 回答时间:2021-9-23 15:31:12
xmshao 发表于 2021-9-23 15:04
是的,怀疑跟MDK处理端点这个地方有关。

不过只是怀疑,没有证明现在
小房 回答时间:2022-7-14 11:10:03
我调了G070和G030都遇到这个叼问题,一直停在这个cfgbsy为1,调试的时候,刚进入主函数都能看到cfgbsy为1,g系列是不是有问题,有时候又没事,但是一旦出现就一直出现,网上找一大堆资料都没用。没有根本的解决办法
小房 回答时间:2022-7-14 11:11:05
小房 发表于 2022-7-14 11:10
我调了G070和G030都遇到这个叼问题,一直停在这个cfgbsy为1,调试的时候,刚进入主函数都能看到cfgbsy为1, ...

有时候上电的时候没问题,软件复位后再操作flash擦除又有问题。都是同样卡死在cfgbsy
leechengsheng 回答时间:2022-9-15 10:43:15
我也遇到这个问题,绕过去的方法有两个:1)不设置断点的,这样这个位不会置位的。当然对于调试不利。2)有设置断点的,进入调试后,需要执行reset CPU。这时再执行,可以看到这个位就没有了。
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版