Zynq-7000 SoC 的设计咨询、APU — L2 高速缓存运行需要编程 slcr.L2C_RAM 寄存器

描述
对于正确的 L2 高速缓存运行,用户代码必须在启用 L2 高速缓存之前,将 slcr.L2C_RAM 寄存器(地址 0xF800_0A1C)编程为 0x0002_0202 的值。重置的值 (0x0001_0101) 可能会导致 L2 高速缓存返回无效数据,这种情况很少发生。

(1楼)主要取决于用户代码(FSBL 或其它用户代码)在启用 L2

judyzhong 在 星期三, 06/06/2018 - 15:20 发表。

主要取决于用户代码(FSBL 或其它用户代码)在启用 L2 高速缓存之前将 slcr.L2C_RAM 设置为 0x0002_0202 值的情况。
注意:L2 高速缓存在重置后禁用,而且 BootROM 无法启用。

Xilinx EDK/SDK 14.4 版的说明:
1. 在本答复记录的末尾下载 ZIP 文件。
2. 将 boot.s 文件提取到 Xilinx EDK/SDK 安装目录(如C:\Xilinx\14.4\ISE_DS\EDK)。
3. 请核实 boot.s 文件是否写入在 gcc 目录(如 C:\Xilinx\14.4\ISE_DS\EDK\sw\lib\bsp\standalone_v3_08_a\src\cortexa9\gcc)下。

受影响的系统:所有使用 SDK 14.4 或更早版本的系统。

解决方法:该补丁将集成在未来的 SDK 版本中。寄存器写入可添加至任何之前的软件版本中。

注意:之前保留了 slcr.l2C_RAM 寄存器。它在 Zynq-7000 SoC 技术参考手册 (TRM) v1.5 中添加为“保留”。

(2楼)如何调用L2缓存实现程序存储?

Howe123 在 星期二, 06/19/2018 - 09:20 发表。

程序直接在qspi flash上跑,通过L2cash所存的方法将程序锁存在二级缓存中,这样ram0和ram1只存数据,如何实现?