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
나는 조금의 통찰력을 얼마나 고맙게 생각하는지 설명 할 수 없습니다.
감사합니다,
스콧
나는 문제를 해결 한 것 같다. 잘못된 시간에 DMA 전송을 중단하고 전송이 시작되지 않는 잘못된 조건이 인터럽트 핸들러에있는 것 같습니다.
심각한 "duh"순간이지만 그것을 찾기 위해 심각한 고투가 필요했습니다.
댓글에 따르면 필사적으로 오염되면 미안합니다. 여전히 좋은 시민이되는 법을 배우고 있습니다.
프로젝트가 변경 될 때 위에 링크 된 코드가 정적으로 유지되는지 또는 해당 링크가 최신 버전을 반영하는지 확실하지 않습니다. 기본적으로 잘못된 시간에 전송을 중단하지 않도록주의하십시오.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다