dma_alloc_coherent()
возвращает указатель для хранения любых данных. И эта функция принимает переменную типа dma_addr_t
и используется для операций DMA. Поэтому я хочу прочитать это значение до начала операции DMA.как читать значение типа переменной dma_addr_t
ответ
В соответствии с 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);
Мне действительно нужно содержимое, содержащееся в этом адресе dma. Я могу прочитать эти значения, используя команду mem dd 0xDMA_ADDR 0x40 для запуска запроса tlite после загрузки моего модуля. Первоначально пытался напечатать эти значения с помощью кода C, но не повезло. –
'cpu_addr' - это адрес на стороне процессора. – 0andriy
Вы можете получить более полезные ответы, если вы разместите код, который вы пробовали и где его похоже, идет не так. – leekaiinthesky