NZhan1
Occasional Contributor
6 years agoArria10 DMA失败
使用10AX027和CPU调试PCIe时发现以下问题:
调试过程中软件驱动负责分配一块物理内存,然后把物理内存地址写入FPGA,FPGA从这个物理内存地址做DMA,读取内容。
在Xeon系列的硬件平台上的异常现象是:
当驱动分配的物理内存在4G以上时,FPGA做DMA是可以的,分配到4G以下时,FPGA发送tlp的读请求后,始终得不到响应,DMA失败。
做了以下尝试:
- 将FPGA及driver的DID和REV的register改掉,不为0x0000,DMA仍会失败。
- FPGA将内部逻辑改为32位地址的模式,没有作用。
- 当分配到4G以下的地址时,手动将高32位地址置1,DMA是可以的。
- CPU修改BIOS的设置,没有作用。
- 抓了AER数据,FPGA发送tlp的读请求后得不到响应时,没有抓到transpend+的数据。
但是在ATOM C2758,酷睿 I5上分配4G以下的地址时,DMA都是OK的。
客户是自己写的DMA程序,请问可以判断问题可能出在哪里吗?
谢谢