i.MX6ULL应用移植 | 移植ALSA到Linux开发板(alsa-libalsa-utils 1.2.7版本)

Posted Mculover666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了i.MX6ULL应用移植 | 移植ALSA到Linux开发板(alsa-libalsa-utils 1.2.7版本)相关的知识,希望对你有一定的参考价值。

一、alsa-lib移植

alsa-utils工具通过调用到alsa-lib库来对ALSA框架下的声卡进行操作。

1. 下载源码

下载地址:http://www.alsa-project.org/files/pub/lib/alsa-lib-1.2.7.1.tar.bz2

2. 移植

(1)创建alsa-lib存放的目录

需要在开发板和ubunut中创建一个路径和名字一样的目录,为/usr/share/arm-alsa。

在ubuntu中创建:

sudo mkdir -p /usr/share/arm-alsa

在开发板根文件系统中创建:

mkdir -p usr/share/arm-alsa

(2)解压alsa-lib源码

tar -xjf alsa-lib-1.2.7.1.tar.bz2

(3)配置编译

mkdir alsa-lib-1.2.7.1-build
cd alsa-lib-1.2.7.1
./configure --host=arm-linux-gnueabihf --prefix=/home/mculover666/develop/alsa/alsa-lib-1.2.7.1-build --with-configdir=/usr/share/arm-alsa CC=arm-linux-gnueabihf-gcc

其中--prefix用来设置install的路径,--with-configdir用于设置alsa-lib编译出来的配置文件存放位置,CC用来设置交叉编译器。

(4)编译

make

(5)安装

sudo su
source /home/mculover666/.bashrc

确保root用户能找到编译器,再继续:

make install

切换回普通用户:

su mculover666

查看编译目录:

查看安装目录:

(6)拷贝lib文件

将编译目录下的lib目录中的所有文件都拷贝到开发板根文件系统的/usr/lib目录下

cd ../alsa-lib-1.2.7.1-build 
sudo cp lib/* ~/develop/imx6ull/rootfs-busybox-imx6ull/source_busybox/lib -af


查看拷贝结果:

(7)拷贝配置文件

cd /usr/share/arm-alsa
sudo cp -raf * ~/develop/imx6ull/rootfs-busybox-imx6ull/source_busybox/usr/share/arm-alsa

二、alsa-utils移植

alsa-utils是ALSA的一些小工具集合,可以通过这些小工具测试声卡。

1. 下载源码

axel http://www.alsa-project.org/files/pub/utils/alsa-utils-1.2.7.tar.bz2

2. 移植

(1)解压源码

tar -xf alsa-utils-1.2.7.tar.bz2


(2)编译配置

创建编译文件夹:

mkdir alsa-utils-1.2.7-build

编译配置:

cd alsa-utils-1.2.7
./configure --host=arm-linux-gnueabihf --prefix=/home/mculover666/develop/alsa/alsa-utils-1.2.7-build --with-alsa-inc-prefix=/home/mculover666/develop/alsa/alsa-lib-1.2.7.1-build/include/ --with-alsa-prefix=/home/mculover666/develop/alsa/alsa-lib-1.2.7.1-build/lib/ --disable-alsamixer --disable-xmlto CC=arm-linux-gnueabihf-gcc

(3)编译

make

遇到问题:


解决方法:创建两个空文件。

touch alsaconf/po/t-ja.gmo
touch alsaconf/po/t-ru.gmo

再次make,可以编译成功。

(4)安装

sudo make install


安装完可以看到安装文件夹下的文件:

看看alsa-utils提供的工具:

一定要使用file检查一下可执行文件的类型,看看是不是交叉编译的。

(5)复制到开发板根文件系统

cd alsa-utils-1.2.7-build
sudo cp -rfa bin/* ~/develop/imx6ull/rootfs-busybox-imx6ull/source_busybox/bin
sudo cp -rfa sbin/* ~/develop/imx6ull/rootfs-busybox-imx6ull/source_busybox/sbin
sudo cp -rfa share/* ~/develop/imx6ull/rootfs-busybox-imx6ull/source_busybox/usr/share


(6)设置配置文件路径

进入开发板根文件系统,编辑文件:

vim etc/profile

添加以下内容:

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

至此,移植完成,看一下根文件系统大小:

打包根文件系统:

tar -vcjf rootfs.tar.bz2 *

烧录进去之后测试。

三、声卡设置与测试

1. amixer使用方法

(1)查看帮助信息

amixer --help


(2)查看设置项

amixer scontrols


(3)查看设置值

amixer scontents

2. 播放音乐

(1)设置声卡

设置耳机双声道的音量:

amixer sset Headphone 100,100

设置扬声器双声道的音量:

amixer sset Speaker 120,120


查看左右声道PCM格式混合是否开启:

开启:

amixer sset 'Right Output Mixer PCM' on
amixer sset 'Left Output Mixer PCM' on


(2)播放音乐

aplay test.wav

此时开发板插耳机会从耳机播放,拔出耳机会从扬声器播放。

参考资料

源码与镜像

根文件系统源文件:https://git.code.tencent.com/mculover666/rootfs-busybox-imx6ull

制作出的rootfs镜像存档:netdisk / atk-imx6ull / rootfs / rootfs_minimal_v1_1.tar.bz2(不对外开放)。

以上是关于i.MX6ULL应用移植 | 移植ALSA到Linux开发板(alsa-libalsa-utils 1.2.7版本)的主要内容,如果未能解决你的问题,请参考以下文章

i.MX6ULL应用移植 | 移植tslib到Linux开发板(1.22)

i.MX6ULL应用移植 | 移植tslib到Linux开发板(1.22)

i.MX6ULL应用移植 | 移植lvgl到imx6ull(基于framebuffer)

i.MX6ULL应用移植 | 移植libevdev和evtest工具到imx6ull开发板

i.MX6ULL应用移植 | 移植libevdev和evtest工具到imx6ull开发板

i.MX6ULL应用移植 | 移植lvgl到imx6ull(基于framebuffer)