资源描述:
《嵌入式linux alsa移植》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、嵌入式LinuxALSA移植alsa是在LINUX出现比较晚的音频处理库,主要是针对原有的OSS的库进行改进.性能更好,支持多个播放源等.但相应的,增加的编程的复杂性. 旧的oss是采用标准文件IO接口,设备打开采用open,声音播录是采用数据IO接口(read/write),设备的参数采用ioctl来控制.都是系统调用因此无需额外库和配置文件来操作设备.但alsa也是最终采用open/read/write/ioctl,但操作结点更多.更复杂.因此在编程中是采用额外的库来操作的. ALSA的
2、体系结构 官方主页 http://www.alsa-project.org/主要跟编程相关是· alsa-lib.ALSA应用库(最常用)·ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.0.22.tar.bz2·alsa-driver一些常见芯片的ALSA驱动代码,一般内核会集成.·ftp://ftp.alsa-project.org/pub/driver/alsa-driver-1.0.22.1.tar.bz2· alsa-firmware一些D
3、SP或ASIC的专用的微码(运在芯片之上,启动时由LINUX装入到硬件中).·ftp://ftp.alsa-project.org/pub/firmware/alsa-firmware-1.0.20.tar.bz2· alsa-utils一般ALSA小的测试工具.如aplay/arecord播放和录音小程序.·ftp://ftp.alsa-project.org/pub/utils/alsa-utils-1.0.22.tar.bz2·alsa-oss用alsa接口模拟旧的oss接口.·ftp:/
4、/ftp.alsa-project.org/pub/oss-lib/alsa-oss-1.0.17.tar.bz2 其中alsa-driver,alsa-firwware是内核开发者所接触的东西,对于已经正常运行硬件,通常意味着这一部分已经整合到内核当中,无需修改. 而alsa-utils主要是测试一些小工具. 因此对于一个应用程序开发者,或者嵌入式应用开发者,接触到主要是alsa-lib编译出来的库libasound. LinuxALSA驱动测试 以下是我在RHEL5上测试ALSA的
5、结果,在ARM或MIPS开发板上类似 如果安装ALSA,在/proc会看到相应设备: 用cat/proc/asound/devices [root@hxyalsa-lib-1.0.22]# cat/proc/asound/devices 2: :timer 3: :sequencer 4:[0-0]:rawmidi 5:[0-1]:digitalaudioplayback 6:[0-0]:digitalaudioplayback 7:[0-0]:digital
6、audiocapture 8:[0] :control 正常情况下,在你的/dev/snd会看到如下设备结点(有例外,就是内核驱动调整了结点位置)用ls-l/dev/snd[root@hxyalsa-lib-1.0.22]# ls-l/dev/sndtotal0crw-------1rootroot116,8Mar 202:41controlC0crw-------1rootroot116,4Mar 202:41midiC0D0crw-------1rootroot116,7
7、Mar 202:41pcmC0D0ccrw-------1rootroot116,6Mar 202:41pcmC0D0pcrw-------1rootroot116,5Mar 202:41pcmC0D1pcrw-------1rootroot116,3Mar 202:41seqcrw-------1rootroot116,2Mar 202:41timer 通常桌面版已经安装了alsa-utils.可以执行一下aplay-h,测试是否输出.如果可以来播入一下wav文件来测试整个环境是否正常工作.
8、 以下是一些用alsa-utils测试样例·播放wave文件· aplay/mnt/nfs/test.wav·变频播放,(以是以44KHz来播放音频)·aplay-Drate_44k/mnt/nfs/test.wav·录音,以20秒的间隔(-d20),立体声(-c2),频率是8000Hz来录制Wave格式音频·arecord-d20-c2-twav-r8000-f"Signed16bitLittleEndian"/mnt/nfs/test.wav·测试混音播放(先是播放test1.wav,然后再