alsa-lib 交叉编译以及声卡驱动测试 (转)

l  下载alsa-utils, alsa-lib, 版本要一致

http://www.alsa-project.org/main/index.php/Download

l  编译alsa-lib

./configure --host=arm-none-linux-gnueabi --disable-python --prefix=/usr/share/arm-alsa/

如果出现下列错误信息,--disable-pyhont

collect2: ld returned 1 exit status

make[3]: *** [smixer-python.la] 错误 1

make[3]: Leaving directory `/home/enzo/work/tq2440/alsa/alsa-lib-1.0.26/

modules/mixer/simple‘

make[2]: *** [all-recursive] 错误 1

make[2]: Leaving directory `/home/enzo/work/tq2440/alsa/alsa-lib-1.0.26/

modules/mixer‘

make[1]: *** [all-recursive] 错误 1

make[1]: Leaving directory `/home/enzo/work/tq2440/alsa/alsa-lib-1.0.26/

modules‘

--with-alsa-inc-prefix和--with-alsa-prefix分别指定了交叉编译util应用所需要的alsa- lib的头文件和库文件;--disable-alsamixer表示不编译生成alsamixer这个应用程序,因为该程序依赖于ncurses这个图 形界面库,目前我们对于该库还不能交叉编译,故放弃

变换到root身份

# sudo su

alsa-lib在make install时还需要交叉编译,因此需要将交叉编译器的路径加入到PATH环境变量中

#export PATH=$PATH:/usr/local/arm/4.3.2/bin && make install

l  编译alsa-utils

./configure --host=arm-none-linux-gnueabi --prefix=/usr/share/arm-alsa/ --with-alsa-inc-prefix=/usr/share/arm-alsa/include --with-alsa-prefix=/usr/share/arm-alsa/lib --disable-xmlto --disable-alsamixer

l  复制alsa-lib, alsa-utils 到开发板

开发板的复制路径不是随便设置,必须和主机编译时相同的路径,否则动态库无法找到某些文件

所以要把/usr/share/arm-alsa文件夹得内容复制到开发板/usr/share/arm-alsa

复制alsa lib到开发板/lib文件夹下

/dev 目录下已经包含一下设备

/dev/controlC0 ,/dev/pcmC0D0p , /dev/pcmC0D0c, /dev/mixer, /dev/timer

[[email protected] /]# ls /dev/pcm*

/dev/pcmC0D0c  /dev/pcmC0D0p

[[email protected] /]# ls /dev/con*

/dev/console    /dev/controlC0

[[email protected] /]# ls /dev/mix*

/dev/mice   /dev/mixer

[[email protected] /]# ls /dev/tim*

/dev/timer

测试aplay程序

[[email protected] bin]# ./aplay  test1.wav

ALSA lib confmisc.c:768:(parse_card) cannot find card ‘0‘

ALSA lib conf.c:4246:(_snd_config_evaluate) function snd_func_card_driver returned error: No such file or directory

ALSA lib confmisc.c:392:(snd_func_concat) error evaluating strings

ALSA lib conf.c:4246:(_snd_config_evaluate) function snd_func_concat returned error: No such file or directory

ALSA lib confmisc.c:1251:(snd_func_refer) error evaluating name

ALSA lib conf.c:4246:(_snd_config_evaluate) function snd_func_refer returned error: No such file or directory

ALSA lib conf.c:4725:(snd_config_expand) Evaluate error: No such file or directory

ALSA lib pcm.c:2217:(snd_pcm_open_noupdate) Unknown PCM default

aplay: main:696: audio open error: No such file or directory

此时需要创建声卡节点到/dev/snd/

需要手动创建节点

if [ ! -d /dev/snd/ ]; then

echo "make snd node."

mkdir /dev/snd

ln -s /dev/pcmC0D0c  /dev/snd/pcmC0D0c

ln -s /dev/pcmC0D0p /dev/snd/pcmC0D0p

ln -s /dev/timer /dev/snd/timer

ln -s /dev/controlC0 /dev/snd/controlC0

ln -s /dev/mixer /dev/snd/mixer

fi

export PATH=$PATH:/usr/share/arm-alsa/bin

export ALSA_CONFIG_PATH=/usr/share/arm-alsa/share/alsa/alsa.conf

# volumn设置声音大小

amixer cset numid=1 45

成功配置后

l  Alsa声卡配置

** alsa声卡可以正常工作,amixer 设置

*** amixer 用法

#amixer cset numid=N  value        //设置变量,numid对应contents的id

#amixer cget numid=N               //获取amixer的某个设置

[root@EmbedSky /mnt]# amixer contents

numid=1,iface=MIXER,name=‘Master Playback Volume‘

; type=INTEGER,access=rw------,values=1,min=0,max=63,step=0

: values=50

numid=7,iface=MIXER,name=‘Tone Control - Bass‘

; type=INTEGER,access=rw------,values=1,min=0,max=15,step=0

: values=0

numid=8,iface=MIXER,name=‘Tone Control - Treble‘

; type=INTEGER,access=rw------,values=1,min=0,max=3,step=0

: values=0

numid=10,iface=MIXER,name=‘PCM Playback De-emphasis‘

; type=ENUMERATED,access=rw------,values=1,items=4

; Item #0 ‘None‘

; Item #1 ‘32Khz‘

; Item #2 ‘44.1Khz‘

; Item #3 ‘48Khz‘

: values=0

numid=5,iface=MIXER,name=‘Mic Sensitivity‘

; type=INTEGER,access=rw------,values=1,min=0,max=7,step=0

: values=1

numid=6,iface=MIXER,name=‘Mic Volume‘

; type=INTEGER,access=rw------,values=1,min=0,max=31,step=0

: values=0

numid=16,iface=MIXER,name=‘ADC +6dB Switch‘

; type=BOOLEAN,access=rw------,values=1

: values=off

numid=17,iface=MIXER,name=‘ADC Polarity Switch‘

; type=BOOLEAN,access=rw------,values=1

: values=off

numid=2,iface=MIXER,name=‘Capture Volume‘

; type=INTEGER,access=rw------,values=1,min=0,max=7,step=0

: values=1

numid=12,iface=MIXER,name=‘AGC Switch‘

; type=BOOLEAN,access=rw------,values=1

: values=off

numid=13,iface=MIXER,name=‘AGC Target Volume‘

; type=INTEGER,access=rw------,values=1,min=0,max=3,step=0

: values=3

numid=14,iface=MIXER,name=‘AGC Timing‘

; type=INTEGER,access=rw------,values=1,min=0,max=7,step=0

: values=0

numid=3,iface=MIXER,name=‘Analog1 Volume‘

; type=INTEGER,access=rw------,values=1,min=0,max=31,step=0

: values=27

numid=4,iface=MIXER,name=‘Analog2 Volume‘

; type=INTEGER,access=rw------,values=1,min=0,max=31,step=0

: values=27

numid=15,iface=MIXER,name=‘DAC +6dB Switch‘

; type=BOOLEAN,access=rw------,values=1

: values=off

numid=18,iface=MIXER,name=‘DAC Polarity Switch‘

; type=BOOLEAN,access=rw------,values=1

: values=off

numid=20,iface=MIXER,name=‘DC Filter Enable Switch‘

; type=BOOLEAN,access=rw------,values=1

: values=off

numid=19,iface=MIXER,name=‘Double Speed Playback Switch‘

; type=BOOLEAN,access=rw------,values=1

: values=off

numid=11,iface=MIXER,name=‘Input Mux‘

; type=ENUMERATED,access=rw------,values=1,items=4

; Item #0 ‘Differential‘

; Item #1 ‘Analog1‘

; Item #2 ‘Analog2‘

; Item #3 ‘Both‘

: values=0

numid=9,iface=MIXER,name=‘Sound Processing Filter‘

; type=ENUMERATED,access=rw------,values=1,items=4

; Item #0 ‘Flat‘

; Item #1 ‘Minimum1‘

; Item #2 ‘Minimum2‘

; Item #3 ‘Maximum‘

: values=0

l  声卡测试

** 播放

[root@EmbedSky /mnt]# aplay sound_check.wav

Playing WAVE ‘sound_check.wav‘ : Signed 16 bit Little Endian, Rate 44100 Hz, Stereo

** 录音

播放命令

arecord -d 1 -t wav -c2 -r 8000 -f  S16_LE test1.wav

arecord -d 60 -t wav -c2 -r 8000 -f S16_LE test1.wav

-d  录音时间,单位秒

-c 声道数

-r 采样频率

-f  采样格式, 16bit  小端

** 播放的同时录音

1.       分别开两个终端,其中一个播放, 播放的声音无断断续续等异常

aplay sound_check.wav

另一个随机录音

arecord -d 3 -t wav -c2 -r 8000 -f S16_LE test1.wav

2. 录音1分钟, 另一个终端随机播放, 然后听录音后的文件,没有任何噪声,中断和异常

arecord -d 60 -t wav -c2 -r 8000 -f S16_LE test1.wav

aplay test1.wav

** 双声道录音后播放是否正常(未测试)

** 交叉编译其他程序:
Add included file in program: #include <alsa/asoundlib.h>
~# arm-none-linux-gnueabi-gcc -lasound -L/usr/share/arm-alsa/lib/ -I/usr/share/arm-alsa/include/ -o test my_test.c

时间: 2024-10-12 05:05:18

alsa-lib 交叉编译以及声卡驱动测试 (转)的相关文章

Ubuntu下声卡驱动解决方法alsa

一.首先介绍一下什么是ALSA : Advanced Linux Sound Architecture 的简称为 ALSA ,译成中文的意思是先进的Linux声音架构(这是google翻译的):一谈到架构就有点范围太大了,所以ALSA不仅仅是包括对声卡的支持和驱动: ALSA具有如下特征: 1.对所有音频接口的高效支持,从普通用户的声卡到专业级别多路音频设备: 2.声卡驱动完全模块化设计: 3.SMP and thread-safe design. 4.开发库(alsa-lib) 为程序设计提供

Linux ALSA声卡驱动之二:声卡的创建

1. struct snd_card 1.1. snd_card是什么 snd_card可以说是整个ALSA音频驱动最顶层的一个结构,整个声卡的软件逻辑结构开始于该结构,几乎所有与声音相关的逻辑设备都是在snd_card的管理之下,声卡驱动的第一个动作通常就是创建一个snd_card结构体.正因为如此,本节中,我们也从 struct cnd_card开始吧. 1.2. snd_card的定义 snd_card的定义位于改头文件中:include/sound/core.h [c-sharp] vi

Linux声卡驱动移植和测试

一.分析驱动程序,根据开发板修改代码 代码太长,就不贴了,几个注意点: 1. 查看开发板原理图和S3C2410的datasheet,UDA1341的L3MODE.L3DATA.L3CLOCK分别与S3C2410的GPB2.GPB3.GPB4相连,IISLRCK=GPE0, IISSCLK=GPE1, CDCLK=GPE2,IISSDI=GPE3, IISSDO=GPE4,部分代码如下: 2. 两个重要结构体:audio_buf_t和audio_stream_t,其中audio_stream_t

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之声卡驱动移植

经过前面的移植,tqimx6q已经可以正常驱动触摸屏了,本文我们来移植声卡驱动. DTS编写 由于tqimx6q搭载的声卡是sgtl5000芯片,因此,参考dts目录下其它开发板的相应信息,我们可以在DTS中添加如下内容: / { ... regulators { ... reg_3p3v: 3p3v { compatible = "regulator-fixed"; regulator-name = "3P3V"; regulator-min-microvolt

AM335x(TQ335x)学习笔记——WM8960声卡驱动移植

经过一段时间的调试,终于调好了TQ335x的声卡驱动.TQ335x采用的Codec是WM8960,本文来总结下WM8960驱动在AM335x平台上的移植方法.Linux声卡驱动架构有OSS和ALSA两种架构,目前最常用的架构是ALSA,本文也使用ALSA架构对WM8960驱动进行移植. ASoC是对ALSA驱动架构的进一步封装.ASoC将ALSA驱动中的各模块抽象为三部分:Platform.Codec和Machine.Platform主要是平台硬件驱动,包括SoC的IIS模块.DMA等,在本文中

VxWorks平台声卡驱动

[email protected],更多内容请关注http://user.qzone.qq.com/2692407267 VxWorks平台下声卡驱动,符合Linux平台OSS(Open Sound System)音频接口标准,用户可以像Linux中操作oss设备文件(/dev/dsp)一样来进行音频方面的编程.通过声卡驱动技术支撑,可以在VxWorks平台下实现语音识别(Speech Recognition).语音合成(Text To Speech).Voip(Voice Over IP)网络

Linux声卡驱动框图

1.声卡驱动注册完成后的框图 2.open & hw_params 完.

客所思KD10传奇版声卡驱动 v3.3.160914 官方版

客所思KD10传奇版声卡驱动是为客所思KD10传奇版声卡推出的驱动程序,主要用于解决声卡不能被电脑识别或者无法正常使用等问题,安装一下驱动,用就可以使用声卡了,另外用户对硬件调节声卡更为直观.更为方便,是客所思KD10传奇版声卡用户的必备程序.需要的朋友快来欧普园下载使用该驱动吧!客所思KD10驱动安装说明1.在欧普园下载驱动 解压后双击运行exe文件2.然后根据安装向导一步步安装完成即可客所思KD10传奇版声卡主要特点1.多种硬件声效2.硬件消原声3.专利原声闪避功能4.数码显示屏和操控按键相

Android JNI用于驱动测试

硬件平台:S3C6410 操作系统:Ubuntu.windows 板子系统:Android 开发工具:jdk,ndk,eclipse 本次测试从linux内核模块编译开始,以S3C6410的pwm驱动为例. pwm_6410.c: #include <linux/module.h> #include <linux/kernel.h> #include <linux/fs.h> #include <linux/init.h> #include <linu