2015-04-02 3 views
0

dma_alloc_coherent() возвращает указатель для хранения любых данных. И эта функция принимает переменную типа dma_addr_t и используется для операций DMA. Поэтому я хочу прочитать это значение до начала операции DMA.как читать значение типа переменной dma_addr_t

+2

Вы можете получить более полезные ответы, если вы разместите код, который вы пробовали и где его похоже, идет не так. – leekaiinthesky

ответ

1

В соответствии с DMA-API.txtdma_alloc_coherent() возвращает адрес в виртуальном пространстве ЦП. Между тем 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, но не повезло. –

+0

'cpu_addr' - это адрес на стороне процессора. – 0andriy

 Смежные вопросы

  • Нет связанных вопросов^_^