STM32存储器映射

发布者:本人在最新更新时间:2018-06-04 来源: eefocus关键字:STM32  存储器映射 手机看文章 扫描二维码
随时随地手机看文章

1、Cortex-M3存储器映射

CM3的地址空间有4G,但它只对这4G空间作了预先的定义,把4G空间分成8个块,每块大小为512M,并指出各段该分给哪些设备。具体的实现由芯片厂商决定,厂商可以设计出具有自己特色的产品。下图是CM3的存储器映射图(来自CM3权威指南)。


内部SRAM 区的大小是512MB,用于让芯片制造商连接片上的SRAM,这个区通过系统总线来访问。在这个区的下部,有一个1MB 的位带区,该位带区还有一个对应的32MB 的 “位带别名(alias)区”,容纳了8M 个“位变量”(对比8051 的只有128 个位)。位带区对应的是最低的1MB 地址范围,而位带别名区里面的每个字对应位带区的一个比特。位带操作只适用于数据访问,不适用于取指。通过位带的功能,可以把多个布尔型数据打包在单一的字中,却依然可以从位带别名区中,像访问普通内存一样地使用它们。位带别名区中的访问操作是原子的,消灭了传统的“读-改-写”三步曲。

地址空间的另一个512MB 范围由片上外设(的寄存器)使用。这个区中也有一条32MB的位带别名,以便于快捷地访问外设寄存器。例如,可以方便地访问各种控制位和状态位。要注意的是,外设内不允许执行指令。

还有两个1GB 的范围,分别用于连接外部RAM 和外部设备,它们之中没有位带。两者的区别在于外部RAM 区允许执行指令,而外部设备区则不允许。

最后还剩下0.5GB 的隐秘地带,CM3 内核的闺房就在这里面,包括了系统级组件、内部私有外设总线s、外部私有外设总线s、以及由提供者定义的系统外设。私有外设总线有两条:
        AHB 私有外设总线,只用于CM3 内部的AHB 外设,它们是:NVIC, FPB, DWT 和ITM。
        APB 私有外设总线,既用于CM3 内部的APB 设备,也用于外部设备(这里的“外部”是对内核而言)。CM3 允许器件制造商再添加一些片上APB 外设到APB 私有总线上,它们通过ABP 接口来访问。
NVIC 所处的区域叫做“系统控制空间(SCS)”,在SCS 里的还有SysTick、MPU 以及代码调试控制所用的寄存器,如下图所示


最后,未用的提供商指定区也通过系统总线来访问,但是不允许在其中执行指令。
CM3 中的MPU 是选配的,由芯片制造商决定是否配上。

上述的存储器映射只是个粗线条的模板,半导体厂家会提供更展开的图示,来表明芯片中片上外设的具体分布,RAM 与ROM 的容量和位置信息。

2、STM32的存储器映射

从STM32 datasheet上来看,不同的型号,其存储器映射有些不同。应该是以小容量、中容量、大容量来区别的,同一个容量的不同型号,其Flash、SRAM也有所不同,FSMC也不同。下面以STM32F103xx为例分别介绍之,以下数据均来自datasheet及STM32参考手册。

2.1 小容量STM32F103x4、STM32F103x6存储器映射图



2.2 中容量STM32F103x8、STM32F103xB存储器映射图


3.3 大容量STM32F103xC、STM32F103xD、STM32F103xE存储器映射图


总结:上面三幅图中红色字标明了同种容量的芯片的SRAM和Flash大小,不同容量的芯片其外设不一样,但同一外设对应地址是一样的,如果没有相应外设,该地址则保留。拿TIM来说,大容量有TIM2-TIM7,而小容量只有TIM2和TIM3,但它们(TIM2、TIM3)映射的地址却相同,小容量中向上多出的空间则保留,因此RTC在各容量芯片上对应的起始地址都是0X4000 2800。同理SRAM和Flash也是一样。


2.4 SRAM

STM32F10xxx内置了最多为64K的SRAM,它可以以字节、半字(16位)或全字(32位)访问。SRAM的起始地址是0X2000 0000


2.5 Flash

STM32F10xxx内置了最多为512的Flash,其组织结构根据容量的不同而有所不同,如下所示:

闪存的指令和数据访问都是通过AHB总线完成的,预取模块是用于通过ICode总线读取指令的,仲裁是作用在闪存接口,并且DCode总上的数据访问优先。

对于编程和擦除,闪存编程一次可以写入16位(半字),闪存擦除操作可以按页面擦除或完全擦除(全擦除)。全擦除不影响信息块。为了确保不发生过度编程,闪存编程和擦除控制器是由一个固定的时钟控制的。写操作(编程或擦除)结束时可以触发中断,仅当闪存控制器接口时钟开启时,此中断可以用来从WFI模式退出。

小容量芯片



中容量芯片



大容量芯片


关键字:STM32  存储器映射 引用地址: STM32存储器映射

上一篇:STM32芯片命名
下一篇:STM32F1(Cortex M3内核)存储器映射

推荐阅读最新更新时间:2024-03-16 16:04

STM32 启动代码选择以及每块字节数
● 小容量产品是指闪存存储器容量在16K 至32K 字节之间的STM32F101xx、STM32F102xx和 STM32F103xx微控制器。 对应后缀ld ● 中容量产品是指闪存存储器容量在64K 至128K字节之间的STM32F101xx、STM32F102xx 和STM32F103xx微控制器。 对应后缀md ● 大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx 微控制器。对应后缀hd 闪存存储器容量在768K至1m字节之间的STM32F101xx和STM32F103xx 微控制器。对应后缀xl ● 互联型产品是STM32F105xx和STM32F107xx微控制器。
[单片机]
SBUS无线遥控STM32解码
老规矩,先上效果,这是基于STM32F103C8T6解码出来的效果,遥感对应的是每个通道的值,一个遥感相当于对应4个数据通道,两个就是对应8个数据通道,而按钮则是最后一个通道,其它的通道是作为整个协议的备用通道,不同的遥控,实际能用的通道数不一样。 说明:部分程序和资料整理于网络平台,由于时间久远,找不到原始发文地址,这里向贡献这些资料的大佬们致敬 。 SBUS协议: SBUS是FUTABA提出的舵机控制总线,全称Serial Bus,别名S-BUS或SBUS,也称 Futaba SBUS。它就是基于串口反电平逻辑的传输方式。 通信接口:USART(TTL) 通信参数设置:100Kps, 8E2(8位数据位,偶校验,2
[单片机]
SBUS无线遥控<font color='red'>STM32</font>解码
STM32生态系统—SBSFU原理介绍
安全启动,构建信任链 安全启动,作为信任根 安全启动,和用户应用一样,都是一段代码,放在片上的用户闪存中 复位后运行的代码只能是这段“安全启动” 这段“安全启动”代码,由用户开发,设备出厂后不能再修改 安全启动,如何认证下一阶段代码 “安全启动”代码,检查应用代码的签名,核实(广义的) “message integrity” 消息认证 安全启动,如何认证下一阶段代码 “安全启动”代码,检查应用代码的签名,核实(广义的) “message integrity” 签名以应用代码元数据//Meta data的形式提供 签名//元数据 是如何生成的 签名//元数据 是如何被校验的 安全固件更新
[单片机]
<font color='red'>STM32</font>生态系统—SBSFU原理介绍
基于STM32的电池管理系统触摸屏设计方案
  引 言   电动车一直以清洁环保而备受关注,加上能源危机加剧、油价不断上涨,电动车也越来越受到用户的青睐。电动车一般采用锂电池供电,由多个单体电池串联成电池组作为动力电源。但由于各个串联单体电池特性不能保证完全一致,因此相同的电流下充电放电速度也会不同,如果不进行均衡干预,电池寿命会大大缩短,因此需要实时监控各个单体电池的状态、总电压、总电流,根据状态适时进行电池充放电均衡,并且充放电均衡时,均衡状态也要实时进行检测,所以就有了电动车电池能量管理系统(EMS)。实践证明EMS可以有效延长电动车电池使用寿命,是电动车中十分重要的管理系统。   EMS主要包括:信息采集模块、充放电均衡模块、信息集中处理模块以及显示模块。图1为自
[单片机]
基于<font color='red'>STM32</font>的电池管理系统触摸屏设计方案
STM32寄存器的简介、地址查找,与直接操作寄存器
什么是寄存器 提到单片机,就不得不提到寄存器。根据百度百科介绍,寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。   简单来说,寄存器就是存放东西的东西。从名字来看,跟火车站寄存行李的地方好像是有关系的。只不过火车站行李寄存处,存放的行李;寄存器可能存放的是指令、数据或地址。   存放数据的寄存器是最好理解的,如果你需要读取一个数据,直接到这个寄存器所在的地方来问问他,数据是多少就行了。问寄存器这个动作,叫做访问寄存器。不同的数据会存放在不同的寄存器,例如引脚PA2与PB8的高低电平数据(1或0)肯定放在不同的寄存器里,那么怎么区分不同的寄存器呢?通过地址,不同的寄存器有不同
[单片机]
<font color='red'>STM32</font>寄存器的简介、地址查找,与直接操作寄存器
STM32对于U盘访问的硬件/软件实现
一些应用中,涉及到对存储设备的数据访问,例如USD卡、U盘。具备USB OTG控制器的STM32,可以实现对U盘访问的支持。本文介绍STM32对于U盘访问的硬件/软件实现。介绍如何利用STM32CubeMX,一步一步实现STM32访问U盘。仅需简单的几个步骤, 实现U盘访问的应用开发。 MSC类简介 MSC (Mass Storage Class) 是USB规范提供的一种USB大容量存储设备类,允许一个USB接口的设备与USB主机相连接,以便在两者之间传输文件。USB MSC传输协议分为CBI (Control / Bulk / Interrupt) 和 BOT (Bulk-only Transfer)。BOT协议在不影响功能
[单片机]
<font color='red'>STM32</font>对于U盘访问的硬件/软件实现
J-LINKV9SWD模式调试STM32出现问题汇总
使用SWD通过J-Flash烧写STM32时,会出现各式各样的错误; 总结下原因: 1、复位脚被拉低了,这次我遇到的就是复位引脚的电容焊反了(钽电容),可以正常连接,但是烧写程序时会出现如下报错 – - Erasing affected sectors … - ERROR: RAM check failed @ address 0x20000000. - ERROR: Write: 0x03020100 07060504 - ERROR: Read: 0x00000000 00000000 - ERROR: (0 bytes of RAM have been checked successfully) - ERROR: Fail
[单片机]
基于STM32的 USB设计 --单片机程序篇
   首先,我们来看看usb的工作过程。   当usb设备接入到主机时,主机开始枚举usb设备,并向usb设备发出指令要求获取usb设备的相关描述信息,其中包括设备描述(device descriptor)、配置描述(configuration descriptor)、接口描述(interface descriptor)、端点描述(endpoint descriptor)等。这些信息是通过端点0(endpoint 0)传送到主机的。获取各种描述信息后,操作系统会为其配置相应的资源。这样主机就可以与设备之间进行通信了。   usb通讯有四种通讯方式控制(control)、中断(interrupt)、批量(bulk)和同步
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved