2015-04-02 233 views
0

dma_alloc_coherent()返回存储任何数据的指针。此函数采用dma_addr_t类型的变量,并将其用于DMA操作。所以我想在DMA操作开始之前读取这个值。如何读取变量类型的值dma_addr_t

+2

如果您发布的代码,你试过你可能会得到更多有用的答案,并在那里似乎出问题了。 – leekaiinthesky 2015-04-02 14:09:53

回答

1

根据DMA-API.txtdma_alloc_coherent()返回CPU虚拟空间中的地址。同时dma_handle是由实际DMA的设备可以使用的相同区域的地址。如果您想获得该值只是用它作为可以包含这样的价值,或打印一个整数作为显示如下:

 
    dma_addr_t handle; 
    void *cpu_addr; 

    cpu_addr = dma_alloc_coherent(…, &handle, …); 
    pr_info("%s: got DMA address: %pad\n", __func__, &handle); 
+0

我需要实际存在于该dma地址中的内容。我可以使用mem dd 0xDMA_ADDR 0x40命令在加载模块后运行tlite提示符读取这些值。最初尝试使用C代码打印这些值,但没有运气。 – 2015-04-05 04:39:41

+0

'cpu_addr'是CPU端的地址。 – 0andriy 2015-04-05 11:43:19

相关问题