使用DMA字符设备驱动程序读写

时间:2017-12-20 16:36:41

标签: c linux linux-device-driver dma

我正在使用此字符设备驱动程序{{3}}来执行DMA。在文档中,作者说要访问驱动程序,您可以像这样打开设备文件

  if ((fd  = open("/dev/udmabuf0", O_RDWR)) != -1) {
        buf = mmap(NULL, buf_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
        /* Do some read/write access to buf */
        close(fd);
    }

我有两个问题。第一个是buf的类型,我假设它是char *而不是char [N],但我只是想确定。

第二个问题是如何实际进行阅读和写作。我可以通过简单地改变buf指向的字符来编写,假设它是一个指针吗?

buf = mmap(NULL, buf_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);    
buf = "I am doing some writing to dma";

如果是这种情况,buf会在内存buf映射到的情况下继续改变吗?

buf = mmap(NULL, buf_size, PROT_READ|PROT_WRITE, MAP_SHARED, fd, 0);
printf(buf) //"abcd"
sleep(10);
printf(buf) //"efgh"

0 个答案:

没有答案