PCIEDriver icon indicating copy to clipboard operation
PCIEDriver copied to clipboard

请教PCIE

Open qiyeboy opened this issue 8 years ago • 7 comments

请教一下,PCIE的硬件使用的什么?是使用FPGA ip核还是使用专用芯片?

qiyeboy avatar Jul 22 '17 05:07 qiyeboy

FPGA ip核,不过我之前使用的是DSP,这个没关系吧,说到底驱动做的只是配置pcie的相关寄存器

SigalHu avatar Jul 27 '17 03:07 SigalHu

我主要是在操作DMA的时候遇到了问题。DMA寄存器的地址是已经在IP核中存在,还是在编写verilog时自己设置?还有当PCIE设备映射到内存地址中,是将PCIE的配置空间也映射了过去?还是只是把bar寄存器对应的存储空间映射了过去?求指教,主要是卡在这了

qiyeboy avatar Jul 27 '17 03:07 qiyeboy

  1. DMA寄存器的地址应该是在IP核中存在的,驱动设置相应寄存器的值,ip核做相应的操作,一般ip核不都会有配套说明文档吗?
  2. 只是把bar寄存器对应的存储空间映射过去,通过bar空间来读写寄存器。

SigalHu avatar Jul 27 '17 03:07 SigalHu

万分感谢,帮我大忙了。bar寄存器对应的存储空间映射到内存中,也就说 PCIE配置空间的寄存器地址偏移 相对应内存中的偏移,从而可以在内存中访问到PCIE的寄存器,也就说bar存储空间中并不是所有地址都可以读写,可以这样理解吗?

qiyeboy avatar Jul 27 '17 03:07 qiyeboy

  1. bar寄存器对应的存储空间映射到内存中,也就说 PCIE配置空间的寄存器地址偏移 相对应内存中的偏移,从而可以在内存中访问到PCIE的寄存器

这句话没问题,驱动初始化阶段获取bar空间基地址,然后通过基地址+偏移地址的方式进行读写,其实具体读写的是寄存器还是其他什么,对驱动来说没什么区别,具体逻辑是由程序员控制的

  1. bar存储空间中并不是所有地址都可以读写

bar所映射的所有地址空间对于驱动程序来说应该都可以读写吧,只不过写入的数据是不是真的写入了,读取的数据是不是正确的数据,跟具体硬件有关。

SigalHu avatar Jul 27 '17 04:07 SigalHu

又要麻烦您了,我发现我的理解还是有问题,就是关于PCIE配置空间的内存映射问题。下面是我在windriver中打开的一个PCIE网卡的图。 pcie2

  1. PCIE配置空间是映射到BAR对应的内存空间了吗?怎么在BAR内存中读不到?偏移应该是多少?PCIE的4K配置空间怎么读取出来?

2.我使用的是xilinx zc706 的板子,我确实找到DMA的寄存器,里面说偏移都是相对于BAR0基址的偏移,因此我个人理解ip核把DMA寄存器自动映射到BAR0内存中,这样理解没问题吧。

qiyeboy avatar Jul 28 '17 10:07 qiyeboy

  1. 配置空间并不在bar空间,由pc端读取,并分配相应资源,就我所知并不需要读取
  2. 如果你的ip核没问题的话,确实是应该已经映射好的。驱动并不知道bar空间里具体是什么,它只是单纯的获取所有bar空间的首地址和空间大小而已,具体做什么是由程序员决定的,我的驱动里的PcieEvtDevicePrepareHardware()就是获取bar空间相关信息的。
  3. 你可以试试通过windriver能不能对bar0空间进行正确读写。

SigalHu avatar Jul 28 '17 13:07 SigalHu