打印
[技术问答]

华大F460 官方IAP例子问题:无ICG数据

[复制链接]
4409|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ic, iap, boot, HC, rc, AD
华大F460支持IAP升级程序,但一般做IAP程序时都需要做一个bootloader,华大官方也提供了一个IAP demo。

但是这个demo例程会有一个问题:
此demo是基于华大F460官方开发板制作的,官方开发板是使用了外部8M晶振。但到了客户那里,可能不使用外部晶振,使用内部HRC晶振。
那么问题就来了,460 在Flash 0x00000400地址上存储ICG数据(ICG配置,请参考华大编程手册第6章内容)

这个IGC功能是在MCU上电时,硬件读取Flash地址0x0400上的系统配置数据。
其中ICG1存储了HRC上电时是16M RC还是20M的RC。

客户出现的问题是,每次编译bootloader后,系统时钟一会是16M,一会是20M,每次编译后都随机变动。

对比了一下客户的.map文件和官方SDK内例程的.map :
                                                      
            SDK官方例程uart_dma_rx_tx map文件                                                 华大给的IAP hc32f46x_boot程序(bootloader)map文件

会发现在0x00000400地址上,SDK中例子是data区,放入的是默认的ICG数据信息。而华大IAP bootloader 0x000004000地址范围内是代码函数,是code区。
那么MCU上电后从Flash的0x00000400地址开始读ICG数据 设置MCU硬件,SDK内例子没问题,而IAP bootloader 读到的却是code代码数据,这样HRCFREQSEL确定RCH频率的位就变得不确定。

那么确实,华大官方给的IAP demo中boot代码工程是由问题的。

那改怎么做呢?看了一下uart_dma_rx_tx例子工程代码,其中该工程把华大driver中的hc32f46x_icg.c文件加入到了工程参与编译。
请看hc32f46x_icg.c内容:

hc32f46x_icg.c 中把默认的ICG信息map到了0x00000400地址上,而且是data分区(定义成const数组)。

所以根据460 MCU上电后硬件自动读取0x00000400地址上数据 ,把数据加载到初始化配置寄存器 这一操作,我们必须把ICG数据放入到0x00000400地址上。


那么可以参考SDK中例程的方法,直接在keil或其他IDE中添加hc32f46x_icg.c文件,让hc32f46x_icg.c文件参与编译,参与code map。
这样 在程序下载hex的同时,ICG数据 自动下载到了地址0x00000400地址上。

当然,我们可以根据我们的需要,更改hc32f46x_icg.c 各个数据,以便ICG配置适合我们的使用。
华大官方460 IAP例子 bootloader代码中没有加入hc32f46x_icg.c文件:


以上ICG一定要注意添加,而且华大460 IAP demo代码是没有添加ICG的,这个是一个明显的错误。

使用特权

评论回复
沙发
bcrachel| | 2021-9-8 17:23 | 只看该作者
官方demo在ICG区域填充的全FF

使用特权

评论回复
板凳
zhuri_1| | 2021-9-10 11:32 | 只看该作者
你好 能不能分享一下华大官方这个IAP的例子

使用特权

评论回复
地板
martinhu| | 2021-9-10 13:45 | 只看该作者
首先,你能意识到bootload里面需要添加icg配置,已经很好了。
但是icg的配置不一定以icg.c和icg.h的形式被编译,也可能在其他文件中设置。
可能写这个iap例子的,因为涉及到多款芯片,所以把各个型号的icg放在一起了。比如F460的iap例子的bootload工程的这个文件:

使用特权

评论回复
5
前功尽弃| | 2022-1-13 11:33 | 只看该作者
他这个寄存器设计很神奇的,上电复位值是随机的,寄存器又是只读的,那天直接把HRC直接复位关闭了怎么办?

使用特权

评论回复
6
onlycook| | 2022-1-19 16:40 | 只看该作者
华大官方这个IAP的例子分享一个行不行

使用特权

评论回复
7
cliff_w| | 2022-3-31 10:48 | 只看该作者
华大F460官方这个IAP的例子能否分享一下,谢谢(461340270@qq.com

使用特权

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

本版积分规则

342

主题

2359

帖子

4

粉丝