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