2015-08-12 2 views
2

Я просматриваю исходную документацию ядра по этой ссылке http://lwn.net/2001/0712/a/dma-interface.php3. В нем упоминается, что pci_map_single может использоваться только для одной передачи. Я пишу драйвер PCI и устройство записывает в буфер 4KB данные каждые 500 us. После этого он даст прерывание. Я пытался работать с pci_alloc_consistent, но он постоянно производит ошибку, заявляя, что «когерентная маска DMA меньше, чем система GFP_DMA mask arm». Мой вопрос в том, как я могу использовать pci_map_single для нескольких передач dma. Или как правильно использовать pci_alloc_coherent?Использование pci_map_single для множественного переноса dma

+0

Я нашел этот вопрос, и это точно так же, но без точного ответа. Кто-нибудь, пожалуйста, помогите нам .. https://stackoverflow.com/questions/20979107/linux-kernel-is-it-ok-to-leave-a-streaming-dma-mapping-open-indefinitely/31973856#31973856 –

ответ

0

Если вы хотите сделать несколько передач DMA через один и тот же буфер, вы можете просто pci_unmap_single, а затем снова отобразить dma. Но вам нужно хранить адрес dma каждый раз, чтобы его можно было отменить.