您的位置 首页 主动

STM32的存储器映射详解

存储器映射是指把芯片中或芯片外的FLASH,RAM,外设,BOOT,BLOCK等进行统一编址。即用地址来表示对象。这个地址绝大多数是由厂家规定好的,…

存储器映射是指把芯片中或芯片外的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)。这就导致了,运用该内核的芯片厂家有必要依照这个进行各自芯片的存储器结构设计。

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

图中能够很明晰的看到,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的开端地址。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/zhudong/277481.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部