ALSA子系统(八)------Proc asound documentation

太叔英锐
2023-12-01

你好!这里是风筝的博客,

欢迎和我一起交流。


/proc/asound for fun and profit

Linux倾向于将有关系统进程的信息(包括一些硬件配置信息)放在称为的虚拟文件系统中/proc。这里的项目不是实际文件,
它们是从操作系统内核和关联的内核模块读取信息并将信息发送到操作系统内核和相关的内核模块的一种方式。

可以通过在虚拟文件cat more less 或一些其他文件程序读取信息。通过使用cat或echo将数据写入虚拟文件来完成发送回命令。

/proc/asound文件集是ALSA用于设备信息和某些控制的文件。

有哪些文件?

/proc信息诸如usb描述符转储之类的硬件依赖。内容取决于驱动程序作者,因此实际上不可能有完整的一般描述。也就是说,ALSA确实具有大多数驱动程序都遵循的某些标准。

由ALSA本身提供的基本文件:

  • /proc/asound/cardX/(其中X是声卡号,从0到7):cardX系统知道的每个声卡都有一个目录:有关此目录内容的信息,请参见下文。

  • /proc/asound/cards (只读):已注册卡的列表

  • /proc/asound/dev/ :一个目录,列出如果系统使用devfs则程序用于声音操作的特定设备文件,该目录将存在:如果您的系统不使用devfs(从2006-06开始,大多数不使用):该文件要么不根本存在,或者仅仅是与之的符号链接 /dev/snd

  • /proc/asound/devices (只读):已注册的ALSA设备列表(主设备号= 116)

  • /proc/asound/hwdep (只读):hwdep(硬件依赖)控件的列表未在所有系统上出现(这是否仍然存在?)

  • /proc/asound/meminfo (只读):内存使用情况信息,此proc文件仅在使用内存调试(或完整)选项构建alsa驱动程序时才会显示:当前在内核空间上分配的内存。

  • /proc/asound/modules(只读):已注册的ALSA声卡驱动程序列表,这不是ALSA加载的所有内核模块,这只是:硬件驱动程序的列表。对于使用中的每个声卡,期望在此处看到一行。

  • /proc/asound/oss/ :包含有关oss仿真的信息的目录,有关此目录内容的信息,请参见下文。

  • /proc/asound/pcm(只读):分配的pcm流的列表,请注意,这(可能)并不表示活动流的列表,而是设备的列表。这对于找出hw:0,0样式的设备非常有用:像aplay这样的命令需要的名称。

  • /proc/asound/seq/ :包含有关音序器信息的目录,有关此目录内容的信息,请参见下文。

  • /proc/asound/timers(只读):类似于/proc/asound/pcm,它是ALSA知道的计时器列表,并且描述了:在该时刻实际使用了哪些计时器。

  • /proc/asound/version (只读):ALSA子系统模块(或内核)的版本和日期

注意:上面标记为“只读”的设备仅用于提供内核信息。所有其他设备均为读写设备,可用于向ALSA发送命令。

设备文件/dev/snd/ (和 /proc/asound/dev/)

设备文件是应用程序连接到的文件,以便执行声音操作,例如录音,播放,更改音量,获取定时信息以及执行MIDI音序。
通常可以在/dev/snd中找到它们,但在某些系统上也可以在/proc/asound/dev中找到它们。

通常,设备文件以aaaCxDy的形式命名:
aaa是服务名称
x是卡号(0-7)
y设备编号(0-?)

controlC?  control devices (i.e. mixer, etc.)
hwC?D?     hwdep devices
midiC?D?   rawmidi devices
pcmC?D?p   pcm playback devices
pcmC?D?c   pcm capture devices
seq        sequencer device
timer      timer device

/proc/asound/oss/ 目录

此目录下文件的内容是动态更改的。 如果未加载任何oss仿真模块(snd-pcm-oss,snd-mixer-oss),则不会列出pcm或混音器设备。

/proc/sound/cardX/ 目录

id (RO)
 the id string of the card

ac97#? (RO)
 AC97 codec information

ac97#?regs (RO)
 (printable) register dump

midi? (RO)
 the current status of input/output on the
 rawmidi device

pcm?p
 the directory status of the given pcm playback stream
pcm?c
 the directory status of the given pcm capture stream

/proc/asound/cardX/pcmXX/ 目录

这些可选目录中的文件包含PCM流信息。请注意,在Linux 2.6.17和更高版本中,只有在内核配置中启用了CONFIG_SND_VERBOSE_PROCFS(“详细的procfs内容”)后,这些文件才可用。

pcm??/info (RO)
 the pcm stream general info (card, device, name, etc.)

pcm??/oss (RO)
 oss emulation info (shown only when the pcm is opened
 as an oss device).

pcm??/sub?
 the substream information directory

pcm??/sub?/info (RO)
 the pcm substream general info (card, device, name, etc.)

pcm??/sub?/status (RO)
 the current status of the given pcm substream
 (status, position, delay, tick time, etc.)

pcm??/sub?/hw_params (RO)
 hw_params set-up on the substream
 (buffer size, format, etc.)

pcm??/sub?/sw_params (RO)
 sw_params set-up on the substream
 (threshold, etc.)

pcm??/sub?/prealloc (RW)
 the number of pre-allocated buffer size in kb.
 you can specify the buffer size by writing to this proc file:

 # echo 128 > /proc/asound/card0/pcm0p/sub0/prealloc

 to allocate 128kbyte for playback, substream #0, stream #0
 on the card #0.

要查找计算机上alsa模块的所有选项,请运行以下脚本…

modinfo $(modprobe -l snd-*) > ~/modinfo

/proc/asound/seq/ 目录

clients : Need info
drivers : Need info
oss : Need info
queues : Need info
timer : Need info

那么,什么是硬件设备?

典型输出如下所示:

prompt# cat /proc/asound/devices  
  0: [ 0]   : control 
  1:        : sequencer 
 16: [ 0- 0]: digital audio playback 
 18: [ 0- 2]: digital audio playback 
 24: [ 0- 0]: digital audio capture 
 25: [ 0- 1]: digital audio capture 
 33:        : timer 

上面的示例表示,有一个控制通道,两个PCM播放设备(DAC),两个PCM捕获设备(ADC),一个MIDI音序器和一个计时器。

在此示例所使用的系统上,没有任何其他内容的重新映射,这些等同于以下内容:

Device:

  • 第一个PCM播放DAC
  • 它的作用:播放声音
  • 设备文件如下所示:
  • crw-rw---- 1 root audio 116, 16 Mar 4 21:30 pcmC0D0p
    -(日期可能会有所不同)
  • ALSA称之为:hw:0,0的播放部分,它是一个双工设备
  • 第一个PCM录音ADC
  • 它的作用:播放声音
  • 设备文件如下所示:
  • crw-rw---- 1 root audio 116, 16 Mar 4 21:30 pcmC0D0c
  • ALSA称之为:hw:0,0的录音部分,这是一个双工设备
  • 第一个声卡的控制通道
  • 它的作用:控制音量/录音增益(和其他功能?)
    设备文件如下所示:
  • crw-rw---- 1 root audio 116, 0 Mon DD hh:mm /dev/snd/controlC0
    (Mon DD hh:mm是在系统上创建设备文件的日期和时间)

/proc 将会改变

将来/ proc将仅用于过程信息,查找ALSA信息的位置将是sysfs。
在2.6内核源目录,他的文件在这:
Documentation/filesystems/sysfs.txt

与此有关的一些信息。 从2006-06(和内核2.6.16)开始,/ sys存在,但/ proc接口尚未更改。

翻译:https://alsa.opensrc.org/Proc_asound_documentation#The_.2Fproc.2Fasound.2Foss.2F_directory

 类似资料: