前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >荔枝派Zero(全志V3S)开启alsa,测试codec

荔枝派Zero(全志V3S)开启alsa,测试codec

作者头像
Gnep@97
发布2023-08-10 10:10:55
6050
发布2023-08-10 10:10:55
举报
文章被收录于专栏:Gnep's_Technology_Blog

前言

默认 dts 中使能了 codec

需要使用的话,在 buildroot 中勾选 alsa-utils 相关命令即可

一、ALSA 简介

ALSA 是 Advanced Linux Sound Architecture,高级Linux声音架构的简称,它在Linux操作系统上提供了音频和MIDI(Musical Instrument Digital Interface,音乐设备数字化接口)的支持。在2.6系列内核中,ALSA已经成为默认的声音子系统,用来替换2.4系列内核中的OSS(Open Sound System,开放声音系统)。

ALSA的官方网址为:https://www.alsa-project.org/wiki/Main_Page

代码语言:javascript
复制
但是ALSA的缺点也是十分明显的:

	1、Codec驱动与SoC CPU的底层耦合过于紧密,这种不理想会导致代码的重复,例如,仅是wm8731的驱动,当时Linux中有分别针对4个平台的驱动代码。
	
	2、音频事件没有标准的方法来通知用户,例如耳机、麦克风的插拔和检测,这些事件在移动设备中是非常普通的,而且通常都需要特定于机器的代码进行重新对音频路劲进行配置。
	
	3、当进行播放或录音时,驱动会让整个codec处于上电状态,这对于PC没问题,但对于移动设备来说,这意味着浪费大量的电量。同时也不支持通过改变过取样频率和偏置电流来达到省电的目的。

二、ALSA 框架

三、buildroot 配置

1、在 buildroot 根目录下执行 make menuconfig,选择 Target packages

2、选择 Audio and video application

3、勾选 atest,选择 alsa-utils

4、按照下图进行配置

5、保存

6、make,重新编译文件系统

四、烧录到 SD 卡

代码语言:javascript
复制
sudo tar xf ./output/images/rootfs.tar -C /media/Gnep/rootfs/

五、测试

1、查看 CODEC 设备

上电可以看到这样一条打印

执行下列命令,查看 CODEC 设备

代码语言:javascript
复制
ls /dev/snd
  • controlC0表示控制器
  • pcmC0D0c 表示capture
  • pcmC0D0p 表示play
  • timer 表示定时器

使用该设备编程可以参考:http://blog.csdn.net/zhenwenxian/article/details/5901239

出现了该设备说明codec驱动被正确加载。

2、alsa-utils 使用

①、查看设备

代码语言:javascript
复制
arecord -l

②、调节音量

代码语言:javascript
复制
alsamixer

alsamixer 是图形化的 amixer 工具,如下图所示

按 F4

从左到右是:耳机音量,耳机输出源,Mic增益,mic1 boost,DAC增益。

可以很方便地调整音频输出设置

00表示当前音量正常,MM表示此声道是静音。可以通过键盘上的M键来切换静音和正常状态。

开机后默认状态是静音状态,需要取消掉静音状态

或者执行下列命令设置音量和解除静音

代码语言:javascript
复制
amixer -c 0 sset 'Headphone',0 100% unmute
代码语言:javascript
复制
alsamixer

③、查看控制器

代码语言:javascript
复制
amixer contents

④、录音测试

耳机输入内置了放大器。

耳机,linein,同时只能使用1种。

使用输入端口前需要设置 mixer 控制器,ADC input Mux

ADC Input Mux 和对应的输入端口

代码语言:javascript
复制
0   linein
1   fmin
2   mic1
3   mic2
4   mic1,mic2
5   mic1+mic2
6   output mixer
7   linein,mic1

使用amixer来设置通道

代码语言:javascript
复制
amixer -c <"card"> cset numid=<"control#"> <"input_port">

where:
<"card"> is the card, 0 for the sunxi-codec and 1 for the hdmi audio output
<"input_port"> is the input port from the table
<"control#"> is the control # showed using: aximer contents

card,device 的确定方法: card,device 必须对应 hdmi 的声卡号和设备号,可以使用 aplay -l 查看对应的 hdmi 设备,可能会有出现多个 hdmi设备,确定当前可以使用的hdmi设备的方法如下:

代码语言:javascript
复制
aplay -l
代码语言:javascript
复制
cat /proc/asound/cards # 查看nvidia设备对应的ID号(根据下面的查看就是为0)

使用下面命令使能耳机并录音

代码语言:javascript
复制
amixer -c 0 cset numid=12 2     # 使能mic1
arecord -D hw:0,0 -d 3 -f S16_LE -r 16000 tmp.wav   # 3s 录音测试 

生成的音频文件

或执行下面的录音10s

代码语言:javascript
复制
arecord -f cd -d 10 record.wav

-f 是设置录音质量,“-f cd”表示录音质量为 cd 级别。-d 是指定录音时间,单位是 s,这条指令就是录制一段 cd 级别 10s 的 wav 音频,音频名字为 record.wav。录制的时候大家就可以对着开发板上的 MIC 说话,直到录制完成。

⑤、播放测试

代码语言:javascript
复制
amixer -c 0 sset 'Headphone',0 100% unmute
speaker-test -twav -c2
atest
aplay  tmp.wav

戴上耳机就可以就可以听到录制的音频

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-04-27,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、ALSA 简介
  • 二、ALSA 框架
  • 三、buildroot 配置
  • 四、烧录到 SD 卡
  • 五、测试
    • 1、查看 CODEC 设备
      • 2、alsa-utils 使用
        • ①、查看设备
        • ②、调节音量
        • ③、查看控制器
        • ④、录音测试
        • ⑤、播放测试
    相关产品与服务
    腾讯云服务器利旧
    云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档