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

stm32h743的DFU模式下STM32CubeProgrammer写入过程卡死

[复制链接]
飞飞shannon 提问时间:2024-9-18 18:21 / 未解决

如下图,在执行到HAL_FLASH_Program过程时,程序会跳入硬件错误,想了解可能是什么原因导致的,以及应该怎么解决

image.png

image.png

uint16_t MEM_If_Write_FS(uint8_t *src, uint8_t *dest, uint32_t Len)
{
  /* USER CODE BEGIN 3 */
  uint32_t i=0;
  printf("MEM_If_Write_FS->src:0x%x\r\n",src);
  printf("MEM_If_Write_FS->dest:0x%x\r\n",dest);
  printf("MEM_If_Write_FS->Len:%d\r\n",Len);
  for(i=0;i< Len; i += 4){
    /*Devicevoltagerangesupposedtobe[2.7Vto3.6V],theoperationwill
    bedonebybyte*/
    if(HAL_FLASH_Program(FLASH_TYPEPROGRAM_FLASHWORD,(uint32_t)(dest+i),*(uint32_t*)(src+i))==HAL_OK){
    /*Checkthewrittenvalue*/
      if(*(uint32_t*)(src+i)!=*(uint32_t*)(dest+i)){
      /*Flashcontentdoesn'tmatchSRAMcontent*/
        printf("Flash content doesn't match SRAM content\r\n");
        return(USBD_FAIL);
      }
    }else{
    /*ErroroccurredwhilewritingdatainFlashmemory*/
      printf("Error occurred while writing data in Flashmemory\r\n");
      return(USBD_FAIL);
    }
  }
  // UNUSED(src);
  // UNUSED(dest);
  // UNUSED(Len);
  printf("MEM_If_Write_FS OK\r\n");

  return (USBD_OK);
  /* USER CODE END 3 */
}
image.png
收藏 评论3 发布时间:2024-9-18 18:21

举报

3个回答
废鱼 回答时间:2024-9-18 19:15:41

把打印的内容屏蔽试试,可能是把要打印的内容擦除了。

飞飞shannon 回答时间:2024-9-19 09:47:45

废鱼 发表于 2024-9-18 19:15
把打印的内容屏蔽试试,可能是把要打印的内容擦除了。

出故障后才加上了打印内容debug,还有没有其他可能呢?单步调试在flash检测的时候报出ECC错误。而且DFU下载失败后读取flash字段发现写入了一些奇怪的数据。

DFU下载失败后flash字段

img_v3_02er_0a7fd109-a72a-479e-9ef2-56ba6b09089g.jpg

正确下载后flash字段

img_v3_02er_0e32dd2d-02a4-486f-b049-aed1cb285cfg.jpg

img_v3_02er_0a7fd109-a72a-479e-9ef2-56ba6b09089g.jpg
废鱼 回答时间:2024-9-19 20:12:25

楼主是自己修改了DFU的代码部分吗?

我测试了一下是正常的,是不是你的代码有一些特殊的内容?

image.png

image.png
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版