硬汉嵌入式论坛

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

[STM32H7] stm32H7A3ZG芯片的内存问题

[复制链接]

17

主题

84

回帖

135

积分

初级会员

积分
135
QQ
发表于 2022-5-12 14:11:58 | 显示全部楼层 |阅读模式
本帖最后由 linminghui 于 2022-5-12 14:36 编辑

前两天在H7A3芯片上做BOOT升级程序的时候,沿用了之前F767的FLASH操作方案,即将bank1(1MB)划分为两个部分,前半部分(0x08000000~0x0807FFFF)做BOOT、后半部分(0x080080000~0x081FFFFF)做APP。后来偶然在看芯片手册的时候发现,H7A3ZG这一款芯片只1M大小,bank1(0x08000000~0x0807FFFF)、bank2(0x08100000~0x0817FFFF)地址不连续,分别占了一半。
FLASH_MEMORY.png
那么我FLASH操作的时候是如何写到了不存在的地址呢(0x080080000~0x081FFFFF)?而且可以从编译器中读到对应地址的数据确实被修改了?
所以我打开STM32CubeProgrammer看了一下芯片的扇区,发现了一个更奇怪的问题:软件显示这一款芯片有256个扇区,每个扇区8K大小。那岂不是说这个芯片的存储有2M大小?这跟手册上写的明显矛盾了,在仔细一看发现了64-125扇区(0x080080000~0x081FFFFF)出现了两次。
在进行FLASH操作时候可以操作 0x080080000~0x081FFFFF 这段地址,说明这部分内存是真实存在的,那么我为什么没有在手册中标出来呢?软件有为什么会显示有两个64-124扇区呢?
带着这些问题,我问了一下ST的代理,他也很疑惑就问了原厂。
最后得到一个可能:这部分内存确实是存在的,不过厂商在生产的时候没有做过检测,或者是不保证这段内存能一直保证正常,所以没写到手册里面。不过他们手上没有可用的开发板验证。至于为什么STM32CubeProgrammer软件会读到255个扇区就不知道了。

后面改成使用手册上标注的地址范围,不过还有BOOT跳转时好时坏的问题。就连跳转回BOOT起始也是。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2022-5-12 14:31:08 | 显示全部楼层
这种的基本都是程序问题。
回复

使用道具 举报

17

主题

84

回帖

135

积分

初级会员

积分
135
QQ
 楼主| 发表于 2022-5-12 14:42:07 | 显示全部楼层
有时候可以正常跳转、有时候有不行。走完跳转如果不行。连编译器都会卡住。尝试用BOOT跳转BOOT的来测试是哪一部分的问题,发现往往是前几次跳转后正常,然后一次跳转后卡死了。
BOOT跳转BOOT都不行的话基本可以排除是FLASH操作的问题了。
附上跳转的代码。
JumpTo.png

回复

使用道具 举报

17

主题

84

回帖

135

积分

初级会员

积分
135
QQ
 楼主| 发表于 2022-5-13 14:48:37 | 显示全部楼层
自己解决了,是sdram的问题,在跳转之前把SDRAM驱动复位一下就可以了,不过是什么原因不清楚
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106959
QQ
发表于 2022-5-14 09:58:08 | 显示全部楼层
linminghui 发表于 2022-5-13 14:48
自己解决了,是sdram的问题,在跳转之前把SDRAM驱动复位一下就可以了,不过是什么原因不清楚

正常操作下,跳转前,所有BOOT里面初始化的外设都要做个DeInit操作才能提供一个干净的环境。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-11 20:58 , Processed in 0.317387 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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