This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[FAQ] [常见问题解答] 66AK2H14:MPAX 常见问题解答

器件型号:66AK2H14

1.KeyStone II 器件中的 C66x XMC MPAX MSMC MPAX 有何区别?

C66x DSP CorePac 中的扩展存储器控制器 (XMC) 用作 L2 存储器控制器 MDMA 到 MSMC 的路径。XMC 有三个额外的职责:存储器保护、地址扩展和预取。

MPAX 单元同时提供存储器保护和地址扩展 (MPAX)的功能。尽管 C66x CorePac 内部仅支持 32 位地址,但借助 XMC 的 MPAX 特性,它可支持地址宽度高达 36 位的系统。存储器保护决定了在 C66x CorePac 32 位地址映射的各种地址范围内何种类型的访问是被允许的。地址扩展将这些访问投影到更大的 36 位地址空间。

此外,在 C66x CorePac 外部的芯片级 MSMC 中还有 MPAX 单元。MSMC 中有两个系统从器件接口:共享 SRAM (SMS) 和外部存储器 (SMS),它们采用的 MPAX 单元与 C66x CorePac 中的 MPAX 单元类似。MSMC 模块 MPAX 支持高达 32GB 的外部存储器寻址空间,可通过 36 位地址寻址,即使 SoC 寻址保持在 32 位。某些 KeyStone II 器件(请参阅器件特定数据表)只能支持最大 8GB 的外部存储空间。

C66x CorePac 使用自己的 MPAX 单元将 32 位地址扩展到 36 位地址,然后再将它们提供给 MSMC 模块。ARM CorePac 可选择使用带有 LPAE(大型物理地址扩展)的 MMU 来支持 40 位物理寻址。但是,在 ARM MMU 中的 KeyStone II 器件内,物理地址的 4 个 MSB 应设置为 0x0。MSMC 上接收来自系统中所有其他主器件地址的从器件接口必须扩展 MSMC 内部的地址。这些接口还为系统主控器到 MSMC SRAM、外部存储器和emif存储器映射寄存器的访问提供存储器保护支持。

2.如果通过 KeyStone II 中的 EDMA DDR3A L2 SRAM 之间传输数据,是否应将 PrivID = 0 分配给 MPAX 设置?

EDMA 将 32 位地址用于参数集:SRC 和 DST。对于 L2,需要使用全局地址。对于 DDR3A,需要通过 MPAX 将 36 位地址映射到 32 位地址。

MPAX 过程针对可变大小的存储器区段执行,并由每个区段的寄存器对控制:MPAXH 和 MPAXL 控制寄存器。

• MPAXH 会指定要匹配的区段的基地址和大小。

• MPAXL 会指定该区段的替换地址和权限。

每个 MPAX 单元为系统主控器的每个特权 ID (PrivID) 提供 8 个控制寄存器对,从而允许在其上运行 8 个独立且可能重叠的可变大小存储器区段。KeyStone II 数据表列出了为各种系统主控器分配的特权 ID (PrivID) 值、特权等级(主管与用户)、安全级别(安全与非安全),以及每个主控器的访问类型(指令读取与数据/DMA 读取或写入)。

3.MPAX 能否转换 KeyStone II 器件中的任何逻辑存储器地址(例如 0x0400_0000)?

否,对 0x00000000-0x07FFFFFF 范围的访问由 CorePac 自行解码,不会提供给 XMC 控制器的 MPAX 单元。而且,0x08000000-0x0BFFFFFF 为存储器映射控制寄存器。无论区段是否与该范围重叠,MPAX 单元不会修改这些地址,也不会对该范围内的访问执行基于区段的保护检查。

注意对于 EDMA 或 PCIE 等主控器,DDR3A 只能转换为高于 0x8000:0000 的地址。如果通过 EDMA 主控器的 MPAX 将 DDR3A 0x8:0000:0000 转换为低于 0x8000:0000 的逻辑地址,则会失败。