在QNX下如何实现DMA机制?

哪位大侠告诉个思路?

DMA是硬件机构。软件(驱动)能做的只是Enable/Disable吧。

唯一要当心的是内存,传给硬件的内存,1)必须是物理地址;2)要在物理上连续;3)要注意cache.

xtang,谢谢您的答复,我想知道如何通过DMA方式从A/D采集卡读取数据,在QNX下应当如何做呢?openqnx上有个帖子说用mmap()函数先将一段物理地址映射到进程中的地址,然后用mem_offset()函数得到物理地址,如开辟2M的DMA的buffer,用
ptr = mmap( 0, 210241024, PROT_READ|PROT_WRITE|PROT_NOCACHE,
MAP_PHYS|MAP_ANON, NOFD, 0 );
mem_offset( ptr, NOFD, 1, &physical_addr, NULL);
可是之后该怎么做呢?

之后,就是把这个物理地址告诉你的A/D采集卡,然后enable它。你要看你的采集卡编程说明。