alsa_lib移植到IMX6ULL

news2024/11/13 9:41:33

简介

ALSA是Advanced Linux Sound Architecture的缩写,目前已经成为了linux下的主流音频体系架构,提供了音频和MIDI的支持。
在这里插入图片描述

交叉编译alsa_lib和alsa_utils

下载alsa_lib

在官网中下载AlsaProject

编译

先将文件解压,然后进入alsa_lib文件夹中
首先需要执行configure应用程序,用来对编译项目进行配置。

 ./configure --host=arm-linux-gnueabihf --prefix=/home/heihei/Qt_lib/alsa-lib-1.2.2/temp --enable-shared=yes --enable-static=no --disable-python CC=/usr/local/arm/gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
//选项讲解
-prefix:后面是下载(install)的绝对路劲,也就是编译出来后的文件所存放的目录
-host:具体使用交叉编译器的名称(需要填写全名)
CC:交叉编译工具的绝对路径
-enable-shared=yes --enable-static=no:动态编译还是静态编译,只能选择一个

测试应用程序

alsa-lib是ALSA提供的一套Linux下的C语言库函数,需要将alsa-lib移植到开发板上,这样基于alsa-lib编写的应用程序才能运行。
在这里插入图片描述
使用make 编译工程,然后再使用make install下载编译后的文件到指定目录即可
在这里插入图片描述
进入temp文件夹中可以查看到编译后的所有内容,将temp文件夹中的内容移植移植到开发板上,然后添加PATH环境变量即可。
在这里插入图片描述
编译alsa-utils和编译alsa-lib是一样的这里就不详细介绍了,可以百度。

aplay

aplay是一个用于测试音频播放功能程序,可以使用aplay播放wav格式的音频文件。

alsamixer

用于配置声卡的混音器,它是一个字符图形的配置工具。

alsactl

配置完成后,下次启动配置不会保存则可以直接使用如下命令,将配置项保存到指定文件夹下。

alsactl -f /var/lib/alsa/asound.state store

使用如下命令可以将配置信息加载

alsactl -f /var/lib/alsa/asound.state restore

amixer

使用该应用程序直接配置声卡,例如:

# 打开耳机播放 ZC
amixer sset 'Headphone Playback ZC' on
# 打开喇叭播放 ZC
amixer sset 'Speaker Playback ZC' on
amixer sset 'Speaker AC' 3
amixer sset 'Speaker DC' 3

# 音量设置
amixer sset Playback 230,230 //播放音量设置
amixer sset Speaker 118,118 //喇叭音量设置

# 打开左右声道
amixer sset 'Right Output Mixer PCM' on //打开右声道
amixer sset 'Left Output Mixer PCM' on //打开左声道
# 注释:打开声道很重要,如果移植alsa的库之后使用alsamixer可以找到声卡,音量也配置了。
#但是调用aplay没有声音那就是由于没有打开声道导致的。

参考

《【正点原子】I.MX6U嵌入式Linux C应用编程指南V1.4》

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

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

相关文章

运筹说 第94期|论文速读之基于关键路径的置换流水车间调度问题

前几期的推送已经讲解了网络计划的基本知识、数学模型和相关算法,相信大家对网络计划已经有了充分的了解,这期小编将带大家一起来读一篇基于关键路径的置换流水车间调度问题的文章。 1.文章信息 题目:An efficient critical path based meth…

手把手教你分析解决MySQL死锁问题

在生产环境中出现MySQL死锁问题该如何排查和解决呢,本文将模拟真实死锁场景进行排查,最后总结下实际开发中如何尽量避免死锁发生。 一、准备好相关数据和环境 当前自己的数据版本是8.0.22 mysql> select version; ----------- | version | --------…

Arduino 多任务软件定时器:Simpletimer库的使用

Arduino 多任务软件定时器:Simpletimer库的使用 📌Simpletimer库Arduino官方介绍信息:https://playground.arduino.cc/Code/SimpleTimer/✨该库也是利用了millis()函数来实现任务轮询的。与之类似的还有ESP8266固件自带的Ticker库,但是Ticker库使用仅限于ESP8266内调用,Si…

Discourse Google Analytics 3 的升级提示

根据 Google 官方的消息: Google Analytics(分析)4 是我们的新一代效果衡量解决方案,即将取代 Universal Analytics。自 2023 年 7 月 1 日起,标准 Universal Analytics 媒体资源将停止处理新的命中数据。如果您仍在使…

linux-01-基础回顾

文章目录 Linux-Day01课程内容1. 前言1.1 什么是Linux1.2 为什么要学Linux1.3 学完Linux能干什么 2. Linux简介2.1 主流操作系统2.2 Linux发展历史2.3 Linux系统版本 3. Linux安装3.1 安装方式介绍3.2 安装VMware3.3 安装Linux TODO3.4 网卡设置3.5 安装SSH连接工具3.5.1 SSH连…

【Python】【进阶篇】1、Django是什么?

目录 1、Django是什么?1. Django的由来2. Django的命名3. Django的版本发布1) 功能版2) 补丁版3) LTS 版本 4. Django框架的特点 1、Django是什么? Django 是使用 Python 语言开发的一款免费而且开源的 Web 应用框架。由于 Python 语言的跨平台性&#…

IDA调试

IDA动态调试 有时候程序在运行过程中会生成一些关键的数值,而人力通过静态分析的结果模拟程序的运行来推出这些中间的数值可能很麻烦。简单重复的工作是计算机所擅长的而不是人,所以我们可以让这个程序运行起来,得到这些中间过程的数值。这就…

VLAN与access接口、hybrid接口实验

[r1]dhcp enable //开启DHC0功能P [r1-GigabitEthernet0/0/0]int g 0/0/0.1 [r1-GigabitEthernet0/0/0.1]ip add 192.168.1.1 24 [r1-GigabitEthernet0/0/0.1]dhcp select interface //接口地址池 [r1-GigabitEthernet0/0/0.1]dhcp server dns-list 8.8.8.8 [r1-GigabitEthern…

【Linux】输入系统详述 + 触摸屏应用实战(tslib)

目录简述 前言: 一、输入系统 二、Linux输入系统框架 (1)输入系统的驱动层 (2)输入系统核心层 (3)输入系统事件层 三、APP访问硬件的方式 (1)查询方式、休眠-唤醒…

Linux环境下安装RocketMQ

目录 前置要求: 一、下载RocketMQ 二、上传解压 三、配置rocketmq的环境变量 四、查看rocketmq的目录结构 五、启动 5.1 启动nameserver 5.2 启动broker 六、测试发送消息 七、关闭 前置要求: 准备一台Linux系统的虚拟机提前安装jdk1.8 不会…

C++函数重载的简单介绍

个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【C之路】 中华文化博大精深,我们知道在我们的汉语中,每个词语都有着其不同的含义,甚至是一个词语中有…

毫米波雷达将被颠覆?楚航科技发布隐形雷达ART

4月19日上海车展现场,楚航科技首次对外展示最新的前瞻性研发第N代创新产品——隐形雷达ART。 楚航科技本次发布的科技隐形雷达ART,打破一体式封装设计,重新定义车载毫米波雷达物理形态,为行业提供全新的颠覆性产品设计新路线。 资…

LeetCode 1000. Minimum Cost to Merge Stones【记忆化搜索,动态规划,数组】困难

本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…

【C++类和对象】类和对象(中):析构函数 {析构函数的概念及特性,编译器自动生成的析构函数,构造析构的顺序}

三、析构函数 3.1 概念 通过前面构造函数的学习,我们知道一个对象是怎么来的,那一个对象又是怎么没呢的? 析构函数:与构造函数功能相反,析构函数不是完成对对象本身的销毁,局部对象随函数栈帧的销毁而销毁…

chatGpt自动写文章-chatGpt自动写文章软件

怎么用GPT写文章 使用GPT写文章需要按照以下步骤进行: 确定文章主题:首先需要明确文章的主题,这有助于GPT更好地了解你想要表达的内容,并生成更有针对性的文本。 准备开头和结尾:根据文章主题,准备好文章开…

【参考文献不爆红】Word的多个参考文献连续交叉引用([1] [3]改为[1-3])

文章目录 1. 参考文献格式2. 引入参考文献3. Word的多个参考文献连续交叉引用([1] [3]改为[1-3])3.1引入两个参考文献3.2 引入三个参考文献3.3 知识科普 1. 参考文献格式 参考教程 全选参考文献–>编号的小三角–>自定义编号,修改为[]…

PostMan笔记(三)自动化测试

1. 简介 Postman是一款功能强大的API开发工具,也是一款流行的自动化测试工具。它提供了多种测试功能,包括测试脚本、预请求脚本和测试集合等。 1.1 测试脚本 测试脚本是Postman中用于自动化测试的核心部分。它可以使用JavaScript语言编写,…

使用VScode编写C语言程序 环境安装配置 保姆级教程

Visual Studio Code可通过安装插件来支持C、C#、Python、PHP等语言,使用的工程师越来越多,本文介绍如何使用VS Code进行C语言的编译与调试 目录 一 vsCode配置C/C环境 1. vsCode下载和安装 2. 安装vsCode 二 MinGW编译器下载和配置 1. 下载编译器M…

c++积累8-右值引用、移动语义

1、右值引用 1.1 背景 c98中的引用很常见,就是给变量取个别名,具体可以参考c积累7 在c11中,增加了右值引用的概念,所以c98中的引用都称为左值引用 1.2 定义 右值引用就是给右值取个名字,右值有了名字之后就成了普通…

【达摩院OpenVI】基于流感知的视频目标检测网络LongShortNet

论文&代码 论文链接:[arxiv]代码&应用: 开源代码:[github code]开源应用:[modelscope] 背景介绍 传统视频目标检测(Video Object Detection, VOD)任务以一段视频作为输入,利用视频的…