TI中文支持网
TI专业的中文技术问题搜集分享网站

AM2434: PCIE配置Region Window Size 失败。传输16K数据失败.

Part Number:AM2434

在使用PCIE输出16K数据遇到下面的问题,请帮忙察看是否是这样配置,配置是否有问题,请帮忙解答下,谢谢!!

EP需要有两段BAR地址:
iomap_post  : 0x00000~0x01000      (4K)
iomap_Buffer: 0x04000~0x07000        (12K)
 
因此,应该有两组Inboun/OutBound。其中一组设置为8K时,能收到8K数据。但是设置为16K时,不能收到8K以上的数据。
 
(1)8K syscfg配置:
          1. RC配置

          2.EP配置

         EP调试界面可以看到:数组在IOmao_BufferRecv[2047]之后就收不到数据。
                   能收到数据大小=2048 * 4 = 8192 Byte
 
(2)16K syscfg配置:

1. RC配置


1. EP配置

EP调试界面可以看到:数组在IOmao_BufferRecv[319]之后就收不到数据。
                   能收到数据大小= 320* 4 = 1280 Byte

Gary Lu:

看样子像是涉及到PCIe传输和内存映射,确保以下PCIe设备的BAR地址设置正确,以便正确映射到系统内存

,

li YI:

需要怎么设置呢?能给个参考嘛?因为配置用syscfg。只是增加了一个通道,根据映射的范围对于inbound 更改BAR aperture, lower base address , upper base addresses, region window size.对于outbound更改了lower Target Addresse, upper Base Target ,Region window Size其他地方都没有更改。

可以提供一个EP需要有两段BAR地址:

iomap_post : 0x00000~0x01000 (4K)

iomap_Buffer: 0x04000~0x07000 (12K)

的配置方法嘛?最好提供一个demo

,

Gary Lu:

下面是我写的一个简单的示例,展示了如何使用syscfg来配置EP

#include <stdio.h>
#include <syscfg.h>int main() {
// 配置inbound通道
syscfg_set_inbound_bar_aperture(1, 0x00000, 0x07000); // 设置BAR aperture范围
syscfg_set_inbound_lower_base_address(1, 0x00000); // 设置lower base address
syscfg_set_inbound_upper_base_address(1, 0x07000); // 设置upper base address
syscfg_set_inbound_region_window_size(1, 12); // 设置region window size// 配置outbound通道
syscfg_set_outbound_lower_target_address(1, 0x04000); // 设置lower target address
syscfg_set_outbound_upper_target_address(1, 0x07000); // 设置upper target address
syscfg_set_outbound_region_window_size(1, 12); // 设置region window size// 打印配置结果
printf("EP配置完成:\n");
printf("iomap_post : 0x00000~0x01000 (4K)\n");
printf("iomap_Buffer: 0x04000~0x07000 (12K)\n");return 0;
}

,

li YI:

SDK不存在这些函数,使用的SDK库是mcu_plus_sdk_am243x_09_00_00_35。而且syscfg_set_inbound_upper_base_address不应该是再64bit地址时才设置的嘛?

,

Gary Lu:

您好,这只是我写的一个示例参考

赞(0)
未经允许不得转载:TI中文支持网 » AM2434: PCIE配置Region Window Size 失败。传输16K数据失败.
分享到: 更多 (0)