使用axidma驱动,在zynq得linux操作系统中实现PS接收PL得数据,
驱动:https://github.com/bperez77/xilinx_axidma
但是在测试得时候发现,axidma_oneway_transfer函数wait设置为true的时候就会提示
axidma_start_transfer:301:DMA receive transation timed out
Fialed to perform the AXI DMA transfer:TImer expired
axidma_oneway_transfer函数wait设置为true的时候接收没有任何反应
(两种xilinx得板子,一个就通信正常,一个就不行)
请问各位,这个驱动与硬件配置啥的有关系吗?有什么解决思路没?
回答不易,求求您采纳哦
报错“axidma_start_transfer:301: DMA receive transition timed out”和“Failed to perform the AXI DMA transfer: Timer expired”提示axidma_oneway_transfer函数的wait参数设置时AXI DMA(Direct Memory Access)传输有问题为真。这可能是由几个不同的原因引起的:
DMA 引擎未正确配置或初始化。确保正确配置了 DMA 引擎并且正确设置了所有必要的寄存器。
DMA 缓冲区分配不正确。确保为 DMA 缓冲区分配了正确的大小,并且 DMA 引擎可以访问它。
DMA 引擎的硬件配置有问题。这可能是 DMA 引擎的 IP 内核或 DMA 引擎与系统其余部分之间的连接的问题。
AXI 总线存在问题,例如时序设置不正确或总线宽度不正确。
AXI DMA 驱动程序本身未正常工作。
检查两块板之间的硬件配置是否存在差异可能会有所帮助,例如时钟频率、内存大小或 AXI 总线连接。此外,您还可以查看 dma 引擎的日志信息,如 dma 状态、中断状态和其他相关寄存器。
一种解决方案是增加 DMA 传输的超时值,这可以通过相应地修改驱动程序来完成。
另一种解决方案是尝试使用不同的 DMA 驱动程序,例如 Xilinx DMA 驱动程序或 Linux DMA 引擎。这将取决于您使用的具体主板和操作系统。
也可以尝试更新设备树,查看并更新axi dma驱动相关的内核。
查看 Xilinx 的技术支持网站或论坛以了解更多信息和解决此问题的可能方法也可能会有所帮助。