关于DMA:
- DMA获取总线控制权,可能修改内存。如果修改的内存在cache中映射了,那么存在cache数据和DRAM数据不一致。解决方法:最简单的:将DMA访问的内存禁止cache。
- DMA本身不属于一种外设,只是外设和内存数据交互的一种方式。
Linux下的DMA编程:
对于ISA设备,使用DMA传输数据,必须使用内存的最低16MB的地址空间。【kmalloc 和 __get_free_pages()使用标志:GFP_DMA。】
参考:Linux设备驱动详解(电子书PDF)
Linux下的DMA编程:
对于ISA设备,使用DMA传输数据,必须使用内存的最低16MB的地址空间。【kmalloc 和 __get_free_pages()使用标志:GFP_DMA。】
参考:Linux设备驱动详解(电子书PDF)