后天大圆满之单片机存储器映射

论坛 期权论坛 编程之家     
选择匿名的用户   2021-5-17 08:11   11   0

很多硬件架构已经对存储器映射进行了划分,比如今天作为典型介绍的Cortex-M3体系架构,即使允许半导体厂商进行特定功能存储区域的重新定义,总体的存储器映射大框架也是不变的。

Cortex-m3支持最大4GB的存储空间,其地址映射关系如下图所示:

1.代码区

512MB表示遵循M3架构的MCU最大可能的代码容量即inflash大小,0x0000 0000表示最低起始地址,该区主要存放code也可以写入数据,有指定的总线去读取指令,访问数据。掉电该区域不会丢失数据,相当于电脑的硬盘。

结合实例来STM32F104VET6来说明,它将代码区规划如下:

Boot MemorySpace(0x0-0x7FFFF),这块空间是预留的,不存数据,或者它压根不存在。在不同的启动方式(参见附1)下,这块区域会被映射到其他区域

1).从主存储器启动:Boot Space 是主存储器的别名。以0x08000000 对应的内存为例,则该块内存既可以通过0x00000000 操作也可以通过0x08000000 操作,且都是操作的同一块内存。

2).从系统存储器启动:Boot Space 是System Memory的别名。以0x1FFFFFF0对应的内存为例,则该块内存既可以通过0x00000000 操作也可以通过0x1FFFFFF0操作,且都是操作的同一块内存。

3).从SRAM 启动:SRAM 只能通过0x20000000进行操作,与上述两者不同。从SRAM 启动时,需要在应用程序初始化代码中重新设置向量表的位置。

保留区。

主存储器(图中Flash区,主闪存)起始起止为0x0800 0000,终止地址依Flash大小而定,图中0x0807 FFFF为512k的终止地址,存储代码。

保留区

系统存储器,从0x1FFFF000 – 0x1FFF F7FF,是不可擦除的ROM区,存储ISP程序

option bytes这个区域是16个字节,是控制flash区域的寄存器

附1:

STM32F1的三种启动模式(与前面介绍0x0地址有关)

1).主闪存存储器启动:从STM32内置的Flash启动(0x0800 0000-0x0807 FFFF),一般我们使用JTAG或者SWD模式下载程序时,就是下载到这个里面,重启后也直接从这启动程序。

2).系统存储器启动:从系统存储器启动(0x1FFFF000 – 0x1FFF F7FF),这种模式启动的程序功能是由厂家设置的。一般来说,我们选用这种启动模式时,是为了从串口下载程序,因为在厂家提供的ISP程序中,提供了串口下载程序的固件,可以通过这个ISP程序将用户程序下载到系统的Flash中。

3).片上SRAM启动:从内置SRAM启动(0x2000 0000-0x3FFFFFFF),既然是SRAM,自然也就没有程序存储的能力了,这个模式一般用于程序调试



2.片上SDRAM

片上SRAM起始地址为0x2000 0000大小为64KB,512M表示该架构MCU最大可能的内存容量为512M,片上SRAM起始地址最低0x2000_ 0000该位置主要存放数据也可以写入code,有指定的总线去读取指令,访问数据。掉电该区域会丢失代码和数据,但是执行代码比Flash要快很多,一般比inflash价格贵,容量做的小得多。

3.片上外设

GPIO、UART、ADC、TIM,RCC,SDIO、DMA等所有外设的控制、状态、数据寄存器都在这个区中。

3.扩展片外存储器

可以自己扩展外部内存(外部SDRAM)、NORFlash、NANDFlash、LCD,但必须在STM32的FSMC控制器下进行,这个控制器的作用就是将内部AHB总线和外部扩展内存的总线进行转化,利用这个控制器,我们可以很方便的控制LCD,这里就不展开了。这1G的抽屉可以放下图的东西。这片空间STM32并没有放东西,STM32指定我们可以在其中扩展内存NOR/PSRAM1、NOR/PSRAM2……并接受FSMC控制器的控制。

4.片外外设

在该区,放置了FSMC控制器的一些寄存器,就是在这些寄存器的配合下,FSMC控制器得以有效控制片外RAM进行读写操作。

5.总结

参考文献:

[1] https://blog.csdn.net/fantastikman/article/details/73481021

[2] 嵌入式网络那些事

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP