Код
kbuf = dma_alloc_coherent(NULL, CRU_DMA_BUF0_SIZE, &dma_handle, 0);
далее возвращается физический адрес в user space:
Код
ret = put_user(virt_to_phys(kbuf), (unsigned long __user *)arg/*адрес переменной dma_buf в приложении*/);
в приложении пытаюсь замапить эту область памяти:
Код
int fd = open("/dev/mem", O_RDWR|O_SYNC);
if(mmap_dma = (unsigned long*) mmap(NULL, CRU_DMA_BUF0_SIZE, PROT_READ, MAP_SHARED, fd, dma_buf))
printf("Can't mapping DMA buffer\n");
и попадаю в условие.
Люди добрые, что я делаю не так, где накуралесил?
Код
#define CRU_DMA_BUF0_SIZE (0x00800000)
dmesg
