天嵌科技 ARM开发社区

 找回密码
 注册

arm_alsa_lic_util移植

热度 1已有 939 次阅读2012-7-27 10:10 |个人分类:原创| 原创

概述

    ALSAAdvanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识,请查看以下网址:http://www.alsa-project.org/

    在内核设备驱动层,ALSA提供了alsa-driver,同时在应用层,ALSA为我们提供了alsa-lib,应用程序只要调用alsa-lib提供的API,即可以完成对底层音频硬件的控制。

Menuconfig -> Device Drivers -> Sound card support -> Advanced Linux Sound Architecture ,驱动层所添加的音频设备应该也会在这里出现。

由于我们的内核已经包含了对应音频设备的驱动,故不做深入。

 

有了 Alsa 内核驱动,我们还需要 Alsa Lib  Alsa Util 的支持,这 3 者的关系如下图所示:

Alsa Util

-------------

Alsa lib

-------------

Alsa Driver

二.移植前准备

       (详细参考http://blog.csdn.net/iamgooday/article/details/6323863 )

我的平台 fedora 10

交叉编译 arm linux

 

所以fedora 10rpm都可以向这个网站下载

compat-gcc-34-g77-3.4.6-9.i386.rpm

http://ftp-stud.hs-esslingen.de/pub/Mirrors/archive.fedoraproject.org/fedora/linux/releases/10/Everything/i386/os

 

交叉编译器cross-3.0(天嵌交叉工具链的没有c库,我不知道用不用但是最好用上,防止以后出错)

http://ftp.arm.linux.org.uk/pub/armlinux/toolchain/cross-3.0.tar.bz2

 

alsa-lib-1.0.25.tar.bz2

http://www.alsa-project.org/

 

alsa-utils-1.0.25.tar.bz2

http://www.alsa-project.org/

 

 

把编译器关联上

#gedit /etc/profile &

加上下面这两句

              #pathmunge /opt/EmbedSky/4.3.3/bin

              pathmunge /usr/bin

              pathmunge /opt/EmbedSky/3.0/bin

如果你以前有编译器别忘了把以前的注释掉(前加#

#pathmunge /opt/EmbedSky/4.3.3/bin

保存并输入

#source /etc/profile

使其生效。

       查看是否编译器生效

#arm-linux-gcc –v (版本是3.0

#g77 –v (版本是3.4.6

平台建立成功

注:如果pc需要任何软件去

http://ftp-stud.hs-esslingen.de/pub/Mirrors/archive.fedoraproject.org/fedora/linux/releases/10/Everything/i386/os  下载,rpm文件

 

三.移植alsa_lib

#cd /opt/EmbedSky

#tar jxvf alsa-lib-1.0.25.tar.bz2

#cd alsa-lib-1.0.25

# ./configure --host=arm-none-linux-gnueabi --prefix=/usr/share/arm-alsa --enable-shared --disable-python --with-alsa-devdir=/dev --with-configdir=/usr/local/share/alsa --with-plugindir=/usr/local/lib/alsa_lib

配置会先对此命令中的配置项进行检查,然后实现配置。需要注意的是:配置如果出错,未必一定报错,而是会采用默认的配置选项。几个重要的配置项:

 --host 指定编译器,这里指定为交叉编译器。注意运行本配置命令前务必保证编译器已经可以在 Shell下直接执行了 

 --prefix 指定编译后文件的安装路径,后续的安装命令会在该目录中创建 lib  include 两个目录

 --with-configdir 指定 conf 文件的安装目录,该目录中对我们最有用的 alsa.conf ,此文件会被直接移植到你的目标系统中。

4 )  --with-alsa-devdir 指定音频设备的目录。(pcmC0D0c/pcmC0D0p/pcmC0D1p等)alsa_lib 默认到/dev/snd找这些音频设备,但tq6410创建音频设备并不在/dev/snd里,而是在/dev/里,这就需要指定目录,不然会提示找不到pcmCxDx

#make

#make install

这样在/usr/share/arm-alsa 下就生成了arm-linux的库文件了

四.移植alsa_util

Util 会生成用于播放,录制,配置音频的应用文件,对测试很有用处。编译过程如下:

#cd ../

#tar jxvf alsa-utils-1.0.25.tar.bz2

#cd alsa-utils-1.0.25

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

 --host 指定编译器,与 lib 的配置选项相同

 --prefix 指定编译后文件的安装路径,与 lib 的配置选项相同

 CFLAGS 用于编译时指定的编译选项,在这里将利用 lib 编译后生成的头文件,因此指定为该头文件所在目录

 LDFLAGS 用于编译时指定连接库文件,与 CFLAGS 同样状况,将 lib 编译生成的库文件指定出来,

 --with-alsa-inc-prefix 指定头文件目录,这个与 3) 类似,但必须指定,因为 Configure 程序会去该目录检查版本情况。如果不指定的话,则会直接去默认目录 ( 即宿主机对应的 alsalib 目录中寻找,因此可能会有错误 )

下面就开始打包把相关库和文件拷到开发板上了

五.lib  util 安装到嵌入式平台

 

Alsa库和utils

#cd /usr/share

#tar jcvf arm-alsa.tar.bz2 arm-alsa

#mv arm-alsa.tar.bz2 /mnt/hgfs/linux-windows/

配置文件:

#cd /usr/share/

#tar jcvf arm-conf.tar.bz2

#mv arm-conf.tar.bz2 /mnt/hgfs/linux-windows/

进入tq2440释放文件

我用串口发送的

[root@EmbedSky /]#rz

arm-conf.tar.bz2

arm-alsa.tar.bz2

[root@EmbedSky /]# tar jxvf arm-alsa.tar.bz2

[root@EmbedSky /]cp arm-alsa/bin/* bin

[root@EmbedSky /]cp arm-alsa/lib/* lib

             [root@EmbedSky /]# tar jxvf alsa_conf.tar.bz2 -C/usr/local/share/

六.测试程序

调节音量:

[root@EmbedSky /]amixer cset numid=4 on

[root@EmbedSky /]amixer cset numid=3 20

播放:

[root@EmbedSky /]aplay /Windows.wav

(详细参数说明参照http://blog.chinaunix.net/uid-20759926-id-3203934.html )

出现类似Playing WAVE '/Windows.wav' : Signed 16 bit Little Endian, Rate 44100 Hz, Stere没有提示错误,证明移植成功,如果测试成功则能听见声音。但是很遗憾,我的tq6410没有声音,说明alsa驱动有问题,下一期将介绍tq6410ac97 alsa驱动和移植简单原理分析,驱动入口详解,和自己写alsa驱动要实现的实用的代码。本次编译成功的arm linux库和程序可以到群138581843下载

 


路过

鸡蛋
1

鲜花

握手

雷人

刚表态过的朋友 (1 人)

发表评论 评论 (1 个评论)

回复 TQ-lkp 2012-7-27 11:21
好贴!

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号 )

GMT+8, 2024-5-18 14:42 , Processed in 1.031250 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

返回顶部