STM32H7的flash基础知识


◆ 本章 2.5 小节里面的 Flash 三级读保护是重点,务必要掌握明白。
◆ STM32H743XI 有两个独立的 BANK,一个 BANK 的编程和擦除操作对另一个 BANK 没有任何影响。
但是如果用户应用程序和要擦写的 Flash 扇区在同一个 BANK,在执行擦写操作时,用户应用程序将停止运行,包括中断服务程序。
◆ STM32H7 的两个 Flash BANK 是 256bit 带宽,CPU 访问是采用的两个 64bit AXI 总线。
◆ HAL 库的内部 Flash 编程函数 HAL_FLASH_Program 固定编写 32 字节数据

硬件框图

在这里插入图片描述
通过这个框图,我们可以得到如下信息:
sys_ck 时钟输入
D1 域总线时钟。
po_rst 输入
Power on reset 上电复位。
d1_rst 输入
D1 域系统复位。
flash_it 输出
flash 中断请求输出。
STM32H7 的两个 Flash BANK 是独立的,读写和擦除互补影响,256bit 带宽,CPU 访问是采用的两个64bit AXI 总线。

内部flash框架

关于内部 Flash 的框架,了解以下几个知识点即可:
256bit 为单位,即 32 字节,并且每个单位配 10bit 的 ECC 校验位。正是这个原因要求大家对 Flash进行编程时,必须以 32 字节为单位。
两个独立的 BANK,每个 BANK 有 1MB 容量。并且每个 BANK 的扇区大小固定为 128KB,即 8 个扇区。
在这里插入图片描述
BANK1 的地址范围:0x0800 0000 到 0x080F FFFF。
BANK2 的地址范围:0x0810 0000 到 0x081F FFFF

内部flash的都操作

STM32H7 的内部 Flash 读操作跟内部 RAM 的读操作是一样的,支持 64bit,32bit,16bt 和 8bit,使用比较简单。这里我们重点普及一个知识点,H7 的内部 Flash 在不同主频下需要做的延迟参数:
在这里插入图片描述
对于上面的表格,大家可以看到,当延迟等待设置为 0 的时候,即无等待,单周期访问,速度可以做到
70MHz。增加 1 个 Flash 周期后,访问速度可以做到 140MHz。当增加到 3 个或 4 个 Flash 周期后,最高速度可以做到 225MHz。
了解了这个知识点后,再来看下面的时序,非常具有参考意义:
注:ACLK、ARADDR、ARVALID、RDATA、RVALID 和 RLAST 是 AXI 总线信号。Flash 读和 Flash 数据是 Flash 接口信号。
在这里插入图片描述
关于这个时序要要认识到以下几点:
◆ AXI 总线发起读取信号后,Flash 端等待了 3 个时钟周期(注意延迟三个周期,支持的 Flash 速度),之后连续读取了 4 个 64bit 数据。
◆ 由于 AXI 总线是 64bit 的,所以 1 次读取就可以读出 64bit 数据,连续读取 4 次后,就是 256bit,即 Flash 接口的一组数据,因为 H7 的 Flash 接口带宽是 256bit 的。
◆ 如果不开 Flash Cache 的情况下,连续读可以提升性能。
下面是连续读取 8 个 64bit 数据的时序图,跟连续读取 4 个 64bit 数据基本是一样的,只是多读取了 4 组数据。
在这里插入图片描述

flash读保护(重要)

内部 Flash 支持三级读保护 RDP(read out protection)。
Level 0(无保护)
默认设置,所有读写和擦除操作都可以正常支持。
Level 1 (Flash 连接保护)
可以防止连接调试器时读取 Flash 内容,或者 RAM 中存有恶意获取代码,也是禁止的。因此只要调试器连接芯片,或者从内部 RAM 启动运行代码,都是禁止访问内部 Flash 的。
如果没有检测到从内部 RAM 启动和系统 bootloader 启动且没有连接调试器,对用户 Flash 的读写和擦除操作都是允许的,并且其它安全存储区也是可以访问的。否则是禁止访问的,一旦检测到对 Flash 的读请求,将产生总线错误。
如果将 Level 1 切换到 Level 0 时,用户 Flash 区和安全区域将被擦除。
Level 2(设备保护和自举保护)
所有调试特性被关闭。
禁止从 RAM 启动。
除了选项字节里面的 SWAP 位可以配置,其它位都无法更改。
禁止了调试功能,且禁止了从 RAM 和系统 bootloader 启动,用户 Flash 是可以执行读写和擦除操作的,访问其它安全存储区也是可以的。

  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值