Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel 如何在用户空间中分配DMA信道?_Linux Kernel_Raspberry Pi_Dma - Fatal编程技术网

Linux kernel 如何在用户空间中分配DMA信道?

Linux kernel 如何在用户空间中分配DMA信道?,linux-kernel,raspberry-pi,dma,Linux Kernel,Raspberry Pi,Dma,我是一家公司的维护者。这种技术需要使用一个DMA信道。我们曾经对DMA通道0进行过硬编码,但收到多个错误报告,指出当X同时运行时,程序无法正常工作(错误报告:和,) 我们在Raspberry PI固件中找到了一个API,该固件包含一个API来管理共享资源,如DMA通道,并确定哪些可用 Pattrick Hueper,但仍报告0频道可用。也许X没有使用这个API来宣布它正在使用哪个通道 我为内核空间程序找到了dma\u请求\u通道(),但在用户空间中不可用 作为计算机上的好公民,从用户空间使用DM

我是一家公司的维护者。这种技术需要使用一个DMA信道。我们曾经对DMA通道0进行过硬编码,但收到多个错误报告,指出当X同时运行时,程序无法正常工作(错误报告:和,)

我们在Raspberry PI固件中找到了一个API,该固件包含一个API来管理共享资源,如DMA通道,并确定哪些可用

Pattrick Hueper,但仍报告0频道可用。也许X没有使用这个API来宣布它正在使用哪个通道

我为内核空间程序找到了
dma\u请求\u通道()
,但在用户空间中不可用


作为计算机上的好公民,从用户空间使用DMA频道并避免与其他工具冲突的正确方法是什么?

我已经能够确认以下几点:

你包括:

#include <mach/dma.h>

...
int rc = bcm_dma_chan_alloc(
  BCM_DMA_FEATURE_NORMAL,  /* Features found in mach/dma.h */
  &dma_base,
  &dma_irq
);
发布:

bcm_dma_chan_free(dma_chan);
到目前为止,它已将DMA通道2返回给我:

[   99.372778] chan = rc = 2, dma_base=f3007200, IRQ=77
[   99.372790] Returned DMA channel 2.
[  103.971670] Releasing DMA Channel 2
和4(当我没有发布DMA 2时)

[   99.372778] chan = rc = 2, dma_base=f3007200, IRQ=77
[   99.372790] Returned DMA channel 2.
[  103.971670] Releasing DMA Channel 2