首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux音频驱动-ALSA概述

概述 ALSA(Advanced Linux Sound Architecture)是linux上主流的音频结构,在没有出现ALSA架构之前,一直使用的是OSS(Open Sound System)音频架构...关于OSS的退出以及ALSA的出现,可以看 Linux音频驱动-OSS和ALSA声音系统简介及其比较。 关于OSS和ALSA音频架构之间的区别图如下: ?...主要的区别就是在OSS架构,App访问底层是直接通过Sound设备节点访问的。而在ALSA音频架构,App是通过ALSA提供的alsa-lib库访问底层硬件的操作,不再访问Sound设备节点了。...同样ALSA为了兼容OSS,ALSA提供了内核模块来模拟OSS声音驱动,所以在OSS架构编写的App无需修改就可以在ALSA运行。另外libaoos库也可以模拟OSS,无需OSS相关的内核模块。...音频子系统文件目录结构 音频系统的文件位于kernel/sound: root@test:~/k3.18/kernel/sound$ ls ac97_bus.c atmel firewire

5.3K31
您找到你想要的搜索结果了吗?
是的
没有找到

Linux音频驱动-ASOC之Machine

答案当然是从代码入手,先进入ASOC在kernel中的位置: kernel/sound/soc root@test:~/test/kernel/sound/soc$ ls adi au1x..., 当平台驱动和平台设备(以前在arch,目前在dt中配置)的名字想匹配的时候,就会调用平台驱动中的probe函数s3c24xx_uda134x_probe。...links */ bool playback_only; bool capture_only; }; .cpu_dai_name: 用于指定cpu侧的dai名字,也就是所谓的cpu侧的数字音频接口...根据struct snd_soc_dai_link结构体的个数,此处是一个,检测需要设置的name是否已经设置。...其实ASOC也就是在ALSA的基础上又再次封装了一次,让写驱动更方便,简便。 这样封装之后,就可以大大简化驱动的编写,关于Machine驱动需要做的: 1.

2.2K22

Linux音频驱动-IIS总线标准

介绍 许多数字音频系统正被引入消费者音频市场,包括CD,磁带,数字声音处理器和数字电视声音。...在这些系统中的数字音频信号需要由许许多多(Very-large-scale integration)的IC组成,处理。...在音频系统中常见的IC芯片有: A/D and D/A 转化器(数模转化器) 数字信号处理器 数字录像,以及出错纠正器 数字滤波器 数字输入/输出的接口 由于设备和IC制造商众多,所以需要一个统一的规范来管理...这样有利于从发送设备提交建立下次传输,同时有利于从接受设备接受数据,为一接受做准备工作。 SD 用二进制补码的形式表示音频数据。传输数据的规则: 1. 保证数据的最高位(MSB)最先被传输。

2.7K11

Linux音频驱动-AOSC之Codec

概述 ASOC的出现是为了让Codec独立于CPU,减少和CPU之间的耦合,这样同一个Codec驱动无需修改就可以适用任何一款平台。还是以下图做参考例子: ?...同时也需要对所有的codec设备进行抽象封装,linux使用snd_soc_codec进行所有codec设备的抽象,而将codec的驱动抽象为snd_soc_codec_driver结构。...总结: 通过调用snd_soc_register_codec函数之后,分配的codec最终放入了codec_list链表中,codec的component组件全部放入component_list链表中...,codec的dai全部存放入code->component.dai_list中。...关于codec侧驱动总结: 1. 分配名字为"codec_name"的平台驱动,注册。 2. 定义struct snd_soc_codec_driver结构,设置,初始化。 3.

3.1K11

Linux音频驱动-声音采集过程

现实中的声音是一段连续的信号, 现在大部分的声音是以离散的数字信号保存下来,例如CD、MP3音频格式。 在保存这些信息时,考虑到对声音质量和存储的效率, 需要对声音的几个重要的基本属性进行研究。...当降至20Hz一或者升高到20KHz人耳就很难听到了。 音调是对声波频率的主观反映,一般频率越高音调越高。...11,025 Hz 22,050 Hz - 无线电广播所用采样率 32,000 Hz - miniDV 数码视频 camcorder、DAT (LP mode)所用采样率 44,100 Hz - 音频...CD, 也常用于 MPEG-1 音频(VCD, SVCD, MP3)所用采样率 47,250 Hz - Nippon Columbia (Denon)开发的世界上第一个商用 PCM 录音机所用采样率...它是有采样率和采样位数共同决定的指标, 例如上述CD的比特率是44100*16*2bit/s = 1.4Mbit/s 存储音频的格式有很多种: 非压缩格式:如目前最流行的WAV格式, 经常用来保存原始录音数据

2.2K11

Linux音频驱动-ASOC(ALSA System on Chip)

Codec驱动与SOC中断CPU耦合严重,这将导致代码重复,一个Codec驱动每个cpu上会出现不同的版本。 2....当音频事件发生时(插拔耳机,音箱)没有标准的方法通知用户,尤其在移动端此事件非常常见。 3. 当播放/录制音频时,驱动会让整个codec处于上电状态,这样会在移动端非常浪费电量。...ASOC音频架构 为了实现上述的新feature,ASOC将嵌入式音频系统分为三大类可重复使用的驱动程序: Platform, Machine, Codec。...Codec类: Codec即编解码芯片的驱动,此Codec驱动是和平台无关,包含的功能有: 音频的控制接口,音频读写IO接口,以及DAPM的定义等。...Platform类: 可以理解为某款SOC平台,平台驱动中包括音频DMA引擎驱动,数字接口驱动(I2S, AC97, PCM)以及该平台相关的任何音频DSP驱动

2.9K61

Linux驱动开发-编写VS1053芯片音频驱动

前言 VS1053是一款硬件编解码的音频芯片,提供SPI接口和IIS接口两种通信协议,这篇文章是介绍在Linux如果模拟SPI时序来操作VS1053完成录音、播放音频歌曲功能。...但是没有注册标准的音频驱动,没有对接音频框架,只是在驱动层完成VS1053的直接控制,本篇的重点主要是介绍如何初始化开发板的GPIO口,使用Linux的延时函数,模拟SPI时序,代码写了两种版本,一种是直接通过...解码的音频格式支持: MP3、OGG、WMA、WAV、MIDI、AAC、FLAC(需要加载 patch) 编码的音频格式支持: WAV(PCM/IMA ADPCM)、OGG(需要加载 patch) VS1053...使用的12.288M 的晶振, 在12.288MHz时钟,最高到48000HZ的所有采样率都可以正常使用。...驱动代码 3.1 驱动端代码 #include #include #include #include <linux

2.9K20

(干货)Ai音箱和Linux音频驱动小谈

四、TINYALSA子系统 (1)代码介绍 目前linux中主流的音频体系结构是ALSA(Advanced Linux Sound Architecture),ALSA在内核驱动层提供了alsa-driver...五、CODEC介绍 (1)专用术语 ASLA - Advanced Sound Linux Architecture OSS - 以前的Linux音频体系结构,被ASLA取代并兼容 Codec -...支持用户空间的声音驱动。 可移植性强,OSS也可以在BSDs和Solaris运行。 本身可以跨平台,可以更方便移植到新的操作系统。...在ASoc出现之前,内核对于SoC中的音频已经有部分的支持,不过会有一些局限性 Codec类: Codec即编解码芯片的驱动,此Codec驱动是和平台无关,包含的功能有: 音频的控制接口,音频读写...对应ak7755.c Platform类: 可以理解为某款SOC平台,平台驱动中包括音频DMA引擎驱动,数字接口驱动(I2S, AC97, PCM)以及该平台相关的任何音频DSP驱动

3.4K21

Linux音频驱动-OSS和ALSA声音系统简介及其比较

概述 昨天想在Ubuntu上用一HTK工具包来绘制语音信号的频谱图和提取MFCC的结果,但由于前段时间把Ubuntu升级到13.04,系统的声卡驱动是ALSA(Advanced Linux Sound...下面本文就主要介绍一OSS和ALSA,并将二者进行比较。 在介绍OSS和ALSA之前,先介绍一音频设备的一些基础知识。...OSSv3是Linux原始的声音系统并集成在内核里,但是OSSv4在2002年OSS成为商业软件时它地位被ALSA所取代。...从2.6版本开始ALSA成为Linux内核中默认的标准音频驱动程序集,OSS则被标记为废弃。 ALSA由许多声卡的声卡驱动程序组成,同时它也提供一个称为libasound的API库。...支持用户空间的声音驱动。 可移植性强,OSS也可以在BSDs和Solaris运行。 本身可以跨平台,可以更方便移植到新的操作系统。

5.1K31

Linux驱动开发_块设备驱动开发(内存模拟存储)

一、前言 块设备驱动块是Linux3大设备驱动框架之一,块设备主要是针对存储类型的设备设计的驱动,配合文件系统完成数据存储。...所以大致总结下:块设备驱动的目的是给Linux文件系统提供底层接口。 二、编写块设备驱动的思路 既然学到了驱动开发,了解到块设备开发。...在Linux下完成块设备驱动编写,主要是要完成来至文件系统的存储请求,文件系统让你把数据存到那个扇区,你驱动就去存,文件系统让你从那个扇区读取输出来,驱动就去读取。...没有依赖于硬件,所以:可以在任何Linux编译安装测试,完成块设备驱动的了解学习。...#include #include #include #include <linux/version.h

4.5K30

32.Linux-2440的DMA驱动(详解)

学了这么多驱动,不难推出DMA的编写套路: 1)注册DMA中断,分配缓冲区 2)注册字符设备,并提供文件操作集合fops   -> 2.1)file_operations里设置DMA硬件相关操作,...来启动DMA 由于我们是用字符设备的测试方法测试的,而本例子只是用两个地址之间的拷贝来演示DMA的作用,所以采用字符设备方式编写 1.驱动编写之前,先来讲如何分配释放缓冲区、DMA相关寄存器介绍、使用...DMA3中断服务函数 //NULL:中断产生类型, 不需要,所以填NULL //1:表示中断时,传入中断函数的参数,本节不需要所以填1,切记不能填0,否则注册失败 2.接下来,我们便来写一个DMA的字符设备驱动...: #include #include #include #include #...include #include #include #include <asm/arch/regs-gpio.h

3.7K90
领券