STM32存储器和总线构架

一、STM32中存储名词得到介绍:

ROM:(read only memory)只读存储器
顾名思义,就是只能读取数据的存储器,它的意思并不是绝对的不能写数据,而是单片机本身不能写数据,可是可以通过电脑写入数据。rom的功能就是存储代码,全局变量,局部变量,即存储.c 和 .h文件中的所有代码。程序经过编译、汇编、链接后,生成hex文件。用专用的烧录软件,通过烧录器将hex文件烧录到ROM中,因此,这个时候的ROM中,包含所有的程序内容:无论是一行一行的程序代码,函数中用到的局部变量,头文件中所声明的全局变量,const声明的只读常量,都被生成了二进制数据,包含在hex文件中,全部烧录到了ROM里面,此时的ROM,包含了程序的所有信息,正是由于这些信息,“指导”了CPU的所有动作。
ROM 是只读存储器,一般只能在工厂里面批量写入数据,用户不能修改数据,只能读取数据。

RAM:( Random Access Memory ) 随机访问存储器
可以随机访问,访问速度比较快。整个程序中,所用到的需要被改写的量,都存储在RAM中,“被改变的量”包括全局变量、局部变量、堆栈段。
首先必须明确一条:ROM是只读存储器,CPU只能从里面读数据,而不能往里面写数据,掉电后数据依然保存在存储器中;RAM是随机存储器,CPU既可以从里面读出数据,又可以往里面写入数据,掉电后数据不保存

FLASH (在stm32中ROM就是FLASH,程序是下载到里面)
FLASH存储器又称闪存,它结合了ROM和RAM的长处,不仅具备电子可擦除可编程(EEPROM)的性能,还不会断电丢失数据同时可以快速读取数据。有些单片机有内部flash,比如k60,stm32,可以做到写内部flash,把参数保存下来,数据掉电不丢失,下次重新上电可以从flash读取保存的数据。当STM32执行程序时,是把ROM中的数据,程序“搬运”到RAM中然后再执行的,一般的指令存储在ROM

PROM (可编程ROM)是从工厂生产出来就没用数据,用户可以自己写入数据,可是写数据的机会只有一次,无法修改。
EPROM (可擦除可编程ROM),用户可以自己实现数据写入与擦除,且可多次擦除写入。用户可通过紫外线擦除数据,用专门的编程器写入数据。
EEPROM (电可擦可编程只读存储器)用户可直接使用电子信号进行修改数据,并且可实现小单位修改,而不是全部擦除再重新写入。
在这里插入图片描述
二、系统构架
1、STM32内核(Cortex-M3)的结构
Cortex-M3处理器内核是单片机的中央处理单元( CPU)。 完整的基于CM3的MCU还需要很多其它组件。在芯片制造商得到CM3处理器内核的使用授权后,它们就可以把CM3内核用在自己的硅片设计中,添加存储器,外设, I/O以及其它功能块。不同厂家设计出的单片机会有不同的配置,包括存储器容量、 类型、 外设等都各具特色。
在这里插入图片描述
Cortex-M3 是一个 32 位处理器内核。CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,指令总线和数据总线共享同一个存储器空间4G。
在这里插入图片描述
1、Cortex M3处理器核心
2、可嵌套中断向量控制器NVIC
3、总线阵列
4、存储保护单元MPU
5、Flash分区与断点FPB
6、数据监测点与跟踪DWT
7、仪表跟踪宏单元ITM
8、嵌入跟踪宏单元ETM
9、跟踪端口接口单元TPIU
10、AHB访问端口
11、串口线或JTAG调试口
12、CoresightROM表
13、唤醒中断控制器WIC

在这里插入图片描述
该Cortex-M3内核通过I-Code、D-Code、System总线与STM32内部的Flash、SROM相连接的,该种连接情况直接关系到STM32存储器的结构组织;也就是说,Cortex-M3的存储器结构决定了STM32的存储器结构。可以这样理解:Cortex-M3是一个内核,自身定义了一个存储器结构,ST公司按照Cortex-M3的这个存储器定义,设计出了自己的存储器结构;但是ST公司的STM32的存储器结构必须按照Cortex-M3这个定义的存储器结构来进行设计。

2、STM32系统结构框图:
在这里插入图片描述
四个驱动单元:
─ Cortex™-M3内核DCode总线(D-bus),和系统总线(S-bus)
─ 通用DMA1和通用DMA2
● 四个被动单元
─ 内部SRAM
─ 内部闪存存储器
─ FSMC
─ AHB到APB的桥(AHB2APBx),它连接所有的APB设备

ICode总线
该总线将Cortex™-M3内核的指令总线与闪存指令接口相连接。指令预取在此总线上完成。
DCode总线
该总线将Cortex™-M3内核的DCode总线与闪存存储器的数据接口相连接(常量加载和调试访问)。
系统总线
此总线连接Cortex™-M3内核的系统总线(外设总线)到总线矩阵,总线矩阵协调着内核和DMA间的访问。
DMA总线
此总线将DMA的AHB主控接口与总线矩阵相联,总线矩阵协调着CPU的DCode和DMA到SRAM、闪存和外设的访问。
总线矩阵
总线矩阵协调内核系统总线和DMA主控总线之间的访问仲裁,仲裁利用轮换算法。AHB外设通过总线矩阵与系统总线相连,允许DMA访问。
AHB/APB桥(APB)
两个AHB/APB桥在AHB和2个APB总线间提供同步连接。 APB1操作速度限于36MHzAPB2操
作于全速(最高72MHz)。

在每一次复位以后,所有除SRAM和FLITF以外的外设都被关闭,在使用一个外设之前,必须设置寄存器RCC_AHBENR来打开该外设的时钟。
注意: 当对APB寄存器进行8位或者16位访问时,该访问会被自动转换成32位的访问:桥会自动将8位
或者32位的数据扩展以配合32位的向量。

STM32内核(Cortex-M3)的存储器映射
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
存储器映射是指把芯片中或芯片外的FLASH,RAM,外设,BOOTBLOCK等进行统一编址。即用地址来表示对象。这个地址绝大多数是由厂家规定好的,用户只能用而不能改。用户只能在挂外部RAM或FLASH的情况下可进行自定义。
Cortex-M3是32位的内核,因此其PC指针可以指向2^32=4G的地址空间,也就是0x0000_0000——0xFFFF_FFFF这一大块空间
STM32存储器结构
在这里插入图片描述
图中可以很清晰的看到,STM32的存储器结构和Cortex-M3的很相似,不同的是,STM32加入了很多实际的东西,如:Flash、SRAM等。只有加入了这些东西,才能成为一个拥有实际意义的、可以工作的处理芯片——STM32。
STM32的存储器地址空间被划分为大小相等的8块区域,每块区域大小为512MB。

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

STM32的Flash
STM32的Flash,严格说,应该是Flash模块。该Flash模块包括:Flash主存储区(Main memory)、Flash信息区(Information block),以及Flash存储接口寄存器区(Flash memory interface)。
在这里插入图片描述
STM32存储器结构总结
在这里插入图片描述
Peripherals:外设的存储器映射,对该区域操作,就是对相应的外设进行操作;
SRAM:运行时临时存放代码的地方;
Flash:存放代码的地方;
System Memory:STM32出厂时自带的你只能使用,不能写或擦除;
Option Bytes:可以按照用户的需要进行配置(如配置看门狗为硬件实现还是软件实现);

猜你喜欢

转载自blog.csdn.net/qq_39654819/article/details/87933102
今日推荐