DMA
文章平均质量分 54
追上我就让你嘿嘿嘿
come on
展开
-
常用的连续物理内存的获取方法(一)
获得连续物理内存的方法有很多,在很多地方搜了但是自己拿过来用就是用不了,这里展示几个亲测能用的。包括dma_alloc_coherent和kmalloc等。代码:#include #include #include #include #include #include #include // int direction = PCI_DMA_TODEVICE ;// int原创 2018-01-12 16:05:56 · 1832 阅读 · 1 评论 -
DMA地址获取
最近在研究一如何获得连续的物理地址用于DMA,看了很多博客,说是通过kmalloc,get_free_pages等等获取内存空间再通过mmap,ioremap等即可使用,但测试了很多代码,写到DMA寄存器进行DMA操作都没成功。最后发现,其实将获得的物理地址对应的虚拟地址转化成总线地址就可以进行DMA,基于DMA的硬件使用总线地址而非物理地址。操作环境:Linux ubuntu 4.10.0-原创 2018-01-09 11:45:50 · 2165 阅读 · 0 评论 -
DMA地址获取(二)
测试代码:#include #include #include MODULE_LICENSE("GPL");static int __init test_init(void); static void __exit test_exit(void); int __init test_init(void) { long unsigned int addr,phys_addr,b原创 2018-01-09 15:37:49 · 1815 阅读 · 1 评论 -
DPDK内存之 mbuf
最近在看一些DPDK的东西,因为要做网卡驱动的缘故,所以要弄清楚DPDK原来的一些驱动的做法用以借鉴。在实现网卡进行数据收发的时候,发现用rte_mbuf的时候总有256个字节不可修改,最后结合代码和一些帖子,做了个总结。这就是rte_mbuf、rte_mempool及网卡收到的数据包在内存中的组织结构其中每一个rte_mbuf里面的struct rte_mbuf占128字节,HEADROOM占1...原创 2018-02-27 11:31:15 · 1020 阅读 · 0 评论