Arm 预加载发动机(PLE)臂A9 MPCore

Arm 预加载发动机(PLE)臂A9 MPCore,arm,cpu-cache,Arm,Cpu Cache,我正在尝试将SDRAM内存预加载到二级缓存。我已草签了MMU,并制作了一张翻译表。 我还启用了缓存,我看到软件也在使用缓存 为了将一些SDRAM加载到二级缓存中,我尝试使用预加载引擎(PLE) 我已经阅读了关于PLE的文档,但是我没有让它工作。这就是我尝试过的: __asm(“MCRR p15,0、%0、%1、c11”:“r”(0x2000004)、“r”(0x20000000))//新频道节目 0x2000004是包含start_寄存器值的寄存器(在我的示例中为0x10000000) 0x20

我正在尝试将SDRAM内存预加载到二级缓存。我已草签了MMU,并制作了一张翻译表。 我还启用了缓存,我看到软件也在使用缓存

为了将一些SDRAM加载到二级缓存中,我尝试使用预加载引擎(PLE)

我已经阅读了关于PLE的文档,但是我没有让它工作。这就是我尝试过的: __asm(“MCRR p15,0、%0、%1、c11”:“r”(0x2000004)、“r”(0x20000000))//新频道节目
0x2000004是包含start_寄存器值的寄存器(在我的示例中为0x10000000) 0x20000000是包含设置的寄存器:在我的示例中为0xFFFC007C。这意味着: 长度=16k,跨距=0,块数为32(32*16k=512k,这是二级缓存的可用量)

当我执行这个命令时,PLE对寄存器PLEIDR、PLEASER、PLEFSR、PLEUAR和PLEPCR不做任何操作。 PLEIDR表示Fifo_大小=16,PLE可用。 PLEASR始终为零,这意味着通道从未激活 PLEFSR=16,这意味着FIFO中有16个可用条目 其他设置由用户定义


要运行PLE频道,我必须做些什么?

这不是通用的ARM功能。ARM Cortex-A9应支持
PLD
PLI
指令。他们不是为你工作吗?这是一种更简单、更便携的预加载方式(跨更多ARM cpu类型工作)。“0x2000004是包含start_寄存器值的寄存器”-嗯,什么?提示:查看带立即数操作数的asm寄存器约束的实际功能。