硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5291|回复: 20
收起左侧

[开发工具] 被血虐了一晚上,锁定IAR8.3下载STM32H7的V版硬件芯片的下载算法有bug

  [复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106520
QQ
发表于 2020-11-2 13:33:14 | 显示全部楼层 |阅读模式
测试条件:
STM32H743 V版硬件
CMSIS软件包V5.7.0
HAL库版本V1.9.0

测试说明:
1、MDK下载STM32H7的V版硬件芯片现象是无法正常下载,需要使用最新的MDK STM32H7软件包里面带的下载算法,推荐用当前最新的V2.7.0
2、IAR比较狠,不会提示调试下载失败,而且随机在某个地方失败:

QQ截图20201102133426.png

正常情况下,那个变量uwTickFreq应该是1才对,下载到Y版芯片就没有问题,下载到V版这个变量随机变化。

用J-Flash和STM32CubeProg下载了几次IAR生成的Hex文件,都正常,基本锁定是IAR下载算法的bug。

总结解决办法:
解决办法一:
升级最新版的IAR8.50看看是否还有这种bug。

解决办法二:
注释掉下面代码里面的Error_Handler(__FILE__, __LINE__);

  1. ret = HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_4);
  2. if(ret != HAL_OK)
  3. {
  4.      Error_Handler(__FILE__, __LINE__);
  5. }
复制代码


解决办法三:

变量uwTickFreq默认是在stm32h7xx_hal.c里面定义的,作为全局变量赋值的:

一般这种用法在MDK和IAR上是不会出错了,而这次在V版芯片偏偏就出错了。

  1. /** @defgroup HAL_Exported_Variables HAL Exported Variables
  2.   * @{
  3.   */
  4. __IO uint32_t uwTick;
  5. uint32_t uwTickPrio   = (1UL << __NVIC_PRIO_BITS); /* Invalid PRIO */
  6. HAL_TickFreqTypeDef uwTickFreq = HAL_TICK_FREQ_DEFAULT;  /* 1KHz */
复制代码

考虑在main函数里面最开始赋初值也可以解决。

  1. /*
  2. *********************************************************************************************************
  3. *        函 数 名: main
  4. *        功能说明: c程序入口
  5. *        形    参: 无
  6. *        返 回 值: 错误代码(无需处理)
  7. *********************************************************************************************************
  8. */
  9. int main(void)
  10. {
  11.        uwTickFreq = HAL_TICK_FREQ_DEFAULT;
  12.    
  13.         bsp_Init();                /* 硬件初始化 */
  14.         
  15.         PrintfLogo();        /* 打印例程名称和版本等信息 */

  16.         DemoSpiFlash();   /* QSPI Flash测试 */
  17. }
复制代码




回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106520
QQ
 楼主| 发表于 2020-11-2 13:36:45 | 显示全部楼层
就这么一个问题,昨晚真是虐死我了,主要是昨晚1点多了,太闹心了。周报还没有发,越搞越着急。
回复

使用道具 举报

36

主题

2039

回帖

2147

积分

至尊会员

积分
2147
发表于 2020-11-2 15:51:39 | 显示全部楼层
这种问题真的防不胜防
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

608

主题

3040

回帖

4884

积分

至尊会员

积分
4884
发表于 2020-11-2 16:49:42 | 显示全部楼层
eric2013 发表于 2020-11-2 13:36
就这么一个问题,昨晚真是虐死我了,主要是昨晚1点多了,太闹心了。周报还没有发,越搞越着急。


这种问题真的防不胜防

我目前使用 iar 仿真时,貌似连接 仿真器速度贼慢,大概需要 2分钟左右才能够连接上仿真器

使用 mdk 连接仿真器仿真速度是蛮快的,不知道 iar 连接仿真器 的程序里面增加了什么鬼东东啊

??
回复

使用道具 举报

24

主题

70

回帖

142

积分

初级会员

积分
142
发表于 2020-11-2 21:43:33 | 显示全部楼层
可能是icf文件有变化,很多变量类似__no_init __IO uint32_t uwTick;放到了do not initialize { section .noinit };中,这样这个变量开始就是个随机数了
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106520
QQ
 楼主| 发表于 2020-11-3 09:24:34 | 显示全部楼层
hpdell 发表于 2020-11-2 16:49
这种问题真的防不胜防

我目前使用 iar 仿真时,貌似连接 仿真器速度贼慢,大概需要 2分钟左右才能够 ...

IAR进入8.x后,进入调试状态也卡卡的,这个没有7.x好使了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106520
QQ
 楼主| 发表于 2020-11-3 09:24:59 | 显示全部楼层
utyang 发表于 2020-11-2 21:43
可能是icf文件有变化,很多变量类似__no_init __IO uint32_t uwTick;放到了do not initialize { section .n ...

icf文件我没动过,这个倒是没影响。
一直用的8.30里面的老文件。
回复

使用道具 举报

4

主题

46

回帖

58

积分

初级会员

积分
58
发表于 2020-11-3 11:55:39 | 显示全部楼层
hpdell 发表于 2020-11-2 16:49
这种问题真的防不胜防

我目前使用 iar 仿真时,貌似连接 仿真器速度贼慢,大概需要 2分钟左右才能够 ...

你看看你的IAR设置的JLINK时钟是AUTO还是固定的,我是AUTO模式经常性失败,改定固定的就好点
回复

使用道具 举报

608

主题

3040

回帖

4884

积分

至尊会员

积分
4884
发表于 2020-11-3 14:48:03 | 显示全部楼层
dengxiaojundink 发表于 2020-11-3 11:55
你看看你的IAR设置的JLINK时钟是AUTO还是固定的,我是AUTO模式经常性失败,改定固定的就好点

我设置的是固定的,最大 <= 10MHz 的速度
回复

使用道具 举报

333

主题

2031

回帖

3035

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3035
发表于 2020-11-3 15:56:04 | 显示全部楼层
软件规模庞大后,各种问题搞死人啊。。。会不会你这个芯片有问题,被人改标了的?
回复

使用道具 举报

24

主题

70

回帖

142

积分

初级会员

积分
142
发表于 2020-11-4 08:29:58 | 显示全部楼层
群主你的IAR下载算法搞定了吗?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106520
QQ
 楼主| 发表于 2020-11-4 08:41:02 | 显示全部楼层
caicaptain2 发表于 2020-11-3 15:56
软件规模庞大后,各种问题搞死人啊。。。会不会你这个芯片有问题,被人改标了的?

如果是之前的Y版那就更不该有问题了。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106520
QQ
 楼主| 发表于 2020-11-4 08:41:45 | 显示全部楼层
utyang 发表于 2020-11-4 08:29
群主你的IAR下载算法搞定了吗?

不做IAR的下载算法了。

仅做MDK和STM32CubeProg的。
回复

使用道具 举报

3

主题

38

回帖

47

积分

新手上路

积分
47
发表于 2020-11-4 08:57:28 | 显示全部楼层
赞一个,感觉这个修改很实用
回复

使用道具 举报

24

主题

70

回帖

142

积分

初级会员

积分
142
发表于 2020-11-4 09:28:31 | 显示全部楼层
MDK的下载算法源码能给个链接吗?工程是不是基于HAL的?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106520
QQ
 楼主| 发表于 2020-11-4 09:39:53 | 显示全部楼层
utyang 发表于 2020-11-4 09:28
MDK的下载算法源码能给个链接吗?工程是不是基于HAL的?


基于HAL的,这周发不了,下周就会发。

最晚下周。
回复

使用道具 举报

3

主题

14

回帖

23

积分

新手上路

积分
23
发表于 2020-11-12 16:20:11 | 显示全部楼层
eric2013 发表于 2020-11-2 13:36
就这么一个问题,昨晚真是虐死我了,主要是昨晚1点多了,太闹心了。周报还没有发,越搞越着急。

   之前让你帮我远程看的时候就有这个问题了,只是我没有注意,有时候就莫名其妙好了,当时没有找到原因,也是困扰了我很长时间的
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106520
QQ
 楼主| 发表于 2020-11-12 17:14:09 | 显示全部楼层
zzkstm32 发表于 2020-11-12 16:20
之前让你帮我远程看的时候就有这个问题了,只是我没有注意,有时候就莫名其妙好了,当时没有找到原 ...

IAR的这个问题的确是太坑了。
回复

使用道具 举报

29

主题

97

回帖

184

积分

初级会员

积分
184
发表于 2020-12-1 16:53:31 | 显示全部楼层
IAR 下载算法 有没有大佬搞成的, 参考安装目录里的参考搞了两天还是不成功,老是下完内部,下外部就会死机,转圈圈
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106520
QQ
 楼主| 发表于 2020-12-1 17:08:02 | 显示全部楼层
wgp2590 发表于 2020-12-1 16:53
IAR 下载算法 有没有大佬搞成的, 参考安装目录里的参考搞了两天还是不成功,老是下完内部,下外部就会死机 ...

IAR的不做了。
回复

使用道具 举报

0

主题

4

回帖

4

积分

新手上路

积分
4
发表于 2021-3-3 01:46:23 | 显示全部楼层


硬汉哥不做IAR下载算法,就只能换MDK的环境
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-23 19:52 , Processed in 0.297267 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表