如何配置我的SoC系统以实现从FPGA软逻辑到HPS存储器的高速缓存一致性访问?-Altera-Intel社区-FPGA CPLD-ChipDebug

如何配置我的SoC系统以实现从FPGA软逻辑到HPS存储器的高速缓存一致性访问?

要允许从FPGA软逻辑到HPS存储器项目的高速缓存一致性访问必须到位:

  • MMU页表
  • NOC安全设置
  • CoreLink™2级高速缓存控制器L2C-310配置
  • AXI边带信号:Axi_cache_security桥
    • AxCache和AxUser
    • AXPROT

MMU页表

必须设置MMU页表,以便定义可缓存的目标内存区域,以及安全或非安全。有关MMU页表分配属性和安全模式(信任区域)的更多详细信息,请参阅Linux和ARM文档。

  • 内存必须标记为Write back Write Allocate(WBWA)。
  • 对于要从​​Linux用户空间应用程序或内核访问的内存,安全模式应该是不安全的。
  • 安全应该用于在ARM安全状态下运行的进程访问内存(不要与管理员模式混淆)。

如果CP15:SDR:NS = 1,则启用安全模式。 注意:NS寄存器仅在管理员模式下可用。

NOC安全设置

Arria®10SoC片上网络连接(NOC)可在每个网桥和整个互连中配置防火墙。允许通过HPS网桥进行访问

  • 必须将防火墙配置为允许通过网桥进行事务
  • 必须将主控件设置为允许/禁止安全访问
  • 如果将master设置为禁止安全访问,则所有事务都将更改为非安全状态,这可能会破坏一致性。

从SoC EDS软件版本16.0及更高版本生成的U-boot禁用NOC防火墙,但将master设置为禁止安全访问。

允许通过FPGA2HPA桥进行安全访问:

将寄存器fpga2soc_ctrl:allow_secure设置为1(默认值= 0,不允许安全)

2级缓存控制器配置

CoreLink™2级高速缓存控制器L2C-310配置

建议将辅助控制寄存器位[22]: 共享属性覆盖使能位设置为ON。此设置禁用L2高速缓存控制器中的优化,该控制将来自MPU核心或ACP端口的一些非高速缓存访​​问转换为可高速缓存的非分配访问,并将一致性点从SDRAM移动到L2高速缓存。如果主器件通过L3或FPGA2SDRAM桥访问SDRAM,则一致性点的改变可能会导致问题。

参考: CoreLink™2级高速缓存控制器L2C-310,修订版:r3p3技术参考手册 (ARM DDI 0246H(ID080112)):第2.3.2节可共享属性。

以上是在最新的u-boot-socfpga版本中设置的,可从https://github.com/altera-opensource/u-boot-socfpga获得。

从Qsys驱动AXI边带信号:Axi_cache_security桥

应使用Axi_cache_security桥将AxCache / AxUser / AxProt边带信号驱动为正确的值。 Axi_cache_security桥可以在Arria 10 Bridge示例中找到https://www.altera.com/support/support-resources/design-examples.h tml

 

AxCache [3:0]边带信号

正确的AxCache [3:0]设置取决于MMU页面表设置

请参阅ARM®体系结构参考手册ARMv7-A和ARMv7-R版本 (ARM DDI 0406C.c(ID051414)):A3.5内存类型和属性以及内存顺序模型AxCache [1]必须为1才能进行相干访问。

参考: Cortex™-A9MPCore®修订版:r3p0技术参考手册 (ARM DDI 0407G(ID072711)):2.4加速器一致性端口

AW(R)CACHE [3:0]

[3] – 写可分配

[2] – 读取可分配

[1] – 可缓存

[0] – 可忍受

AW(R)CACHE [3:0]的建议初始值

awcache = 0xF; // 4’b1111写Allocate,Read Allocate,Bufferable,Cacheable

arcache = 0xF; // 4’b1111写Allocate,Read Allocate,Bufferable,Cacheable

注意:应根据用例更改这些设置

AxUser [4-0]边带信号

AxUser信号用于传递额外信息,而对于ACP事务,它们用于传递内部和外部可缓存信息。

AW(R)用户[3:0]

[0] – 对于相干访问,必须将共享属性设置为1

[3:1] – SCU未解释为ACP没有内部缓存策略,如果缓存是以独占模式设置的,则传递给L2缓存控制器。

文献: Cortex™-A9MPCore®修订版:r3p0技术参考手册 (ARM DDI 0407G(ID072711)):2.4加速器一致性端口,

AxUSER [4:0]的建议初始值

awuser = 0x1; // 5’b00001

aruser = 0x1; // 5’b00001

注意:在Arria 10上,AXI共享属性内部绑定为“1”。

AxProt [2:0]边带信号

AxProt指定事务的安全状态,并且必须与目标内存的安全状态匹配,以确保缓存命中。

AW(R)PROT [2:0]

[2] – 取指令

[1] – 非安全访问

[0] – 特权访问

AxProt [2:0]的建议初始值

MMU页表内存安全设置,CPU安全设置和ACP事务安全状态必须全部匹配,以确保缓存命中。

对安全状态的CPU访问的安全存储器位置的非安全ACP事务将导致高速缓存未命中和不连贯的访问。

支持方案摘要:

非安全

  • MMU页表设置为将目标内存区域定义为非安全
  • 设置NOC防火墙以允许对目标区域的非安全访问
  • F2H桥对目标区域执行安全或非安全访问

安全

  • MMU页表设置为将目标存储区定义为安全
  • NOC防火墙设置为允许安全访问目标区域
  • F2H网桥执行对目标区域的安全访问。
请登录后发表评论

    没有回复内容