存储器映射是指把芯片中或芯片外的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的起始地址。
关键字:STM32 存储器 映射详解
引用地址:
STM32的存储器映射详解
推荐阅读最新更新时间:2024-03-16 14:57
STM32引脚JTDO、JNTRST与JTDI作为普通IO口使用配置
使用Jlink向STM32烧录程序时,需要使用6个芯片的引脚(以STM32F103C8T6为例),分别是PB4/JNTRST、PB3/JTDO、PA13/JTMS、PA14/JTCK、PA15/JTDI、NRST。标准的20针JLink接口如下图所示。 当芯片IO口资源比较紧张时,可选择SW模式烧录程序。SWD只需用到PA13/JTMS、PA14/JTCK两根线,NREST可以接可不接,而剩下的PB4/JNTRST、PB3/JTDO和PA15/JTDI就可以当做普通IO使用。但是这三个口当做普通IO使用时需要先配置。配置方法: void GPIOInit(void) { GPIO_InitTypeDef GPIO_Init
[单片机]
STM32串口空闲中断的使用
今天完善了USART串口接收数据函数以及程序,在每个USART外设上都添加了串口空闲中断函数。其步骤如下: 添加总线空闲中断功能的优点: a) 可以准确地判断出串口数据是否接收完毕,不需要额外添加定时器作数据接收完毕超时检测,不仅可以减少了TIM定时器外设 的使用,提高系统性能,而且可以增强程序的可读性(因为使用TIM定时器做超时检测时,需要在TIM定时器中断函数中添加一个 USART_RX_Over的标识符,影响了程序的可读性); 添加总线空闲中断功能的需要注意的地方: a) 在使用串口空闲中断时需要添加读DR位(数据寄存器)空闲中断变量,因为每次触发串口空闲中断时,需要读取对应USART的DR位(数据寄存器)才能清除
[单片机]
stm32 SPI 读取和写入的问题
stm32 SPI的读取和写入和USART 一样需要判断标志位 unsigned char SPI1_ReadWrite(unsigned char writedat) { /* Loop while DR register in not emplty */ while(SPI_I2S_GetFlagStatus(SPI1,SPI_I2S_FLAG_TXE) == RESET); /* Send byte through the SPI1 peripheral */ SPI_I2S_SendData(SPI1, writedat); /* Wait to receive a byte */ while(SP
[单片机]
韩国两半导体巨头秀成绩单,全靠存储器业务
韩联社报道,韩国两大半导体巨头三星电子和SK海力士今年第一季度业绩喜人,有望促半导体产业今年再次成为韩国出口领头羊。下面就随嵌入式小编一起来了解一下相关内容吧。 SK海力士24日发布公告,2018年首季公司销售额为8.7197万亿韩元(约合人民币511亿元),营业利润为4.3673万亿韩元,同比分别增长38.6%和77.0%。三星电子将于26日发布最终核实的今年首季各事业部门业绩,据推测,半导体部门销售额有望达21.1万亿韩元,营业利润达11万亿韩元。两大企业今年首季半导体部门销售额之和约为30万亿韩元,营业利润约为15万亿韩元。 据业界估算,今年全年,三星电子半导体部门的销售额和营业利润有望实现91万亿韩元和47万
[嵌入式]
Smith将成为东芝存储器新任执行总裁
东芝存储器近日宣布,将任命Stacy J. Smith为执行总裁,与CEO Yasuo Naruke全力合作,全面负责公司的业务运营...... 东芝存储器株式会社(Toshiba Memory Corporation)近日宣布,任命Stacy J. Smith为执行总裁,从2018年10月1日生效,将与CEO Yasuo Naruke全力合作,全面负责公司的业务运营。 Smith的领导才能为业界所公认,他为东芝存储器带来了丰富的行政管理经验。 Smith有着广泛的国际任职经历,曾担任英特尔欧洲、中东和非洲地区的首席信息官和销售副总裁。 之前,Smith曾在英特尔(Intel)工作了三十年,负责的业务涉及多
[半导体设计/制造]
stm32怎么用keil软件进行调试
在做开发的前几年,基本上都没用仿真,有bug就尝试改程序,一边改一边调试。 甚至都还不知道硬件仿真存在的价值,因为一直都没用过,而且很多芯片也不支持。 直到有一次在做行车记录仪项目的时候,接触到了GRAIN公司的一款单片机。 本来我打算是直接开干的,但是老大非要我把这个芯片的仿真环境搭好。 于是我就开始网上搜集资料,不得不说这块的资料真少,那时又刚接触仿真这块的。 搞了将近半个月都搞不定,然后我鼓起勇气跟老大说,仿真搞不出来,要不我就直接开始写程序烧录进去调试算了。 但是老大的意思还是希望我把仿真的环境搭建出来,我又试了2个星期,还是不行,于是就不理他了,直接开始写程序调试。 如果没浪费时间研究怎么搭建仿环境,估计我程序都完成40
[单片机]
STM32以太网MAC Loopback的实现
前言 在STM32以太网调试中经常会遇到“设备接收不到数据”,或者“设备发出的数据对端设备收不到”之类的问题。遇到这类问题首先要做的是定位问题发生的部位,这样做的好处就是可以指明下一步调试的方向,缩小分析的范围。以下图为例我们做个简单的说明,设备A和设备B通过以太网通信,现发现设备B无法接收设备A发送的消息,问题可能出现在几个地方: 应用层的程序,或者协议栈出错,数据根本没有到STM32以太网外设。这种情况我们在调试的时候,在以太网输出函数low_level_output中打个断点就可以检查出来。 STM32以太网MAC出现问题,没有把数据发送出去。对于这种情况,可以通过STM32以太网的MAC loopback功能来检查MAC
[单片机]
基于C8051F060单片机和K9F2808UOC存储器实现数据采集系统的设计
从上个世纪九十年代起,电子技术在钻井井下得到应用。但井下钻具的振动会给很多传感器带来不利影响。 特别是对测量井下钻头姿态的惯性导航传感器影响巨大,在随钻振动环境中,如果对信号不作处理,根本就不能测量出正确的井斜角和方位角,也就无法实现井眼轨迹随钻控制的要求。本文介绍应用SoC芯片中的DMA技术对振动的高速采集和存储功能的实现方法,并给出了钻井环境中测试的结果。 1 方法的提出 传统的数据采集方法采用CPU直接控制的方式进行数据采集,数据传送需要经过CPU的中转才能存入存储器,传送速度慢且采集速率受到CPU的限制,极大影响了系统的采样频率,不能满足对振动信号高速采集的要求。而在DMA传送方式下,数据传送不经过CPU,由DMA
[单片机]