+-
如何在linux中直接驱动PC扬声器
在最初的IBM PC上,您可以通过将1和0写入I / O地址0x61的第1位来直接驱动PC扬声器.它基本上是一个1位DAC,运行时钟频率为1.19 MHz(系统时钟为4.77MHz,除以4).

有没有办法在linux中做到这一点?理想情况下,我想要一个串行设备,我可以只提供文件或实时比特流,并将其直接连接到主板上的TTL扬声器电压引脚.我见过的大部分内容都是通过ioctls在PIT上播放2个,但我想直接驱动扬声器,而不是通过定时器.

最佳答案
有一个名为snd-pcsp的内核模块正好尝试这样做(源代码在sound / drivers / pcsp /中,你可以看到它如何解决端口0x61).它作为ALSA设备暴露,因此很容易为其提供实时比特流.

然而,在我的系统上,它产生的声音听起来与你所说的非常相似,至少不是我尝试过的一件事.但你没有说出你想用它做什么.
我也认为你不能达到1.19 MHz.但您始终可以修改内核模块以满足您的需求.

如果这不起作用,如果您的用户空间应用程序是root并且可以执行ioperm,则没有什么能阻止您写入端口0x61.但是当然你遇到的问题是Linux不是实时操作系统,你的应用程序可能随时被抢占. (我也会对如何防止这种情况感兴趣,比如为这个特定的应用程序保留一个核心).

点击查看更多相关文章

转载注明原文:如何在linux中直接驱动PC扬声器 - 乐贴网