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开发板