2

在过去,您会寻找基本地址、DMA 和 IRQ 来与设备通信。我有点在寻找等价物。

我希望在 Linux 中直接与音频设备通信,而不是通过驱动程序。时间不是问题,但我正在努力寻找所需的信息,而且我知道可能需要大量代码,这很好。

我想知道是否有人能指出我实现这一目标的正确方向。

非常感谢。

4

2 回答 2

2

据我所知,如果您处于 linux 的用户模式进程中,则不能使用 IRQ 或 DMA,本指南(标题 3)似乎证实了这一点,但是在检查后我设法找到了这个 Linux 驱动程序(udmabuf )允许您通过用户空间访问 DMA 缓冲区;也许这就是你要找的?

否则,我可能会尝试编写一个类似但更定制的(udmabuf)版本,具体针对您的目的。

我不完全确定你打算用它做什么,但我要寻找的第一件事是为你想做的事情构建一个驱动程序(这里以 ALSA为例)。至少要在这个级别进行交流,除非您想做一些自己的操作系统开发?(如果你真的不能出于任何目的使用驱动程序,我认为这最终会是这样)

于 2018-06-28T07:27:58.000 回答
0

我自己回答这个问题我感觉很糟糕,WoodyDev,谢谢你为我指明了正确的方向。

你说得对,司机是最好的选择。

最好的解决方案是读取 PCI 地址空间,前 64 个字节包含所有需要的数据。

https://www.safaribooksonline.com/library/view/linux-device-drivers/0596000081/ch15.html

于 2018-06-29T20:08:15.673 回答