
可以使用 get_free_pages, 然后使用dma_map_single, dma_map_pages, dma_map_sg将之前分配的内存空间映射, 但也不会太大。
dma 内存不光是申请就可以的,因为传输时不经cpu, 所以要对 cache 进行 clean 或 invalidate *** 作,上面的方式就不保证 cache 的一致性。
使用 dma_alloc_coherent 申请的保证一致性.
不管那种方式,申请过大内存都存在失败的可能性,不建议一次申请很大内存,申请的小点,加大传输次数。
从硬件上来说,dma engine即dma引擎,就是dma控制器;从软件上来说,其实就是一个dma框架,在该框架下针对你的具体的dma控制器开发出dma驱动,然后其他drivers比如audio,network,crypto等就都可以调用统一的dma相关的api来使用你的dma。欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)