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

news2024/11/26 1:57:11

文章目录

  • 前言
  • 一、ALSA 简介
  • 二、ALSA 框架
  • 三、buildroot 配置
  • 四、烧录到 SD 卡
  • 五、测试
    • 1、查看 CODEC 设备
    • 2、alsa-utils 使用
      • ①、查看设备
      • ②、调节音量
      • ③、查看控制器
      • ④、录音测试
      • ⑤、播放测试


前言

默认 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

但是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 卡

sudo tar xf ./output/images/rootfs.tar -C /media/Gnep/rootfs/

在这里插入图片描述

五、测试

1、查看 CODEC 设备

上电可以看到这样一条打印
在这里插入图片描述

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

ls /dev/snd

在这里插入图片描述

  • controlC0表示控制器
  • pcmC0D0c 表示capture
  • pcmC0D0p 表示play
  • timer 表示定时器

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

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

2、alsa-utils 使用

①、查看设备

arecord -l

在这里插入图片描述

②、调节音量

alsamixer

alsamixer 是图形化的 amixer 工具,如下图所示
an在这里插入图片描述按 F4在这里插入图片描述

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

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

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

开机后默认状态是静音状态,需要取消掉静音状态
在这里插入图片描述
或者执行下列命令设置音量和解除静音

amixer -c 0 sset 'Headphone',0 100% unmute

在这里插入图片描述

alsamixer

在这里插入图片描述

③、查看控制器

amixer contents

在这里插入图片描述

④、录音测试

耳机输入内置了放大器。

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

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

ADC Input Mux 和对应的输入端口

0   linein
1   fmin
2   mic1
3   mic2
4   mic1,mic2
5   mic1+mic2
6   output mixer
7   linein,mic1

使用amixer来设置通道

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

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

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

生成的音频文件
在这里插入图片描述
或执行下面的录音10s

arecord -f cd -d 10 record.wav

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

⑤、播放测试

amixer -c 0 sset 'Headphone',0 100% unmute
speaker-test -twav -c2
atest
aplay  tmp.wav

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


我的qq:2442391036,欢迎交流!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/459798.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年五月份图形化四级打卡试题

活动时间 从2023年5月1日至5月21日&#xff0c;每天一道编程题。 本次打卡的规则如下&#xff1a; 小朋友每天利用10~15分钟做一道编程题&#xff0c;遇到问题就来群内讨论&#xff0c;我来给大家答疑。 小朋友做完题目后&#xff0c;截图到朋友圈打卡并把打卡的截图发到活动群…

开放式耳机有什么好处,盘点几款性能不错的开放式耳机

随着人们对生活质量要求的提高&#xff0c;大家在运动的时候都喜欢戴上耳机&#xff0c;享受运动的乐趣。但是传统耳机戴久了之后就会出现耳朵酸痛的情况&#xff0c;这是因为传统耳机佩戴方式是通过空气振动来传递声音&#xff0c;而人在运动时就会伴随着大量的汗水&#xff0…

基于ResNet-attention的负荷预测

一、attention机制 注意力模型最近几年在深度学习各个领域被广泛使用&#xff0c;无论是图像处理、语音识别还是自然语言处理的各种不同类型的任务中&#xff0c;都很容易遇到注意力模型的身影。从注意力模型的命名方式看&#xff0c;很明显其借鉴了人类的注意力机制。我们来看…

GB/T28181-2022相对2016版“基于TCP协议的视音频媒体传输要求“规范解读和技术实现

规范解读 GB/T28181-2022和GB/T28181-2016规范&#xff0c;有这么一条“更改了附录 D 基于 TCP 协议的视音频媒体传输要求&#xff08;见附录 D&#xff0c;2016 年版的附录 L&#xff09;。”。 本文主要是针对GB/T28181-2022里面提到的“基于 TCP 协议的视音频媒体传输要求…

chmod 命令 (chmod 0660)

chmod的作用: 用于设置文件所有者和文件关联组的命令,就是控制用户的权限命令 注意事项: chown 需要超级用户 root 的权限才能执行此命令。 自己常用chmod 命令是 chmod 777 * 给所有文件权限 chmod 777 文件名 给单独文件权限 这个777 是怎么来的, 或者chmod 0660 这…

Servlet路径问题(“/“到底代表什么)-“web应用程序的根目录“与“web站点的根目录“

JavaWeb——Servlet路径问题("/"到底代表什么) JavaWeb——Servlet路径问题("/"到底代表什么) 在JavaWeb中&#xff0c;使用路径时出现了大量的"/“&#xff0c;而每次使用”“时都感觉其代表的含义是不同的&#xff0c;因此&#xff0c;本篇文章将汇…

分布式ID解决方案对比

在复杂的分布式系统中&#xff0c;往往需要对大量的数据进行唯一标识&#xff0c;比如在对一个订单表进行了分库分表操作&#xff0c;这时候数据库的自增ID显然不能作为某个订单的唯一标识。除此之外还有其他分布式场景对分布式ID的一些要求&#xff1a; 趋势递增&#xff1a; …

(栈和队列) 232. 用栈实现队列 ——【Leetcode每日一题】

❓232. 用栈实现队列 难度&#xff1a;中等 请你仅使用两个栈实现先入先出队列。队列应当支持一般队列支持的所有操作&#xff08;push、pop、peek、empty&#xff09;&#xff1a; 实现 MyQueue 类&#xff1a; void push(int x) 将元素 x 推到队列的末尾int pop() 从队列…

Jenkins之allure测试报告邮件通知

Jenkins入门教程&#xff1a;Jenkins入门 一般情况下&#xff0c;我们想让Jenkins将构建结果或构建中的代码执行结果&#xff08;比如跑批数据&#xff09;通知我们&#xff0c;这个是构建后的操作。 经常用的是邮件通知 邮件通知基础 Jenkins自带了邮件通知配置&#xff0c…

灌区信息化和灌区自动化监测方案

一、方案背景 以提升粮食综合生产能力和水资源高效利用作为现代化改造的目标&#xff0c;把国家粮食安全和节水放在首位&#xff1b;以完善灌区工程设施体系和管理体系作为现代化改造的基础&#xff0c;以现代信息技术应用、智慧灌区建设作为提高管理能力和服务水平的手段&…

windows 文件夹目录过长超过长度259字符 文件打不开

当路径超过260个字符时&#xff0c;Windows操作系统就无法处理文件或文件夹&#xff0c;并且无法打开或重命名。这是因为Windows系统使用的文件系统&#xff0c;即FAT和NTFS文件系统&#xff0c;都有最大路径限制。NTFS文件系统最大长度限制为32767个字符&#xff0c;但操作系统…

算法训练day4:栈与队列

那么我这里再列出四个关于栈的问题&#xff0c;大家可以思考一下。以下是以C为例&#xff0c;使用其他编程语言的同学也对应思考一下&#xff0c;自己使用的编程语言里栈和队列是什么样的。 C中stack 是容器么&#xff1f;我们使用的stack是属于哪个版本的STL&#xff1f;我们…

FPGA基于XDMA实现PCIE X8采集AD9226数据 提供工程源码和QT上位机程序和技术支持

目录 1、前言2、我已有的PCIE方案3、PCIE理论4、总体设计思路和方案5、vivado工程详解6、驱动安装7、QT上位机软件8、上板调试验证9、福利&#xff1a;工程代码的获取 1、前言 PCIE&#xff08;PCI Express&#xff09;采用了目前业内流行的点对点串行连接&#xff0c;比起 PC…

就这些了, 常见 6 款API 文档工具推荐

8年开发经验&#xff0c;想分享一下我接触到这些 API 文档工具&#xff1a; Swagger: Swagger 是一个开源的 API 文档管理工具&#xff0c;可以通过注解自动生成 API 文档&#xff0c;并提供交互式 UI 和 API 调试功能。 Swagger 支持多种语言和格式&#xff0c;包括 Java、Pyt…

Linux没网络的情况下快速安装依赖或软件(挂载本地yum仓库源(Repository))

一、上传iso系统镜像&#xff1a; 上传和系统同一版本、同一位数&#xff08;32bit&#xff1a;i686或i386/64bit:x86_64&#xff09;的系统&#xff0c;不能是Minimal版本&#xff0c;可以是DVD&#xff08;较全&#xff09;或everything&#xff08;最全&#xff09;。 注&am…

Android移除sdk中的权限

有些第三方sdk中的敏感权限会给我们上架带来困扰&#xff0c;比如&#xff1a;QUERY_ALL_PACKAGES权限会导致上架Google play被拒。 案例&#xff1a;<uses-permission android:name"android.permission.QUERY_ALL_PACKAGES" /> 在app下的Manifest中并没有添加…

linux编译安装python的全过程,pip python不与linux系统环境混乱

因为使用要求&#xff0c;使得我需要在linux环境下安装一个独立的python环境&#xff0c;不干扰其他环境。 预安装 在安装python之前&#xff0c;请在linux系统下安装下面这些包&#xff1a; sudo apt-get install namelibssl-dev libcurl4 libcurl4-openssl-dev zlib-devel…

Zynq-7000、国产zynq-7000的GPIO控制(一)

Zynq-7000系列GPIO排布如下图所示&#xff0c;著名手册ug585第14章&#xff0c;第一个图&#xff0c;这图很清晰的表明&#xff0c;一共54个MIO&#xff0c;64个EMIO&#xff0c;所有这些IO共分为4个bank&#xff0c;其中 Bank0 32bit —>> MIO[0:31] Bank1 22bit —…

【移动端网页布局】流式布局案例 ② ( 实现顶部固定定位提示栏 | 布局元素百分比设置 | 列表样式设置 | 默认样式设置 )

文章目录 一、样式测量及核心要点1、样式测量2、高度设定3、列表项设置4、设置每个元素的百分比宽度5、设置图像宽度 二、核心代码编写1、HTML 标签结构2、CSS 样式3、展示效果 三、完整代码示例1、HTML 标签结构2、CSS 样式3、展示效果 一、样式测量及核心要点 1、样式测量 京…

8、接口的高级用法

1、索引类型 我们可以使用接口描述索引的类型和通过索引得到的值的类型&#xff0c;比如一个数组[‘a’, ‘b’]&#xff0c;数字索引0对应的通过索引得到的值为’a’。我们可以同时给索引和值都设置类型&#xff0c;看下面的示例&#xff1a; interface RoleDic {[id: number…