K60-flash-FMC(中文)

  • 格式:pdf
  • 大小:745.73 KB
  • 文档页数:21

第27章FLASH存储控制器(FMC)27.1 介绍FLASH存储控制器(FMC)是一个存储加速单元,它提供下面的功能。

在设备和两块非易性存储器之间的一个接口,bank 0 由程序flash组成,bank 1由FlexNVM组成。

可以加速FLASH和FlexNVM数据传输的缓存。

27.1.1 概述FLASH存储控制器管理设备和双Flash存储器之间的接口。

FMC获取详细记录了存储器配置的状态信息,使用该信息可确保接口的正确。

下表显示了支持另外,对bank 0和bank 1来说,FMC提供了3个独立的机制,其作用是加速设备和Flash存储器之间的接口。

利用一个64位预缓冲可以预先得到下一个64位flash存储器的位置,利用两个4路,8级缓存和一个单端64位缓冲可以预先存储要访问的flash存储器或者FlexMemory数据。

27.1.2 特征FMC特征包括:●设备与双flash存储器和FlexMemory之间的一个接口:●当程序Flash和FlexNVM用作数据存储器时支持8位、16位、32位读操作。

●当FlexNVM和FlexRAM作为EEPROM时,支持8位,16位,32位读/写操作。

●对于bank 0和bank 1:读连续的32位空间返回第二个读的数据,没有等待状态。

存储器通过32位总线访问返回64位数据。

●交叉通路访问功能为每个交叉通路主机设置禁止访问,只读访问,只写访问,读/写访问功能。

●加速从程序flash存储器和FlexMemory到设备的数据传输:●带有主机和bank指令/数据访问控制的64位预测缓冲区●4路,8级,每行64位高速缓存,总共32个64位目录,带有替换算法和锁存方式。

●可以使能每个bank的单端缓冲区●可以禁止使用预缓冲和单端缓冲。

27.2 操作模式FMC只在设备访问flash存储器或者FlexMemory时工作。

就设备电源模式而言:FMC只在运行和等待模式下工作,包括VLPR和VLPW模式。

当FlexMemory或者flash存储器不能被访问时,对于任何模式,FMC禁止时27.3 外部信号描述FMC没有外部信号27.4 存储器映像和寄存器描述编程模块包括FMC控制寄存器和编程可见的高速缓存(数据和标签/有效条目)。

注意这些寄存器只有在Flash空闲时才能编程(比如:从RAM执行)。

在flash 访问的过程中改变配置设置可能导致非确定性的行为。

注意访问FMC 4KB地址空间范围内未实现的寄存器将导致没总线错误。

注意当任何flash缓存的段被编程时,系统软件需要保持存储器的一致性。

例如:所有重新编程的flash缓冲区数据应该是无效的。

相应地,高速缓存程序可见的写操作必须发生在一个编程或者擦除事件之后,且在一个新的存储器映像被访问之前。

高速缓存是一个4路(0~3路),8级缓存(0~7级)。

在下表详细描述了标签/有效性数据条目。

表27-3 程序可见缓存寄存器FMC存储映射27.4.1 Flash 访问保护寄存器(FMC_PFAPR )FMC_PFAPR 位描述27.4.2 Flash bank 0控制寄存器 (FMC_PFB0CR)FMC_PFB0CR 位描述27.4.3 flash Bank 1 控制寄存器(FMC_PFB1CR)该寄存器有一种格式类似PFB0CR,用来控制flash Bank 1的操作,而”全局”高速缓存控制字段为空。

\FMC_PFB1CR位描述27.4.4 缓存目录存储(FMC_TAGVDW0Sn)32条目缓存是一个4路,级联的8级缓存。

0-3路,0-7集。

在TAGVDWxSn,x 表示way,y表示集。

这部分给出了所有的8级(n=0-7)1路的标签/vld信息。

Addresses: FMC_TAGVDW0S0 –4001_F000h base + 100h offset = 4001_F100hFMC_TAGVDW0S1 – 4001_F000h base + 104h offset = 4001_F104hFMC_TAGVDW0S2 – 4001_F000h base + 108h offset = 4001_F108hFMC_TAGVDW0S3 – 4001_F000h base + 10Ch offset = 4001_F10ChFMC_TAGVDW0S4 – 4001_F000h base + 110h offset = 4001_F110hFMC_TAGVDW0S5 – 4001_F000h base + 114h offset = 4001_F114hFMC_TAGVDW0S6 – 4001_F000h base + 118h offset = 4001_F118hFMC_TAGVDW0S7 – 4001_F000h base + 11Ch offset = 4001_F11ChFMC_TAGVDW0Sn位描述27.4.5 缓存标签存储(FMC_TAGVDW1Sn)32个条目缓存是一个4路,级联的8级缓存。

0-3路,0-7集。

在TAGVDWxSn,x 表示way,y表示集。

这部分给出了所有的8级(n=0-7)2路的标签/vld信息。

Addresses: FMC_TAGVDW1S0 –4001_F000h base + 120h offset = 4001_F120hFMC_TAGVDW1S1 – 4001_F000h base + 124h offset = 4001_F124hFMC_TAGVDW1S2 – 4001_F000h base + 128h offset = 4001_F128hFMC_TAGVDW1S3 – 4001_F000h base + 12Ch offset = 4001_F12ChFMC_TAGVDW1S4 – 4001_F000h base + 130h offset = 4001_F130hFMC_TAGVDW1S5 – 4001_F000h base + 134h offset = 4001_F134hFMC_TAGVDW1S6 – 4001_F000h base + 138h offset = 4001_F138hFMC_TAGVDW1S7 – 4001_F000h base + 13Ch offset = 4001_F13ChFMC_TAGVDW1Sn 位描述27.4.6 缓存标签存储(FMC_TAGVDW2Sn )32个条目缓存是一个4路,级联的8级缓存。

0-3路,0-7集。

在TAGVDWxSn,x 表示way ,y表示级。

这部分给出了所有的8级(n=0-7)2路的标签/vld 信息。

Addresses: FMC_TAGVDW2S0 – 4001_F000h base + 140h offset = 4001_F140hFMC_TAGVDW2S1 – 4001_F000h base + 144h offset = 4001_F144hFMC_TAGVDW2S2 – 4001_F000h base + 148h offset = 4001_F148hFMC_TAGVDW2S3 – 4001_F000h base + 14Ch offset = 4001_F14ChFMC_TAGVDW2S4 – 4001_F000h base + 150h offset = 4001_F150hFMC_TAGVDW2S5 – 4001_F000h base + 154h offset = 4001_F154hFMC_TAGVDW2S6 – 4001_F000h base + 158h offset = 4001_F158hFMC_TAGVDW2S7 – 4001_F000h base + 15Ch offset = 4001_F15ChFMC_TAGVDW2Sn位FMC_TAGVDW2Sn描述27.4.7 缓存目录存储(FMC_TAGVDW3Sn)32个条目缓存是一个4路,8级缓存。

0-3路,0-7级。

在TAGVDWxSn 中,x表示路,y表示级。

这部分给出了所有的8级(n=0-7)3路的标签/vld信息。

Addresses: FMC_TAGVDW3S0 –4001_F000h base + 160h offset = 4001_F160hFMC_TAGVDW3S1 – 4001_F000h base + 164h offset = 4001_F164hFMC_TAGVDW3S2 – 4001_F000h base + 168h offset = 4001_F168hFMC_TAGVDW3S3 – 4001_F000h base + 16Ch offset = 4001_F16ChFMC_TAGVDW3S4 – 4001_F000h base + 170h offset = 4001_F170hFMC_TAGVDW3S5 – 4001_F000h base + 174h offset = 4001_F174hFMC_TAGVDW3S6 – 4001_F000h base + 178h offset = 4001_F178hFMC_TAGVDW3S7 – 4001_F000h base + 17Ch offset = 4001_F17CFMC_TAGVDW3Sn位描述27.4.8 缓存数据存储(高字节)(FMC_DATAW0SnU)32个64-bit项的高速缓存是4路的,8组的组相连缓存。

路编号为0-3,级被编号为0-7.在DATAWxSyU和DATAWxSyL中,x表示路,y表示级,U和L分别代表高位字和低位字。

这一部分代表(【63:32】位)的所有8级0路的高位字。

Addresses: FMC_DATAW0S0U –4001_F000h base + 200h offset = 4001_F200hFMC_DATAW0S1U – 4001_F000h base + 208h offset = 4001_F208hFMC_DATAW0S2U – 4001_F000h base + 210h offset = 4001_F210hFMC_DATAW0S3U – 4001_F000h base + 218h offset = 4001_F218hFMC_DATAW0S4U – 4001_F000h base + 220h offset = 4001_F220hFMC_DATAW0S5U – 4001_F000h base + 228h offset = 4001_F228hFMC_DATAW0S6U – 4001_F000h base + 230h offset = 4001_F230hFMC_DATAW0S7U – 4001_F000h base + 238h offset = 4001_F238hFMC_DATAW0SnU位描述27.4.9 缓存数据存储(低字节)(FMC_DATAW0SnL)32个64-bit项的高速缓存是4路的,8级的级相连缓存。