最近在搞一个实验,要采集外部的图像数据,然后利用AM3359开发板的千兆网卡把这些数据发送到PC。因为需要用到DMA,所以使用dma_alloc_coherent申请了一块内存,然后使用mmap映射到用户空间。然后,我用千兆网卡(CPSW驱动)进行发送(UDP方式),测量到的速度仅有12.5MB/s。 我又另外做了一个测试,就是使用kmalloc申请了一块内存,然后映射到用户空间,这时测出来的速度大约有40MB/s。难道是因为用dma_alloc_coherent申请的这块内存的属性是禁止cache的,而使用kmalloc申请的没有禁止cache吗? 想问下有没有办法能加快访问这一段被mmap的DMA内存?
Sunny Guo:
使用 dma_alloc_writecombine 申请内存或许能提高性能
TI中文支持网