迅为-4418开发板移植ALSA声卡
高级Linux 声音体系(Advanced Linux Sound Architecture,缩写为 ALSA)是 Linux内核中,为声卡提供的驱动组件,以替代原先的 OSS(开放声音系统)。一部分的目的是支持声卡的自动配置,以及完美的处理系统中的多个声音设备。本文介绍如何移植 ALSA到 iTOP-4418 开发板,适用于最小 Linux 系统和 qt 系统。
查看本次提供的压缩包内容,分别为指导文档,测试音乐以及源码,在 binary 文件夹中有编译好的二进制文件,供用户直接使用,如下图所示。
将提供的两个压缩包拷贝到 Ubunut 的工作目录“/root/ALSA”中,如果没有该目录的话需要创建,拷贝完成后如下图所示。
首先编译 alsa-lib-1.1.5.tar.bz2 ,在当前目录输入命令“tar -xvf alsa-lib-1.1.5.tar.bz2”解压,然后用命令“cd alsa-lib-1.1.5 ”,进入刚才解压的文件夹中,如下图所示。
在此目录,输入以下命令对源码进行交叉编译。
CC=arm-none-linux-gnueabi-gcc ./configure --host=arm-linux --prefix=/root/ALSA/install/
完成后如下图所示。
然后依次输入命令“make”,“make install”生成库文件到目录“/root/ALSA/install/”中。这两条命令执行成功,则可以在上级目录看到 install 文件夹已经生成。如下图红框所示。
接下来编译 alsa-utils-1.1.5.tar.bz2,在当前目录输入命令“tar -xvf alsa-utils-1.1.5.tar.bz2 ”解压,然后用命令“cd a alsa-utils-1.1.5 ”,进入刚才解压的文件夹中,如下图所示。
在此目录,输入以下命令对源码进行交叉编译。
CC=arm-none-linux-gnueabi-gcc ./configure --prefix=/root/ALSA/install/ --host=arm-linux --withalsa-inc-prefix=/root/ALSA/install/include --with-alsa-prefix=/root/ALSA/install/lib --disable-alsamixer
--disable-xmlto --disable-nls
完成后如下图所示。
然后依次输入命令“make”生成二进制文件到当前目录中的对应文件夹中,这些文件分别在下图中被红框选中的文件夹中,这些文件夹中没有扩展名并与文件夹相同名称的文件便是生成的 ELF 文件。
这里以 aplay 文件夹为例,使用“cd aplay”进入文件夹,用 ls 命令可以看到生成的aplay 可执行文件,如下图所示。
用户需要将以上所有被选中文件夹中的可执行文件拷贝到 U 盘,传入到开发板,编译到此完成。
如果用户不想编译的话,binary 文件夹中有编译好的可执行文件,直接拷贝到 U 盘上进行下一步即可。
接下来的命令行操作在串口控制台进行。将 U 盘插到运行 qt 系统的开发板上,使用命令“mount /dev/sda1 /mnt/disk”挂载 U 盘。使用命令“cp /mnt/disk/ALSA/* /bin”将 ALSA 所有可执行文件拷贝到“/bin”目录下。
插上耳机,使用命令“speaker-test -c 2 &”检测耳机,耳机中输出粉红噪音。执行结果如下图所示。
![](http://www.eechina.com/data/attachment/forum/202012/08/094612wsc9wyo279s2o7b9.png)
![](http://www.eechina.com/data/attachment/forum/202012/08/094612avv7nwunjbx02nnb.png)
![](http://www.eechina.com/data/attachment/forum/202012/08/094612kuftr8mezcp2ppay.png)
![](http://www.eechina.com/data/attachment/forum/202012/08/094612u8uu05xdswzb5x0c.png)
![](http://www.eechina.com/data/attachment/forum/202012/08/094612a4cklyawg0p4gdc0.png)
![](http://www.eechina.com/data/attachment/forum/202012/08/094613v888i8zevahmi4vi.png)
![](http://www.eechina.com/data/attachment/forum/202012/08/094613oviqqzh545jzvzvq.png)
![](http://www.eechina.com/data/attachment/forum/202012/08/095548qgjreg74cudh24oo.jpg)
![](http://www.eechina.com/data/attachment/forum/202012/08/101144oqg8qulp7qt8lq3e.jpg)