alsa_总结1
1
controlC0 用于声卡的控制,例如通道选择,混音,麦克风的控制等
pcmC0D0c 用于录音的pcm设备
pcmC0D0p 用于播放的pcm设备
timer 定时器
C0D0代表的是声卡0中的设备0,pcmC0D0c最后一个c代表capture,pcmC0D0p最后一个p代表playback,这些都是alsa-driver中的命名规则。
2
mdev是busybox自带的一个简化版的udev。
作用是在系统启动和热插拔 或动态加载驱动程序时,自动产生驱动程序所需的节点文件,在文件系统中的/dev目录下的设备节点都是由mdev创建的
1 mdev扫描/sys/class和/sys/block中所有的类设备目录,如果在目录中含有 <dev属性> 的文件,且文件中包含的是设备号,则mdev就利用这些信息为这个设备在/dev下创建设备节点
2 当mdev因uevnet事件(以前叫hotplug事件)被调用时
分析设备创建逻辑
1 实际操作的 oparetion 是从 snd_minors[ ] 数组得到的。
2 从上我们可以知道如何把树放进 snd_minors[ ] 数组 中。
3 snd_card_create(index, id, THIS_MODULE, 0, &card);
这个函数(1)创建一个 struct snd_card *card 结构体
(2)创建 一个 controlC 控制设备
4 snd_pcm_new(),创建逻辑设备(播放设备或录音设备)
5 可以看出 snd_register_device 配合 mdev 创建了控制设备节点
snd_pcm_dev_register 配合 mdev 创建了 pcm 播放 录音设备
3
注册设备文件的步骤
总结:
(1)构造snd_card结构体,snd_card_create()构造snd_card结构体并自动创建控制接口。调用函数snd_ctrl_create
(2)初始化;如snd_pcm_new(),创建逻辑设备(播放设备或录音设备)
(3)注册 snd_card_register