问题:

1   什么是存储器映射?是怎么一个运作过程?

2   stm32总体架构

3   CM3内核结构

1 STM32系统结构

要想深刻理解STM32的存储器,需要首先知道STM32的系统结构。

如Figure 1,是STM32系统结构框图。

根据STM32 Reference manual (RM0008)中的描述,如图:

可以得知STM32系统结构的组成,每一个模块更为详细的内容,请参考相关文档。

RM0008文档中可以看出,STM32采用的是Cortex-M3内核,因此,有必要了解Cortex-M3的存储器结构。

图中还可以看出,Cortex-M3是通过各个总线和Flash、SROM相连接的。

2 STM32内核(Cortex-M3)的结构

以下是Cortex-M3模块框图:

该Cortex-M3内核通过I-Code、D-Code、System总线与STM32内部的Flash、SROM相连接的,该种连接情况直接关系到STM32存储器的结构组织;也就是说,Cortex-M3的存储器结构决定了STM32的存储器结构。

这里可能说的比较笼统,可以这样理解:Cortex-M3是一个内核,自身定义了一个存储器结构,ST公司按照Cortex-M3的这个存储器定义,设计出了自己的存储器结构;但是ST公司的STM32的存储器结构必须按照Cortex-M3这个定义的存储器结构来进行设计。

举个例子:

我买了一个做饭的调料盒子,有三块区域(假设存储器分为3块),上面分别标有盐(Flash)、糖(SROM)、味精(Peripheral);此时,该调料盒子并没有任何意义(对应Cortex-M3内核);我按照标签放入特定品牌、特定分量的盐(Flash)、糖(SROM)、味精(Peripheral),产生一个有实际意义的调料盒(各类Cortex-M3内核的芯片,如STM32)。

期间,调料位置不能放错,但可以不放。由上面的例子可以看出,空的调料盒子决定了有意义的调料盒子存放调料的结构。因此,只要了解空盒子的存储结构,就可以很清楚的明白当有调料时的用法了。

3 STM32内核(Cortex-M3)的存储器映射

存储器映射是指把芯片中或芯片外的FLASH,RAM,外设,BOOTBLOCK等进行统一编址。即用地址来表示对象。这个地址绝大多数是由厂家规定好的,用户只能用而不能改。用户只能在挂外部RAM或FLASH的情况下可进行自定义。

如图,是Cortex-M3存储器映射结构图。

Cortex-M3是32位的内核,因此其PC指针可以指向2^32=4G的地址空间,也就是0x0000_0000——0xFFFF_FFFF这一大块空间。

好,根据图中描述,Cortex-M3内核将0x0000_0000——0xFFFF_FFFF这块4G大小的空间分成8大块:代码、SRAM、外设、外部RAM、外部设备、专用外设总线-内部、专用外设总线-外部、特定厂商等。导致了,使用该内核的设计者必须按照这个进行各自芯片的存储器结构设计。

这就可以去了解STM32的存储器结构,以及为什么这样设计STM32存储器的结构了。

4 STM32存储器结构

首先,我们对比一下Cortex-M3存储器结构和STM32存储器结构:

图中可以很清晰的看到,STM32的存储器结构和Cortex-M3的很相似,不同的是,STM32加入了很多实际的东西,如:Flash、SRAM等。只有加入了这些东西,才能成为一个拥有实际意义的、可以工作的处理芯片——STM32。

STM32的存储器地址空间被划分为大小相等的8块区域,每块区域大小为512MB。

对STM32存储器知识的掌握,实际上就是对Flash和SRAM这两个区域知识的掌握。因此,下面将重点描述Flash和SRAM的知识。

5 STM32的SRAM

以下是STM32参考手册RM0008中的一段原话:

不同类型的STM32单片机的SRAM大小是不一样的,但是他们的起始地址都是0x2000 0000,终止地址都是0x2000 0000+其固定的容量大小。

SRAM的理解比较简单,其作用是用来存取各种动态的输入输出数据、中间计算结果以及与外部存储器交换的数据和暂存数据。设备断电后,SRAM中存储的数据就会丢失。

6 STM32的Flash

STM32的Flash,严格说,应该是Flash模块。

该Flash模块包括:Flash主存储区(Main memory)、Flash信息区(Information block),以及Flash存储接口寄存器区(Flash memory interface)。

三个组成部分分别在0x0000 0000——0xFFFF FFFF不同的区域,如图(小密度的STM32)所示:

图中完全可以看出Flash模块中的三个组成部分在整个存储器中的位置。

具体的内部区域的意义及功能请参见编程手册PM0042,里面很详细。

7 STM32存储器结构总结

图中淡蓝色就是你需要知道的。

Peripherals:外设的存储器映射,对该区域操作,就是对相应的外设进行操作;

SRAM:运行时临时存放代码的地方;

Flash:存放代码的地方;

System Memory:STM32出厂时自带的你只能使用,不能写或擦除;

Option Bytes:可以按照用户的需要进行配置(如配置看门狗为硬件实现还是软件实现);

今后,你的编写代码、程序运行、寄存器设置、ICP、IAP都依靠这些东西。

以上描述的是STM32存储器的结构相关,其具体存储器的应用在我的下一篇笔记《STM32存储器知识的相关应用(IAP和Bit Banding)》中详细描述。

stm32存储结构 存储器映射相关推荐

  1. ARM的存储器映射与存储器重映射【转载】2009-12-14 10:29最近在用LPC2148,看到了一篇文章,感觉很有帮助,就转了过来。

    ARM的存储器映射与存储器重映射[转载]2009-12-14 10:29最近在用LPC2148,看到了一篇文章,感觉很有帮助,就转了过来. arm处理器本身所产生的地址为虚拟地址,每一个arm芯片内都 ...

  2. 【STM32存储器映射-寄存器基地址-偏移】

    前言 在学习STM32的时候,我们看到很多的寄存器编程, 比方说LED灯: //GPIOB.5端口输出高电平GPIOB->ODR|=1<<5; //PB.5 输出高GPIOE-> ...

  3. STM32 F4 存储结构

    摘自stm32F4参考手册.数据手册.内核权威指南 Cortex M3 M4存储器映射: 地址空间可以通过一种方式分为8个512MB的空间: STM32F4xx寄存器边界地址: STM32F4xx内存 ...

  4. 数据逻辑结构在计算机存储器中的表示称为数据的存储结构

    数据逻辑结构在计算机存储器中的表示称为数据的存储结构(或存储表示),也称为物理结构.通常情况下,同一种逻辑结构可以设计多种存储结构,在不同的存储结构中,实现同一种运算的算法可能不同. 逻辑结构.存储结 ...

  5. STM32学习:存储器组织

    一.存储结构 STM32F1有四种存储单元,依次是SRAM.Flash.FSMC和AHB到APB桥(挂载各种外设). 二.存储组织 程序存储器.数据存储器.寄存器和输入输出端口被组织在同一个4GB的线 ...

  6. STM32寄存器地址名称映射(学习笔记之四)

    单片机的程序编制主要是操作寄存器,而STM32功能更多,对应的寄存器也多,为了更好的管理和使用好寄存器,需要将这些寄存器进行管理和分配.以GPIOA为例:因为 GPIO 都是挂在 APB2 总线之上, ...

  7. 《MYSQL是怎样运行的》笔记|配置文件|系统变量|字符集|InnoDB存储结构|数据页结构|索引结构与使用|数据目录|表空间|连表原理|查询优化|BufferPool|事务|redo与undo|锁

    <MYSQL是怎样运行的>笔记 前记: 历时15天,笔记+看书.完成于2022.2.5. 本书是讲具体的数据库实现,而数据库系统概念见:https://blog.csdn.net/qq_4 ...

  8. c语言线性表链路存储结构运用,哈尔滨工业大学2020年考研854计算机基础考试大纲...

    考研大纲是2020考研学生复习的重要参考资料,它指出了所考科目的大致考试范围,也是考研命题的重要参考依据.2020考研大纲已经陆续公布,包括公共课考试大纲和专业课统考科目考试大纲,而自命题科目考试大纲 ...

  9. 《嵌入式 – GD32开发实战指南》第20章 GD32的存储结构

    开发环境: MDK:Keil 5.30 开发板:GD32F207I-EVAL MCU:GD32F207IK 20.1 GD32存储结构的工作原理 20.1.1 Cortex-M内核的存储器映射 存储器 ...

最新文章

  1. SMOTE算法代码实现-机器学习
  2. 搞科研不如当老师香?南科大助理教授“跳槽”深圳中学当老师
  3. 业界 | 计算芯片革命来临?英伟达谷歌入局紧逼英特尔
  4. 全文搜索引擎有哪些?_搜索引擎工作原理是什么?seo蜘蛛抓取会受到哪些因素影响?...
  5. mysql存储过程详解[转]
  6. python批量删缩进_Python工具PyCharm常用快捷键
  7. 如何用Mybatis分库分表
  8. 网站决策分析软件WebBI
  9. IBM推出可加快响应跨云网络威胁的开放技术 业界首次实现跨安全工具和跨云的搜索威胁功能,无需移动数据
  10. 口令是计算机软件吗,计算机口令密码以对计算机软件编程进行算法加密为特点,是适用于计算机数据保护和网络通信等广泛用途的密码。下列选项中,不属于常见的弱口令密码的是()。...
  11. java 获取 t 的类型_如何获取类型为T的字段的类?
  12. netlink 0005 -- Generic Netlink详解
  13. Android测试点和测试工具介绍
  14. 中国第一代程序员简介与现状
  15. vue项目html5调取手机摄像头录像并上传
  16. AP AUTOSAR ——Diagnostic Management
  17. 计算机服务器排名2015,服务器cpu排行榜
  18. 小学生预习能力培养的策略和方法研究 开题报告
  19. Flex 布局 flex-grow 占用空间
  20. 电商平台“二选一” 最后买单的却是商家和消费者

热门文章

  1. phpcms v9 的表单向导功能的使用方法
  2. border 外边框
  3. tp_link路由器 重新设置
  4. C# 委托(Delegate) 事件(Event)应用详解
  5. 用标准 GHOST镜像xpe系统(EWF保护模式为RAM)时,写保护丢失问题的解决方法
  6. 【数据结构与算法】之深入解析“消除游戏”的求解思路与算法示例
  7. 【数据结构与算法】之深入解析“合并K个升序链表”的求解思路与算法示例
  8. LeetCode 1049. 最后一块石头的重量 II
  9. 题目 1004: [递归]母牛的故事
  10. G6 图可视化引擎——入门教程——使用图布局 Layout