参考linux内核:3.4.99
一.概述
ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构。在内核设备驱动层,ALSA提供了alsa-driver,同时在应用层,ALSA为我们提供了alsa-lib,应用程序只要调用alsa-lib提供的API,即可以完成对底层音频硬件的控制。
二.声卡的建立(参考/sound/arm/pxa2xx-ac97.c)
从probe函数开始看起:
pxa2xx_ac97_probe()
|-->snd_card_create() 创建声卡芯片专用数据
| |-->snd_ctl_create()创建control控制设备
| | |-->snd_device_new()-->snd_ctl_dev_register()
| | |-->snd_register_device()创建control字符设备,注册file_ops结构体
| | |-->snd_register_device_for_dev()此时创建了controlC%i设备
| |-->snd_info_card_create()创建该声卡的proc文件
|
|-->pxa2xx_pcm_new()
| |-->snd_pcm_new()创建声卡PCM数据设备
| | |-->_snd_pcm_new()-->snd_pcm_dev_register()
| |