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

Linux ALSA声卡驱动之二:声卡的创建

一、结构体struct snd_card: 1.1. snd_card是什么: snd_card可以说是整个ALSA音频驱动最顶层的一个结构,整个声卡的软件逻辑结构开始于该结构,几乎所有与声音相关的逻辑设备都是在...snd_card的管理之下,声卡驱动的第一个动作通常就是创建一个snd_card结构体。...第二步,创建声卡的芯片专用数据: 声卡的专用数据主要用于存放该声卡的一些资源信息,例如中断资源、io资源、dma资源等。...exit); MODULE_AUTHOR("Nicolas Pitre"); MODULE_DESCRIPTION("AC97 driver for the Intel PXA2xx chip"); 驱动程序通常由...三、snd_card_create(): 这个接口在新的Linux内核里面可能找不到,这里我们主要是学习思想! snd_card_create()在/sound/core/init.c中定义。

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

Linux ALSA声卡驱动之三:PCM设备的创建

,经过解码后,最终送到音频驱动程序中的就是PCM数据,反过来,在录音时,音频驱动不停地把采样所得的PCM数据送回给应用程序,由应用程序完成压缩、存储等任务。...PCM信号送回给用户空间的应用程序 二、alsa-driver中的PCM中间层: ALSA已经为我们实现了功能强劲的PCM中间层,自己的驱动中只要实现一些底层的需要访问硬件的函数即可。...每个声卡最多可以包含4个pcm的实例,每个pcm实例对应一个pcm设备文件。pcm实例数量的这种限制源于linux设备号所占用的位大小,如果以后使用64位的设备号,我们将可以创建更多的pcm实例。...,这个回调函数会在声卡的注册阶段被调用。...snd_pcm_set_ops 设置操作该pcm的控制/操作接口函数,参数中的snd_pcm_ops结构中的函数通常就是我们驱动要实现的函数 snd_card_register 注册声卡,在这个阶段会遍历声卡下的所有逻辑设备

37320

使用AppleALC快速仿冒声卡驱动

使用AppleALC快速仿冒声卡驱动 所需下载: AppleALC:点击下载 LiLu:点击下载 Clover Configurator(旧版,适用于未r5120之前的版本) Clover Configurator...(适用于OpenClover) OpenCore Configurator:点击下载 ---- 首先需要确定声卡型号 在windows系统中打开Aida64查看or查看设备管理器里声卡的硬件ID。...确定好声卡型号之后,点击打开 该网站,找到自己的型号点击进去。 以我的声卡为例,型号是ALC887。...---- 驱动声卡 将applealc.kext、lilu.kext放到引导的对应文件夹中,打开config配置文件,注入ID: OC: 方法一: 在NVRAM-7开头-注入启动参数 alcid=50...试了多个ID无果先查看AppleAlc驱动是否加载了。 主流设备一般都没有问题,另外使用过voodoohda那就先删除万能声卡驱动,重装一次系统再试。

4.6K10

31.Linux-wm9876声卡驱动(移植+测试)

本节学习目的 1)分析Linux中的OSS声卡系统 2)移植wm9876声卡 3)使用madplay应用程序播放mp3 1.声音三要素 采样频率 音频采样率是指录音设备在一秒钟内对声音信号的采样次数,...本节的WM8976的MODE脚接的高电平,所以是3线控制 3.接下来便来分析linux内核的声卡系统 在linux声卡中存在两种声卡系统,一种是OSS(开放声音系统),一种是ALSA(先 进Linux声音架构...是因为, 当注册声卡系统的驱动后,才会有设备节点,此时这里的代码是没有驱动的,后面会分析到 3.2 再来看看“sound”字符设备的file_perations: ?...如下图所示,找到一个支持s3c24xx板卡的声卡驱动uda1341 ?.../configure --host=arm-linux --prefix=/app/tmp //修改configure,设置编译器,设置安装路径 make    //编译

4.9K71

Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)

在ASoc出现之前,内核对于SoC中的音频已经有部分的支持,不过会有一些局限性: Codec驱动与SoC CPU的底层耦合过于紧密,这种不理想会导致代码的重复,例如,仅是wm8731的驱动,当时Linux...中有分别针对4个平台的驱动代码。...ASoC不能单独存在,他只是建立在标准ALSA驱动上的一个它必须和标准的ALSA驱动框架相结合才能工作。...Machine驱动 Machine驱动负责处理机器特有的一些控件和音频事件(例如,当播放音频时,需要先行打开一个放大器);单独的Platform和Codec驱动是不能工作的,它必须由Machine驱动把它们结合在一起才能完成整个设备的音频处理工作...ASoC的工作机理,必须要理解这一系列数据结构之间的关系和作用,下面的关系图展示了ASoC中重要的数据结构之间的关联方式: 图4.1 Kernel-2.6.35-ASoC中各个结构的静态关系 ASoC把声卡实现为一个

26610

ALSA声卡驱动的DAPM(二)-建立过程

我们之前已经说过,驱动中定义的snd_soc_dapm_widget数组,只是作为一个模板,所以,snd_soc_dapm_new_control所做的第一件事,就是为该widget重新分配内存,并把模板的内容拷贝过来...widgets链表中,以后我们就可以通过声卡的widgets链表来遍历所有的widget,再次强调一下snd_soc_dapm_new_controls函数所完成的主要功能: 为widget分配内存,并拷贝参数中传入的在驱动中定义好的模板...snd_soc_route结构数组,该数组的每个条目描述了目的widget的和源widget的名称,以及控制这个连接的kcontrol的名称,最终,驱动程序使用api函数snd_soc_dapm_add_routes...3 ...... 4 5 return 0; 6 } snd_soc_dapm_add_path函数是整个调用链条中的关键,我们来分析一下:(注意linux3.10.28...代码没有相应的snd_soc_dapm_add_path函数,在linux3.12才有设计snd_soc_dapm_add_path函数) 1 static int snd_soc_dapm_add_path

3.4K50

ALSA声卡驱动的DAPM(一)-DPAM详解

一、DAPM简介:  DAPM是Dynamic Audio Power Management的缩写,直译过来就是动态音频电源管理的意思,DAPM是为了使基于linux的移动设备上的音频子系统,在任何时候都工作在最小功耗状态下...用户空间的应用程序无需对代码做出修改,也无需重新编译,DAPM根据当前激活的音频流(playback/capture)和声卡中的mixer等的配置来决定那些音频控件的电源开关被打开或关闭。...9 snd_soc_dapm_out_drv 该widget对应一个输出驱动控件 10 snd_soc_dapm_adc 该widget对应一个ADC 11 snd_soc_dapm_dac...platform域    位于该域上的widget通常是针对平台或板子的一些需要物理连接的输入/输出接口,例如耳机、扬声器、麦克风,因为这些接口在每块板子上都可能不一样,所以通常它们是在machine驱动中进行定义和控制

8.4K60

Linux(Centos) Python编译安装达梦驱动 dmPython

安装完 DM 数据库软件后,在安装路径下的 drivers 目录下,可以找到 dmPython 的驱动源码,由于提供的是源码,需要自己编译安装。...linux 平台安装方法一 注意:需要先安装 DM 数据库 1.下载驱动包源码 wget https://download.dameng.com/eco/docs/python-126594-20201027...unzip python-126594-20201027.zip 3.编译驱动包 cd 驱动源码解压目录python/dmPython_C/dmPython python setup.py install...linux 平台安装方法二 注意:本机没有安装 DM 数据库 1.下载驱动包源码 wget https://download.dameng.com/eco/docs/python-126594-20201027...: 编译结果 Installed /usr/lib64/python2.7/site-packages/dmPython-2.3-py2.7-linux-x86_64.egg Processing dependencies

4.2K10

Linux驱动实践:带你一步一步编译内核驱动程序

作 者:道哥,10+年嵌入式开发老兵,专注于:C/C++、嵌入式、Linux。 目录 学习的困惑 实践环境 编译进内核 编译驱动模块 资料下载 别人的经验,我们的阶梯! 大家好,我是道哥。...编译Linux驱动程序,肯定需要内核源码,这里选择的是 linux-4.15 版本,可以在官网下载。 文末有下载方式。...$ mkdir linux-4.15/drivers/hello 对于一个驱动来说,最重要的就是3个文件: 源代码 Kconfig Makefile 只要按照固定的格式来编写这3个文件,linux内核的编译脚本就可以确保把我们的驱动程序编译进去...现在,hello驱动程序的Makefile已经创建好了,我们还要让linux内核的编译框架知道这个文件才行。...编译驱动模块 编译驱动模块,也有两种 操作方式: 编译所有的驱动模块 在执行 make ARCH=x86_64 menuconfig 指令的时候,把 hello 配置成 M; 然后在 linux-

2.7K30

【嵌入式开发】 Linux Kernel 下载 配置 编译 安装 及 驱动简介

: make 可以进行多作业并行编译, 在多核的机器上这样进行编译效率很高; -- 并行编译弊端 : 如果 Makefile 出现依赖错误, 并行编译会报错, 使用 单作业 make 可以编译通过,...驱动分类 驱动分类 : 驱动分为 字符设备, 块设备 和  网络设备; a....; 驱动位置 :  -- 内核源码中的位置 : 内核中的驱动在根目录下的 drivers 目录下; octopus@octopus:~/uplooking/kernel/linux-2.6.32.63/...-3.11.0-15/drivers# pwd /usr/src/linux-headers-3.11.0-15/drivers 常用的驱动简介 :  -- block : 块设备驱动; --...char : 虚拟中断驱动; -- serial : 串口驱动; -- net : 网络设备驱动; -- vedio : framebuffer 设备驱动; -- sound : 声卡驱动;

2.2K51

Linux驱动之网卡驱动剖析

Linux 网络设备驱动架构 驱动架构自上而下分为4层: 协议接口层 设备接口层 设备驱动功能层 网络设备与媒介层 协议接口层 协议接口层主要功能是给上层协议提供接收和发送的接口。...传递的数据被描述为套接字缓冲区,用struct sk_buff结构描述,该结构体定义位于include/linux/skbuff.h中,用于在Linux网络子系统中的各层之间传输数据,该结构在整个网络收发过程中贯穿始终...设备驱动功能层 类似于字符设备,struct net_device结构体也提供了一个操作函数集struct net_device_ops来描述对网卡的各种操作。...源码分析 笔者基于的是 S5PV210 的 DM9000 驱动,会大体上对 DM9000 的驱动源码进行分析, 分析源码位于DM9000 源码 platform 框架分析 DM9000 的驱动是基于 platform...return platform_driver_register(&dm9000_driver); } 该函数调用了 platform_driver_register 函数注册了一个平台总线驱动

55.5K20

Linux驱动开发: USB驱动开发

四、 linux内核下USB相关的API函数与数据结构 前面介绍了USB相关一些基础概念与重要的数据结构,接下来就分析在linux内核中如何编写一个USB 驱动程序,编写与一个USB设备驱动程序的方法和其他总线驱动方式类似...(中断传输方式) 5.1 USB驱动注册框架代码 #include #include #include /*...[root@wbyq linux-3.5]# make menuconfig 由于内核自带了usb鼠标驱动,所以需要去除: Device Drivers ---> HID support...---> USB HID support ---> USB HID transport layer //HID传输层 去掉之后,再重新编译内核,烧写内核。...#include /* 本程序为USB鼠标驱动程序,要安装本驱动,需要先将内核自带的USB驱动程序卸载掉 */ //定义USB的IDTAB 24ae:2002 static

69.3K20

Linux——Linux驱动之基本理论常识总结(什么是Linux驱动Linux驱动需要掌握哪些?)

2 Linux驱动程序需要掌握的内容 3 Linux驱动可参考的资源 4 ARM处理器体系架构 5 ARM的前世今生 ---- 0 引言 前面Linux专题中关于Linux下系统编程总结了17篇博文,主要是为了提高...Linux下的C编程应用能力,熟悉Linux编程应用环境,从此篇博文起开始Linux驱动的总结,后面计划加一些综合实践项目练习。...字符设备驱动:大部分都是字符设备,如GPIO、LED、串口、蜂鸣器、声卡等 块设备驱动:存储设备,如U盘、硬盘、TF卡等 网络设备驱动:通信设备,如wifi、以太网等 2 Linux驱动程序需要掌握的内容...3)主控芯片原厂:如iMX6、4412等,原厂会在Linux官方代码基础上,加入适配自己主控的SDK等; 4)外设芯片原厂:比如4G、wifi、声卡、显卡芯片等,这么复杂的全自己搞可麻烦了,这些外设原厂会给对应的驱动...、结构体,其实Linux驱动,就是掌握了这些东西怎么用,适应到自己要写的驱动程序中。

8.1K30
领券