我正在尝试为PCIe设备编写一个Linux驱动程序--Adlink PCIe 7300A高速数字IO卡。
驱动程序适用于正常的内存传输,但尝试使用卡的总线主控功能来启动缓冲区从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
我无法解释我会多么欣赏任何洞察力。
谢谢,
斯科特
答案 0 :(得分:2)
我似乎已经解决了这个问题。看起来中断处理程序中的错误条件是在错误的时间中止DMA传输,从不让转移开始。
一个严肃的“呃”时刻,但是找到它需要认真的努力。
根据评论,抱歉,如果我绝望地污染了SO。还在学习如何成为一个好公民。
不确定上面链接的代码是否会在我的项目更改时保持静态,或者该链接是否会反映最新版本。基本上要注意不要在错误的时间中止你的转移。