0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32的存储器映射详解

MCU开发加油站 来源:未知 作者:邓佳佳 2018-03-23 15:24 次阅读

存储器映射是指把芯片中或芯片外的FLASH,RAM,外设,BOOT,BLOCK等进行统一编址。即用地址来表示对象。

这个地址绝大多数是由厂家规定好的,用户只能用而不能改。用户只能在挂外部RAM或FLASH的情况下可进行自定义。

Cortex-M3支持4GB的存储空间,它的存储系统采用统一编址的方式; 程序存储器、数据存储器、寄存器被组织在4GB的线性地址空间内,以小端格式(little-endian)存放。由于Cortex-M3是32位的内核,因此其PC指针可以指向2^32=4G的地址空间,也就是0x0000_0000——0xFFFF_FFFF这一大块空间。见图1:

图1:Cortex-M3的存储器映射

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

图2:Cortex-M3与中密度stm32的存储器映射对比

图2中可以很清晰的看到,STM32的存储器结构和Cortex-M3的很相似(这是因为stm32本来就是按照cortex_m3内核来设计硬件的),不同的是,STM32加入了很多实际的东西,如:Flash、SRAM等。只有加入了这些东西,才能成为一个拥有实际意义的、可以工作的处理芯片——STM32。STM32的存储器地址空间被划分为大小相等的8块区域,每块区域大小为512MB(如:0x20000000~0x40000000)。对STM32存储器知识的掌握,实际上就是对Flash和SRAM这两个区域知识的掌握。

不同类型的STM32单片机的SRAM大小是不一样的,但是他们的起始地址都是0x2000 0000,终止地址都是0x2000 0000+其固定的容量大小。SRAM的理解比较简单,其作用是用来存取各种动态的输入输出数据、中间计算结果以及与外部存储器交换的数据和暂存数据。设备断电后,SRAM中存储的数据就会丢失。

STM32的Flash,严格说,应该是Flash模块。三个分区的称呼与datasheet保持一致。该Flash模块包括:

Flash主存储区(Main memory)Flash:存放代码的地方,如图2中的FLASH区域:128KB(0x08000000~0x0801ffff)(不同容量的Flash终止地址不同);

Flash信息区(Information block),该区域又可以分为Option Bytes和System Memory区域;

System Memory:STM32在出厂时,已经固化了一段程序在System memory(medium-density devices的地址为:0x1FFF_F000,大小为2KB)存储器中。这段程序就是一个固定好的,并且没法修改的Boot Loader(见编程手册PM0042这种描述)。

Option Bytes:可以按照用户的需要进行配置(如配置看门狗硬件实现还是软件实现);该区域除了互联型所用型号地址都一样:(0x1fff_f000~0x1fff_f80f)图中终止地址有误:应为0x1fff_f80f,正好16个字节。

Flash存储接口寄存器区(Flash memory interface),用于片上外设。是图2中从0x40000000开始的PERIPHERALS区域。也称作外设存储器映射,对该区域操作,就是对相应的外设进行操作。

根据STM32的内存映射图,在代码区,0x00000000地址为启动区,上电以后,CPU从这个地址开始执行代码。0x08000000是用户FLASH的起始地址,0x20000000是SRAM的起始地址。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储器
    +关注

    关注

    38

    文章

    7120

    浏览量

    161925
  • 存储
    +关注

    关注

    12

    文章

    3847

    浏览量

    84639
  • STM32
    +关注

    关注

    2239

    文章

    10665

    浏览量

    348518

原文标题:STM32的存储器映射详解

文章出处:【微信号:mcugeek,微信公众号:MCU开发加油站】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    ARM的存储器映射存储器重映射

    利用芯片内的存储器,因此我们要知道存储器的地址,即物理地址,所以虚拟地址和物理地址之间必然存在一定的转换关系,这就是映射。把虚拟地址按照某种规则转换成物理地址的方法就为存储器
    发表于 03-24 11:57

    stm32存储结构& 存储器映射

    问题: 1 什么是存储器映射?是怎么一个运作过程?2 Stm32总体架构3CM3内核结构1 STM32系统结构 要想深刻理解STM32
    发表于 08-14 09:22

    【精选】STM32存储器映射详解

    存储stm32单片机非常重要的一个单元,它到底是怎么映射的呢?见附件。
    发表于 03-03 12:43

    STM32存储器映像

    与时钟概述3.2.6.STM32的时钟框图详解第二部分、章节介绍3.2.1.STM32存储器映像 本节讲述STM32
    发表于 08-20 06:06

    存储器映射介绍

    以下均以STM32F429IGT6为例一、存储器映射存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程就称为
    发表于 08-20 06:29

    浅析STM32F103处理内部存储器结构及映射

    STM32F103处理内部存储器结构及映射   STM32F103存储器映像为预定义形式,严格
    发表于 12-09 07:51

    存储器映射与寄存映射的原理分别是什么

    一定编码规则分配地址的行为。值得注意,存储器映射一般是由产家规定,用户不能随意更改。图2 STM32芯片存储器映射注1
    发表于 12-20 08:17

    STM32存储器映像的相关资料

    第一部分、章节目录3.2.1.STM32存储器映像13.2.2.STM32存储器映像23.2.3.STM32的位带操作
    发表于 12-30 08:11

    存储器映射是什么意思

    存储器本身不具有地址信息,它的地址是由芯片厂商或用户分配,给存储器分配地址的过程称为存储器映射,如果再分配一个地址就叫重映射
    发表于 01-20 08:21

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

    什么是存储器映射?是怎么一个运作过程?stm32的总体架构是由哪些部分组成的?
    发表于 01-21 06:09

    存储器映射是什么意思

    存储器映射是什么意思?其映射过程是怎样的?
    发表于 01-21 07:39

    一文详解存储器映射与寄存映射

    什么叫存储器映射呢?什么是寄存?寄存映射又是什么呢?
    发表于 01-21 07:45

    STM32F7系统架构和存储器映射

    STM32 F7 概述• STM32总线架构和存储器映射• 总线架构• 存储器映射• Cache
    发表于 09-08 06:53

    STM32F7技术培训1:存储器映射

    STM32F7技术培训1--系统架构_存储器映射
    的头像 发表于 07-02 10:30 3802次阅读

    STM32(F407)—— 存储映射存储器重映射

    和I/O端口都在同一个线性的4 GB(Cortex-M4的地址总线宽度是32位的,最大地址为 0xFFFF FFFF)的地址空间之内。1. 存储器映射在明白什么是存储器映射前,我们需要
    发表于 12-04 13:51 13次下载
    <b class='flag-5'>STM32</b>(F407)—— <b class='flag-5'>存储</b>区<b class='flag-5'>映射</b>和<b class='flag-5'>存储器重映射</b>