从Linux内核空间到PCIe卡的DMA



我正在尝试为PCIe设备——Adlink PCIe 7300A高速数字IO卡——编写linux驱动程序。

驱动程序在正常的内存传输中运行良好,但试图使用卡的总线主控功能启动缓冲区从CPU内存到设备输出FIFO缓冲区的DMA传输根本不起作用。

我一直试图在几周内解决这个问题,而不是几天。

任何真知灼见都将不胜感激。

驱动程序代码--https://github.com/sbrookes/timing_driver_sdarn/blob/master/kernel_land/timing.c

设备数据表--http://www.acceed.com/manuals/adlink/P7300A%20Manual.PDF

PLX 9080 PCI接口芯片产品介绍——http://www.der-ingo.de/bin/milanhelp/PLX9080.pdf

我无法解释我有多感激任何见解。

谢谢你,

Scott

我似乎已经解决了这个问题。中断处理程序中似乎有一个不正确的条件,在错误的时间中止DMA传输,甚至从未让传输开始。

这是一个严肃的"duh"时刻,但它花了很长时间才找到。

根据评论,很抱歉,如果我的绝望污染了SO。还在学习如何成为一个好公民。

不确定上面链接的代码是否会在我的项目更改时保持静态,或者该链接是否会反映最新版本。基本上只是要小心不要在错误的时间中止你的转移。

最新更新