基于STM32F407的flash内存结构分析

发布者:心动旋律最新更新时间:2024-04-30 来源: elecfans关键字:STM32F407  flash  内存结构 手机看文章 扫描二维码
随时随地手机看文章

硬件平台:STM32F4 DISCOVERY开发板 型号:MB997A或MB997C
芯片型号:STM32F405xx, STM32F407xx, STM32F415xx, 或 STM32F417xx


主要参考文档:

(1)PM0081 STM32F40xxx and STM32F41xxx Flash programming manual.pdf
(2)STM32F407 datasheet.pdf

做为嵌入式方面的开发人员,拿到一个芯片后,我们首先看它的参数指标,有多少多少容量的RAM,多少多少容量的Flash。当然,前提是芯片自带这两个模块。
    今天我们只研究Flash的结构:)
(一)声明
    STM32F405xx, STM32F407xx, STM32F415xx, 和 STM32F417xx的Flash模块都是一样的,所以,我们在文章后面统一以STM32F4代表它们。
(二)概览
    首先来一张概览图吧

基于STM32F407的flash内存结构分析

2.1 Main memory
    Main memory部分各个Sector相加最后正合适等于1024Kbyte,这也是与文档开头说的Capacity up to 1 Mbyte相符的。在这个区域里主要是存储我们用户编写的程序,这里你可能看到了,该片存储区地址是从0x08000000开始的,这也就是为什么我们在使用ST-Link2烧写程序的时候,要规定起始地址是0x08000000的原因了。
2.2 System memory
    System memory区域是系统保留区,用来在“System memory boot”模式下启动芯片。存储的是一段特殊的程序,叫做bootloader,通过运行此段区域里的程序,可以对Main memory进行重新烧写。举个栗子,如果我们选择以System memory boot模式启动,同时插上了带有系统固件的U盘,那么经过配置后,bootloader就可以读出U盘里的固件,烧写到Main memory区域里去,怎么样,方便吧!也就是说,给芯片重新烧写固件,可以通过USB OTG FS的方式!神奇的功能:)
2.3 OTP area

基于STM32F407的flash内存结构分析

这段区域更是神奇,OTP是One-time programmable的缩写,从字面上可以看出来,此段区域是一次性编程区。但是,机智的人类也有犯错误的时候,万一写错了怎么办!ST公司考虑到这一点,在从0x1FFF7A00地址开始的16个字节是带有“锁”功能的字节,当你确定OTPx区域写进去的数据确实没有错误了,你就可以对LOCKBx地址写入0x00,从此OTPx区域就没法更改了。

2.4 Option bytes
官方文档应该写错了吧,0x1FFFC000-0x1FFFC00F怎么会是16Kbytes呢?应该是16bytes才对吧。


关键字:STM32F407  flash  内存结构 引用地址:基于STM32F407的flash内存结构分析

上一篇:总线舵机是什么?基于STM32的单线串口通信
下一篇:STM32F030 ADC DMA乱序问题

推荐阅读最新更新时间:2026-03-22 19:02

基于STM32F407 HAL库的Flash编程操作
flash的初始化,解锁flash和清除一些flash的异常状态标识 uint16_t MEM_If_Init_FS(void) { HAL_FLASH_Unlock(); __HAL_FLASH_CLEAR_FLAG(FLASH_FLAG_EOP | FLASH_FLAG_OPERR | FLASH_FLAG_WRPERR | FLASH_FLAG_PGAERR | FLASH_FLAG_PGPERR | FLASH_FLAG_PGSERR); } uint16_t MEM_If_DeInit_FS(void) { HAL_FLASH_Lock(); } flash
[单片机]
STM32F407 Flash操作笔记
简述 STM32F4XX的闪存擦除方式分为两种:扇区擦除(最小单元16K)和整片擦除。在实际应用中,为满足重要信息的存储,需将信息存入FLASH中,针对以上两种擦除方式,扇区擦除更符合实际的需要。 参考手册: 写FLASH操作 经过以上五个步,就可以擦除某个扇区。但是实际运用过程中,一个扇区只存储一个信息或标志,会造成资源严重浪费。现采用缓存的方式,先读取当下扇区的数据,将读取的数据和要写入的数据组合,待擦除后再次写入。 代码片 写FLASH操作 /* * WriteAddr: 起始地址 (u32)address 是 4 的整数倍, (u32)data * pBuffer: 数据指针
[单片机]
<font color='red'>STM32F407</font> <font color='red'>Flash</font>操作笔记
ARM体系结构下面内存和i/o映射区别
(1)关于IO与内存空间: 在X86处理器中存在着I/O空间的概念,I/O空间是相对于内存空间而言的,它通过特定的指令in、out来访问。端口号标识了外设的寄存器地址。Intel语法的in、out指令格式为: IN 累加器, {端口号│DX} OUT {端口号│DX},累加器 目前,大多数嵌入式微控制器如ARM、PowerPC等中并不提供I/O空间,而仅存在内存空间。内存空间可以直接通过地址、指针来访问,程序和程序运行中使用的变量和其他数据都存在于内存空间中。 即便是在X86处理器中,虽然提供了I/O空间,如果由我们自己设计电路板,外设仍然可以只挂接在内存空间。此时,CPU可以像访问一个内存单
[单片机]
可应用三维存储结构PCM的高集成NAND型相变内存方案
日本中央大学理工学部电气电子信息通信工学科教授竹内健等人的研发小组提出了NAND型相变内存(Phase Change Memory:PCM)方案,并在2012年5月20~23日于意大利米兰举行的“International Memory Workshop(IMW)”上发表。这种内存的选择元件采用多晶硅MOS晶体管,这样就可以采用无需触点的简洁式NAND型闪存的存储器单元结构,理论上,存储器单元的面积可降至4F2,而且还可以减少工序数。竹内教授认为,该技术可应用于以“BiCS(Bit-Cost Scalable)”为代表的“采用三维存储器单元结构的PCM等”(竹内)。   传统PCM采用的RAM接口,存在RESET时间在10ns级
[模拟电子]
MCS-51单片机内部程序存储器ROM结构详解
MCS-51单片机的程序存储器用于存放编好的程序和表格常数。8051片内有4 KB的ROM,8751片内有4 KB的EPROM,8031片内无程序存储器。 MCS-51的片外最多能扩展64 KB程序存储器,片内外的ROM是统一编址的。如端保持高电平,8051的程序计数器PC在0000H~0FFFH地址范围内 (即前4 KB地址) 是执行片内ROM中的程序,当PC在1000H~FFFFH地址范围时,自动执行片外程序存储器中的程序;当保持低电平时,只能寻址外部程序存储器,片外存储器可以从0000H开始编址。 MCS-51的程序存储器中有些单元具有特殊功能,使用时应予以注意。 其中一组特殊单元是0000H~0002H。系统复位后,(
[单片机]
MCS-51单片机内部数据存储器RAM结构详解
内部数据存储器低128单元 8051单片机的内部RAM共有256个单元,通常把这256个单元按其功能划分为两部分:低128单元(单元地址00H~7FH)和高128单元(单元地址80H~FFH)。如图所示为低128单元的配置图。 寄存器区 8051共有4组寄存器,每组8个寄存单元(各为8),各组都以R0~R7作寄存单元编号。寄存器常用于存放操作数中间结果等。由于它们的功能及使用不作预先规定,因此称之为通用寄存器,有时也叫工作寄存器。4组通用寄存器占据内部RAM的00H~1FH单元地址。 在任一时刻,CPU只能使用其中的一组寄存器,并且把正在使用的那组寄存器称之为当前寄存器组。到底是哪一组,由程序状态字寄存器PSW中RS1
[单片机]
MCS-51单片机内部数据存储器<font color='red'>RAM</font><font color='red'>结构</font>详解
STM32F407 ADC 模式详解:单次转换、连续转换、扫描模式、非扫描模式
前言 在 STM32F407 中,ADC(模数转换器)模块常用于采集模拟信号,比如读取光敏电阻、电压、电流、温度传感器等。STM32 的 ADC 模式较多,初学者常常会混淆: 单次转换和连续转换的区别 扫描模式和非扫描模式分别用于什么场景 本篇文章将全面讲解 STM32F407 中 ADC 的四种核心工作模式,带你从概念到应用搞懂它们的配置和组合。 一、ADC 模式分类总览 STM32F407 的 ADC 模式可以从两个维度理解: 分类方向 模式名称 功能说明 转换行为 单次转换模式 转换一次即停止,不自动继续 连续转换模式 一次启动后自动不断采样 通道采样方式 扫描模式 支持多个通道依次采样
[单片机]
freeRTOS V10.0.1移植到STM32F407标准库 - 环境Keil5
最近因为工作需要用到FreeRTOS,其实开始本人内心是拒绝的因为自己只学习过UCOSIII还没实际上过什么大又复杂的工程,但是谁让FreeRTOS他是Free的呢公司成本考虑肯定是不会选择USOS的,这个道理就像公司内心深处不想给你涨工资一样。好了跑偏了言归正传,既然要用自然是要熟悉一下这个实时操作的内核的工作过程了,说道到里想起来自己当初学USOC时是把代码几乎进行了逐行的走读,最后因为各种原因都没能实际使用最后还是忘记了,所以我建议对于这一类的操作系统的学习还是重在API函数的用法学习上,不需要太对代码集体实现细节进行研究,时间成本高有这个时间建议移植一个系统进行一些应用实践是最有实际效果的。因此我现在就在践行自己的经验移植
[单片机]
freeRTOS V10.0.1移植到<font color='red'>STM32F407</font>标准库 - 环境Keil5
小广播
最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

厂商技术中心

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2026 EEWORLD.com.cn, Inc. All rights reserved