飞思卡尔P5020的SRIO的地址映射(ATMU)怎么做的

如题,飞思卡尔P5020处理器的地址映射怎么做的,看不懂。是不是允许外部不同地址线的访问,srio34位的寻址怎么访问内部36根地址线的。

望采纳!!点击回答右侧采纳即可采纳!!!
我们经常说的地址映射指的是将外部设备的地址空间映射到内部存储器的地址空间中。这样,在访问外部设备时,可以像访问内存一样方便。


具体来说,P5020处理器允许外部设备使用34位地址线进行寻址,而内部存储器可以使用36位地址线进行寻址。因此,需要进行地址映射,将外部设备的34位地址线映射到内部存储器的36位地址线上。

这样,在访问外部设备时,可以通过使用内部存储器的地址来访问外部设备,从而简化了访问过程。

飞思卡尔 P5020 处理器是一款基于 Power Architecture 的双核处理器,拥有可编程的地址映射功能。这意味着它允许您在软件中配置地址映射,以便外部不同地址线可以访问内部地址线。

对于 SRIO(带外多路访问)来说,它支持 34 位寻址,但是内部地址线是 36 位的。这意味着您可以使用 SRIO 在 34 位地址空间内访问内部的 36 位地址线。要实现这种映射,您可以在软件中使用地址映射功能将 SRIO 的 34 位地址映射到内部的 36 位地址线上。

总的来说,飞思卡尔 P5020 处理器允许外部不同地址线的访问,并提供了可编程的地址映射功能,使您能够在软件中自定义地址映射,使外部地址线能够访问内部地址线。
我可以给您提供一些有关飞思卡尔 P5020 处理器地址映射的细节信息。
首先,在 P5020 处理器中,本地寄存器和 SRIO 寄存器都是用于存储数据的内存位置。本地寄存器是内部的寄存器,而 SRIO 寄存器是外部设备的寄存器。

要实现 34 位 SRIO 地址到 36 位内部地址的映射,您可以使用 P5020 处理器的地址映射功能,具体来说,您可以使用以下几个寄存器:

  • SRIO 寻址寄存器(SRIO Addressing Registers):这些寄存器存储了 SRIO 地址空间的起始地址和结束地址,用于指定 SRIO 地址空间的范围。
  • 地址转换寄存器(Address Translation Registers):这些寄存器存储了将 SRIO 地址映射到内部地址的转换信息。
  • 地址转换控制寄存器(Address Translation Control Registers):这些寄存器存储了控制地址转换的信息,包括是否启用地址转换和转换类型。

通过配置这些寄存器,您可以实现 SRIO 地址到内部地址的映射。

除了使用地址映射寄存器来实现 SRIO 地址到内部地址的映射之外,您还可以使用 P5020 处理器的本地存储管理单元(Local Storage Management Unit,LSMU)来实现这种映射。

LSMU 是 P5020 处理器的一个子系统,它负责管理处理器的本地存储器(包括 L1 缓存和 L2 缓存)。LSMU 具有可编程的地址映射功能,可以将 SRIO 地址映射到内部地址。

要使用 LSMU 实现 SRIO 地址到内部地址的映射,您需要配置 LSMU 的映射表(Mapping Table)。映射表是一组寄存器,用于存储将 SRIO 地址映射到内部地址的转换信息。您可以使用 LSMU 的映射表寄存器来配置映射表,以实现 SRIO 地址到内部地址的映射。

希望这些信息对您有帮助。

你说这个处理器是允许外部不同地址线的访问的,至于具体怎么配置,可能需要真的用过这个处理器的,而且配置过的才清楚。如果实在没有大神来解答,建议你回归到理论部分再学习下,看能不能自己试着做出来,这里给你找了些文章:
https://blog.csdn.net/B_W_A_W/article/details/125498529
https://blog.51cto.com/u_15338162/5216613
如果这个不行,建议问下身边的朋友有没有会的大牛。抱歉可能没有帮到你,祝你的问题早日解决!!

看手册哦,rm手册写的清楚呢

地址映射是指将处理器能够访问的地址空间映射到物理地址空间,从而使处理器能够访问存储器和其他外部设备。飞思卡尔P5020处理器具有36位地址线,能够访问2^36个地址,也就是64GB的地址空间。

SRIO是一种高速串行总线技术,能够支持34位地址线,允许外部设备访问内部的地址线。要访问内部的36根地址线,可以使用地址映射的方法,将SRIO的34位地址映射到内部的36位地址线上。

通常情况下,地址映射是由处理器的内存管理单元(MMU)来实现的。 MMU会维护一个地址转换表,用于将逻辑地址映射到物理地址。当处理器要访问内存时,会先将要访问的逻辑地址发送到MMU,MMU会查询地址转换表,并将逻辑地址转换为物理地址。处理器再使用转换后的物理地址来访问内存或其他外部设备。
如果要在飞思卡尔P5020处理器的本地寄存器和SRIO寄存器之间进行地址映射,可以使用如下步骤:

1、配置SRIO的地址映射寄存器(AMR),指定SRIO能够访问的地址空间范围。

2、配置SRIO的地址对应寄存器(ACR),指定SRIO访问的地址映射到哪个本地寄存器。

3、在本地寄存器和SRIO寄存器之间建立地址映射关系。例如可以将SRIO地址0x00000000映射到本地寄存器0x20000000,将SRIO地址0x00000001映射到本地寄存器0x20000001,以此类推。
仅供参考,望采纳,谢谢。

在飞思卡尔 P5020 处理器的 SRIO 接口中,地址映射功能由 ATMU(Address Translation Memory Unit)来实现。ATMU 用于将 SRIO 接口上的设备地址映射到处理器内部的地址空间。

SRIO 接口支持 34 位地址线,而处理器内部支持 36 位地址线。因此,在进行地址映射时,需要使用 ATMU 将 SRIO 接口的地址映射到处理器内部的 36 位地址线上。

具体地,飞思卡尔 P5020 处理器的 SRIO 接口支持 8 个 ATMU 单元,每个 ATMU 单元可以映射 2GB 的地址空间。通过设置 ATMU 单元的属性(如地址范围、权限、缓存属性等),可以实现不同的地址映射方案。

需要注意的是,在使用 ATMU 进行地址映射时,需要确保映射范围内的地址不会冲突。另外,ATMU 的映射范围是固定的,无法动态调整。如果希望在运行时动态调整地址映射,可以使用 DMA(Direct Memory Access)技术来实现。

借鉴下
https://www.sohu.com/a/39565685_119709

SRIO(Serial RapidIO)是一种高速串行接口,用于在多处理器系统中连接系统间总线 (SOC)。在飞思卡尔 P5020 处理器中,SRIO 接口使用 ATMU(Address Translation Memory Unit)来实现地址映射。

ATMU 是一个硬件单元,用于将外部不同地址空间映射到内部地址空间。在 P5020 处理器中,SRIO 接口支持 32 位寻址,而内部地址线是 36 位。因此,在 P5020 处理器中,SRIO 接口使用 ATMU 来将 32 位的 SRIO 地址映射到 36 位的内部地址线上。

ATMU 的配置是通过软件配置的,在 P5020 处理器中,可以使用 CCS(Code Composer Studio)或者其他工具来配置 ATMU 。通过对 ATMU 的配置,可以实现地址翻译,从而允许 SRIO 接口访问内部 36 位地址线。

配置方法是在代码中使用特定的SRIO驱动函数来配置ATMU,比如 SRIO_createATMUInboundWindows()函数来创建一个ATMU入窗口,或者是 SRIO_createATMUOutboundWindows()函数是用来创建一个ATMU出窗口。这个函数需要你提供一些参数,例如起始地址,终止地址,目标地址等。

在具体实现中,你需要设置一些参数来创建一个ATMU出窗口,包括:

startAddr: 出窗口的起始地址
endAddr: 出窗口的终止地址
tgtID: 目标ID
tgtAddr: 目标地址
incSize: 递增块大小(可选)
intEn: 是否使能中断
outPortID: 输出端口
doorbellReg: 门铃寄存器
doorbellBit: 门铃位
priority: 优先级
doorbellPrescale: 门铃预分频
grpId: 组Id
调用SRIO_createATMUOutboundWindows()函数后,你就可以使用这个ATMU出窗口进行SRIO数据传输了。

譬如下面的代码,将建立一个从地址0x00000000到0x1FFFFFFF的出窗口,目标地址为0x20000000, 递增块大小为4, 输出端口为0, 优先级为0:

SRIO_ATMU_OutBoundHandle hOutBoundWin;
SRIO_ATMU_OutBoundCfg  outBoundCfg;

outBoundCfg.startAddr = 0x00000000;
outBoundCfg.endAddr = 0x1FFFFFFF;
outBoundCfg.tgtID = 0;
outBoundCfg.tgtAddr = 0x20000000;
outBoundCfg.incSize = 4;
outBoundCfg.intEn = 0;
outBoundCfg.outPortID = 0;
outBoundCfg.doorbellReg = 0;
outBoundCfg.doorbellBit = 0;
outBoundCfg.priority = 0;
outBoundCfg.doorbellPrescale = 0;
outBoundCfg.grpId = 0;

hOutBoundWin = SRIO_createATMUOutboundWindows(hSrio,&outBoundCfg);

需要注意的是,最终的地址映射应该是由硬件实现的,飞思卡尔的官方文档应该会有详细的说明。

希望对您有所帮助!望采纳。