还没有没有弄懂ddr的地址不是从0开始的时候怎么通过pcie访问ddr呢? |
嗯嗯 如果DMA要访问DDR的话 这时候PCIe的BAR里面存储的是DMA的控制寄存器的地址 而不是DDR里面的地址 所以这时候访问DDR 地址得是0X8000_0000 所以这也就是为什么PCIe_DMA的过程中没有配置BAR选项的问题 BAR映射的是DMA的控制寄存器 |
如果你的DDR基地址是0x8000_0000,显然,你得从0x8000_0000开始才能读取到正确的数据。 |
你好,我对于你问题的理解如下: 1. PCIE to DMA接口在xdma配置的时候并没有地址映射,那么如果我ddr的基址是0x8000_0000,那么我怎么通过上位机程序把数据写到DDR中呢?这个基址是通过什么方式进行配置的? 如果在生成PCIe的IP的时候不勾选 "PCIe to AXI Lite master interface"的话,那么这个PCIe在主机端应该只有一个Bar,上位机的软件通过这个bar来配置PCIe IP中DMA的控制寄存器。关于上位机如何把数据写入 DDR中,当你调用相关的函数之后,上位机 驱动 会通过这个Bar配置DMA,简单的,配置start adress=上位机的malloc 出来的内存空间的物理地址, end_address = DDR的地址,size=传输数据块的大小,然后启动DMA,此时PCIe的IP会发起outbound memory read从主机读取数据,然后写入到DDR中 2.在教程CH07_IMAGE_LOOP中,有一个write_device的函数,后面有一个参数address,这边是应该写需要访问的DDR的偏移地址还是基址+偏移地址呢?比如要访问0x8000_0100,那么address应该是0x100,还是0x8000_0100。 没用过,不知道。 3. 我现在的工程搭建好了之后,不管如何配置address,都访问不到DMA那一路,不知该如何debug。 如果你说的是通过问题1中,我说的BAR空间访问DDR的控制寄存器的话,那么....这个是由驱动去控制访问的,自己...一般不会去访问,一定要访问的话,知道了bar地址,也能访问.... |
XILINX 官网|站点统计|Archiver|手机版|米联客品牌主页|UISRC工程师开源站 ( 苏ICP备19046771号-2 )
GMT+8, 2025-6-9 11:48 , Processed in 0.137552 second(s), 108 queries .