赞
踩
大家好,我是兔子。
是一个嵌入式软硬件工程师。
正在从单片机开发转岗Linux开发。
兔子这次试用ALSA功能,并使用编译出来的播放工具来播放.wav格式的音乐。
PS:实际上,绝大多数开发板已经有ALSA及相关音频播放工具的功能了。固件不带ALSA功能的开发板少之又少。只是兔子我手上的周立功i.MX287开发板,新版本的固件没有这个功能。
正好,我就单独来编译一次ALSA功能,并将其集成到周立功i.MX287的开发板中。
(如果各位是使用其他的开发板,可以输入aplay –l命令。能看到终端打印开发板声卡的信息,则表明已经自带了ALSA功能。可以往开发板里传入一个.wav格式的音频歌曲。
使用aplay xxx.wav来播放歌曲,xxx.wav表示歌曲的文件名)
ALSA是Advanced Linux Sound Architecture,高级Linux声音架构的简称,它在Linux操作系统上提供了音频和MIDI(Musical Instrument Digital Interface,音乐设备数字化接口)的支持。在2.6系列内核中,ALSA已经成为默认的声音子系统,用来替换2.4系列内核中的OSS(Open Sound System,开放声音系统)。
和兔子一起,去ALSA的官网上下载最新的ALSA库。
https://www.alsa-project.org/wiki/Main_Page
可以看到,目前ALSA最新的版本是1.1.9.
对于我们开发板,只需要下载alsa-lib-1.1.9及alsa-utils-1.1.9即可。
两个文件下载好后,上传到虚拟机的/opt目录下。并解压。
解压,输入命令
tar -jxvf alsa-lib-1.1.9.tar.bz2
tar -jxvf alsa-utils-1.1.9.tar.bz2
可以看到,两个文件以及解压好了。
1)编译alsa-lib
先输入指令
cd alsa-lib-1.1.9
进入alsa-lib-1.1.9文件夹里。
输入alsa库的编译配置
CC=arm-fsl-linux-gnueabi-gcc ./configure --host=arm-linux --prefix=/opt/alsa
<1> CC=arm-fsl-linux-gnueabi-gcc表示指定的编译工具为arm-fsl-linux-gnueabi-gcc
<2> prefix=/opt/alsa 表示最终编译生成及库调用的路径为/opt/alsa
等待一会,可以看到无错误。表示配置通过。
输入make指令,等待编译通过后。
如果无错误,
再输入sudo make install 安装最终生成的文件。
这时,可以在/opt目录下,看到新生成的文件夹alsa
表示alsa-lib安装成功。
2)编译alsa-utils
cd alsa-utils-1.1.9
进入alsa- utils -1.1.9文件夹里。
输入alsa-utils的编译配置
CC=arm-fsl-linux-gnueabi-gcc ./configure --host=arm-linux --prefix=/opt/alsa CFLAGS="-I/opt/alsa/include" LDFLAGS="-L/opt/alsa/lib -lasound" --disable-alsamixer --disable-xmlto --disable-nls
说明
<1> --prefix指定了alsa-utils最终编译生成的目录
<2> CFLAGS=及LDFLAGS=.
由于编译需要alsa-lib的支持,所以需要指明alsa-lib的库及头文件的目录。
<3> alsamixer是图形化的amixer工具,需要ncurses的支持,在secure CRT中乱码,怕麻烦用--disable-alsamixer禁用了它.
等待一会,看到无错误,表示配置通过。
输入make指令,等待编译通过后。
如果无错误,
再输入make install 安装最终生成的文件。
make install 时遇到错误。
可以看到,提示是权限不够。
是因为/opt目录下是只有root用户才能读写操作。
输入指令make clean,清除make install生产的临时文件。
重新make一下。
再输入指令 sudo make install
就可以了。
至此,ALSA所有文件以及全部编译通过。都生成在/opt的alsa目录里。
3)打包,带走
在虚拟机的/opt目录下。
输入指令
sudo tar –cvf alsa.tar alsa/
则在/opt目录下生成了alsa.tar压缩包。
Ps:主要是文件夹里有链接文件,直接整个目录复制,会导致链接文件失效。打包成压缩包,是可以避免链接文件失效。
将生成的alsa.tar拷贝到开发板的/opt目录下。
并解压
tar –xvf alsa.tar
可以看到,在开发板的/opt目录下,生成了alsa文件夹。
(如果不清楚如何拷贝,可以移步教程3)
兔子MCU:从51单片机到Linux 开发板传文件利器-NFS(教程3)zhuanlan.zhihu.com进入alsa/lib目录下,将所有文件一起打包。
tar –cvf libalsa.tar *
这里都是alsa功能的动态库文件。
然后将生成的压缩包libalsa.tar复制到/usr/lib下解压。
<1>需要先重新挂载一下目录
mount –o remount rw / (由于开发板根文件系统做了写保护处理,需要重新挂载一下,在可以往/usr/lib目录下存文件)
<2>cp libalsa.tar /usr/lib
<3>进入/usr/lib目录下,将压缩包解压。
cd /usr/lib
tar –xvf libalsa.tar
<4> 进入/opt/alsa/bin目录下
cp aplay amixer /usr/sbin
将测试工具
aplay,amixer两个测试工具拷贝到开发板/usr/sbin目录下。
(aplay是播放及录制.wav音频的测试工具,amixer是调节音量大小的工具,由于开发板上无麦克风,所以只能播放.wav来测试)
至此,ALSA及测试工具都已经在开发板上安装完毕。
4.测试验证
<1> 插上耳机。
<2> 给开发板上传一个.wav格式的音乐。
<3> 输入命令amixer set Master 252 将音量调节到最大
<4>输入aplay xx.wav命令,开始欣赏音乐
PS:测试工具只能播放.wav格式的音乐播放。
5.音乐欣赏
如果想播放跟多格式的音乐,或者播放视频。可以使用MPlayer来播放。
下一个教程,MPlayer播放器的移植。播放跟多格式的音乐和视频。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。