STM32(H7)学习记录-10 一些(调试)记录

最近在使用cubeMX(version:6.11.1)的cubeusb,在USB初始化时会出现硬件异常。

如上图,报错的是没有对齐访问内存。

参考了 安富莱论坛的一篇帖子:

石锤内存访问不支持非对齐是否STM32H7的硬件bug - STM32H7 - 硬汉嵌入式论坛 - Powered by Discuz! (armbbs.cn)

H7的TCM以外空间,如
AXI RAM(0x2400 0000),
SRAM1(0x3000 0000),
SRAM2(0x3002 0000),
SRAM3(0x3004 0000),
SRAM4(0x3800 0000),
SDRAM等做非对齐访问都会有硬件异常,而开启Cache就不会有问题。

其次是H7S7系列使用cubeMX+MDK(cubeIDE类似)的方法。

由于H7S7的内部(用户)flash只有64KB,如果多使用几个库(比如,usb库),那么内部flash肯定是不够的,因此,需要使用外部flash 。

既然要使用外部flash就会涉及到烧录算法了,当然,如果使用官方的板子的话,就可以使用官方提供的文件了。这里,我使用的是STM32H7S78-DK 开发板。

首先是RCC配置如下:

MPU配置如下(这里用的是 octal-spi 用的是 XSPI2 对应0x7000 0000):

Flash配置如下:

XSPI2配置如下:

EXTMEM_MANAGER配置如下:

(这里我的Memory2是psram 用的是XSPI1 的 hexa_spi)

注意:此处SBS一定要配置 不然使用 st官方的烧录算法会错误!

在生成文件时,要生成boot + application (extmemloader不生成是因为,我用了官方的flm文件,如果不用的话可以生成,在mdk里面编译一下 会生成一个 flm文件)

在进入MDK后,首先选中BOOT文件,并查看他的 sct文件

注意:这里有个bug ,打开sct后我蓝色框框的数字,目前版本的cubeMX第一次生成是0x0801 0000(因为蓝色框框这个数字代表flash区域大小)。如果不修改的 boot程序就会有问题,所以,要改成0x0001 0000。

一般boot 文件这边不需要修改,直接烧录就行。

然后选中application,也打开sct文件做好相应的分散加载配置。

最后,在烧录这边添加你的flm算法(我用的是st官方提供的)。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值