![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux驱动
dahailinan
这个作者很懒,什么都没留下…
展开
-
Linux下I/O资源管理(原理)
下图为示意图,读者可以参考该图来阅读代码。个人认为对Linux下I/O资源的管理如掌握__request_region函数就能掌握其精髓。Linux下对I/O资源主要用结构体resource来管理,管理的方法就是用resource来描述使用的I/O资源的状态,并将这些resource用如下两个resource作为表头按地址大小的顺序链接起来。struct resource ioport_resource = {.name = "PCI IO",.start = 0,.end = .转载 2020-12-25 16:57:42 · 559 阅读 · 0 评论 -
深入PCI与PCIe之一:硬件篇
PCI总线和设备树是X86硬件体系内很重要的组成部分,几乎所有的外围硬件都以这样或那样的形式连接到PCI设备树上。虽然Intel为了方便各种IP的接入而提出IOSF总线,但是其主体接口(primary interface)还依然是PCIe形式。我们下面分成两部分介绍PCI和他的继承者PCIe(PCI express):第一部分是历史沿革和硬件架构;第二部分是软件界面和UEFI中的PCI/PCe。自PC在1981年被IBM发明以来,主板上都有扩展槽用于扩充计算机功能。现在最常见的扩展槽是PCIe插槽,实际转载 2020-12-25 11:39:07 · 1543 阅读 · 0 评论 -
Linux_GUI加速(2)_Linux中的DRM-KMS分析
在上一小节《Linux GUI加速(1)_GUI系统概述》中,我们从应用层到kernel层大致分析了linux中的图形界面的构成,并在最后给出了kernel中DRM+KMS的软件显示框架以及accelerate logic+framebuffer+displayport的硬件结构。在这一子篇会将这两块内容详细展开。本篇主要以Xilinx的xc7z010 的SOPC(zybo的开发板)为硬件平台,在以下几方面介绍:以zynq 7000的逻辑资源(PL)搭建CRTC/Encoder/Connect.转载 2020-12-17 09:58:16 · 855 阅读 · 0 评论 -
Linux_GUI加速(1)_GUI系统概述
开始前的几点说明:本文会尽量从初学者的角度去描述整个Linux整个图形子系统,但由于其复杂性,涉及到的模块比较多,可能会需要一些相关的先验知识; 对于系统的介绍,分析的着重点可能不会在于为什么该这样设计,而是在于在现有的显示系统下,我们能做些什么来适配我们的目的;1.前言GUI作为人机交互信息量最大的一种方式,无论在消费还是工业级产品上都大行其道。但同时由于它处在整个系统的核心位置,对外需要通过鼠标、键盘 、显示器进行I/O获取和控制,在内需要负责图形的生成,渲染,整个系统复杂度比较高。本文会从转载 2020-12-17 09:57:21 · 335 阅读 · 0 评论 -
S5pv210 HDMI 接口在 Linux 3.0.8 驱动框架解析
转载请标明作者、出处:http://blog.csdn.net/liukun321/article/details/18452663本文主要简述S5pv210处理器的 HDMI 接口在 Linux 3.0.8 内核下的驱动框架。 现在三星的主流处理器基本都支持HDMI,使用HDMI也有段时间了,却一直不知道它是怎么工作的,只知道linux和android下都会有一个HDMI-service的用户服务程序。然后底层会有HDMI驱动。知道HDMI 和framebuffer有点关系,却不知道...转载 2020-12-14 15:59:37 · 660 阅读 · 0 评论 -
HDMI接口与协议
一、HDMI接口的工作原理 这张图是HDMI接口的架构示意图。从左边的信号源中你可以看到,HDMI接口的信源可以是任何支持HDMI输出的设备,而接入端也可以是任何带有HDMI输 入接口的设备。无论他们是音频设备、视频设备还是控制设备,HDMI接口都可以应用其中。 在HDMI接口中的数据信号采用的是TMDS最小化传输差分信号协议。这种数据传输协议曾经在DVI接口上得到广泛的应用。而HDMI接口上的数据信号也 沿用了这种协议。这种协议会将标准8bit数据转换为10bit信号,并且在转换过程中使用微.原创 2020-12-14 15:58:00 · 4507 阅读 · 0 评论 -
Linux内核中断系统处理机制-详细分析
一、中断概述 中断是指在CPU正常运行期间,由于内外部事件或由程序预先安排的事件引起的CPU暂时停止正在运行的程序,转而为该内部或外部事件或预先安排的事件服务的程序中去,服务完毕后再返回去继续运行被暂时中断的程序。1.1中断类型同步中断由CPU本身产生,又称为内部中断。这里同步是指中断请求信号与代码指令之间的同步执行,在一条指令执行完毕后,CPU才能进行中断,不能在执行期间。所以也称为异常(exception)。异步中断是由外部硬件设备产生,又称为外部中断,与同步中断相反,异步中断可在任..原创 2020-11-17 13:50:45 · 447 阅读 · 0 评论 -
Android智能手机中各种音频场景下的audio data path
上一篇文章(Android智能手机上的音频浅析)说本篇将详细讲解Android智能手机中各种音频场景下的音频数据流向,现在我们就开始。智能手机中音频的主要场景有音频播放、音频录制、语音通信等。不同场景下的音频数据流向有很大差异,即使是同一场景,在不同的模式下音频数据流向也有所不同。1,音频播放Android系统audio框架中主要有三种播放模式:low latency playback、deep buffer playback和compressed offload playback。a)l.转载 2020-11-04 19:06:58 · 693 阅读 · 1 评论 -
Android智能手机上的音频浅析
手机可以说是现在人日常生活中最离不开的电子设备了。它自诞生以来,从模拟的发展到数字的,从1G发展到目前的4G以及不久将来的5G,从最初的只有唯一的功能(打电话)发展到目前的全功能,从功能机(feature phone)发展到智能机(smart phone),可谓变化巨大。对于手机上的音频来说,刚开始只有语音通信功能,现在不仅语音通信,还可以听音乐、录音、智能语音(语音输入/语音交互)等。智能手机中的音频场景众多,可以说是手机多媒体系统中最复杂的子系统了。今天我们就谈谈Android智能手机上的音频。.转载 2020-11-04 19:06:01 · 323 阅读 · 0 评论 -
【Qualcomm高通音频】音效调试_录音文件播放有杂音,如何定位原因?
一、录音播放数据处理过程介绍(1)TX方向麦克风(硅麦克风或者主机体麦克风)采集模拟音频信号,经过内部CODEC芯片中的adc转换为数字信号,在经过高通音频DSP处理音效后编码为wav/aac/amr/mp3等格式文件。(2)RX方向音频文件经过解码、重采样还原为pcm数据,经过DSP处理音效后送到内部CODEC,然后经过DAC转换为模拟信号,送到喇叭。二、分析步骤1. 先确认RX、TX整个链路的音频信号是否正常?录音之后先电脑上播放有无杂音?确认TX在调试设备上播放干.转载 2020-10-29 10:11:41 · 1738 阅读 · 1 评论 -
【Qualcomm高通音频】如何通过上层代码修改dump音频数据流进行问题分析呢?
如何通过上层代码修改dump音频数据流我们在分析杂音等问题的时候, 只抓adb log是不够的, dump audio的数据能直观快速的判断是哪一块出了问题, 这里只针对高通平台1. 如何在Frameworks层音频数据dump //代码路径:frameworks/av/services/audioflinger/Tracks.cpp#getNextBuffer status_t AudioFlinger::PlaybackThread::Track::getNextBuf.转载 2020-10-29 10:08:09 · 893 阅读 · 0 评论 -
【Qualcomm高通音频】音频数据如何从文件系统送到喇叭Speaker?
一、 开门见山这里介绍下声音如何从文件系统比如sd卡送到喇叭的。示意图如下:简单引申点音频知识点。ASOC主要部件1,alsa lib 配合 注册的snd_platform(pcm设备),把数据传到kernel. DAI(digital* audio interface) 确认cpu dai, codec dai.2, snd_soc_platform driver( 通常都是一些数据搬运的操作,数据从内存搬到 cpu dai)3,snd_soc...转载 2020-10-29 10:06:56 · 728 阅读 · 0 评论 -
同步 异步 阻塞 非阻塞 区别
https://www.cnblogs.com/Anker/p/5965654.html1、前言 前一段时间出去面试,被问到同步、异步与阻塞、非阻塞的区别。我一时半会没有想出来,作为一个工作三年的人来说,实在很惭愧。我当时理解同步、异步属于两个进程中间的协作关系,例如使用浏览器访问一个网站,需要多次请求服务端,才能加载完整个页面的内容。同步的操作如下:浏览器首先发送第一个请求,等待服务器回复后,再发送第二个请求,依次类推,直到所有请求完成。异步的操作如下:浏览器发送第一个请求,可以不用等待服.转载 2020-09-01 14:50:27 · 125 阅读 · 0 评论 -
Linux内核中各种同步机制
原子操作 原子操作是由编译器来保证的,保证一个线程对数据的操作不会被其他线程打断。 自旋锁 原子操作只能用于临界区只有一个变量的情况,实际应用中,临界区的情况要复杂的多。对于复杂的临界区,Linux 内核提供了多种方法,自旋锁就是其一。自旋锁的特点就是当一个线程获取了锁之后,其他试图获取这个锁的线程一直在循环等待获取这个锁,直至锁重新可用。由于线程一直在循环获取这个锁,所以会造成 CPU 处理时间的浪费,因此最好将自旋锁用于很快能处理完的临界区。自旋锁使用时两点注意:自旋...转载 2020-09-01 11:20:00 · 197 阅读 · 0 评论 -
音频驱动篇之pop音攻略
接触音频驱动工作也有2年的时间了,这这段时间里深刻感受了手机行业的更新换代是MB的迅速。2年的时间里,从TI到QUALCOMM,从android2.1到4.2,从单核到四核。经我参与的项目就有20款,日子是相当的难过。今天回头来说一些我在研发过程中遇到的一些音频难点问题与大家分享,希望对从事音频驱动行业的兄弟们有些许帮助,同时也希望大家有好的想法可以和我沟通,与大家分享。一、pop音产生的...原创 2020-04-16 15:16:36 · 2530 阅读 · 0 评论 -
Android N 指纹框架
1. 指纹框架UML2. Fingerprint2.1 Fingerprint数据流图FingerprintManager API. 直接与应用程序交互的API,属于当前APP进程.每个应用程序都可以获取FingerprintManager.FingerprintManager主要是应用程序与FingerprintService的交互封装FingerprintSer...转载 2020-04-15 18:12:45 · 490 阅读 · 0 评论 -
LINUX设备驱动之输入子系统(三)
Eric Fang 2010-02-04--------------------------------------------------------------本站分析linux内核源码,版本号为2.6.32.3转载请注明出处:http://ericfang.cublog.cn/-------------------------------------------------转载 2012-02-27 15:40:40 · 661 阅读 · 0 评论 -
ALSA之CODEC分析
ALSA: Advanced Linux Sound Architecture,它包括内核驱动集合、API库和工具。用户层程序直接调用libsound的API库,不需要打开设备等操作,因此编程者不需要了解底层细节。这里不分析ALSA的核心代码core,也不阐述如何在用户层进行声卡编程,仅仅简要介绍在ALSA的架构上添加一个声卡驱动,即上图中的Sound Driver。其实文档《wirte转载 2014-04-17 16:50:30 · 671 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之七:dapm事件机制(dapm event)
前面的六篇文章,我们已经讨论了dapm关于动态电源管理的有关知识,包括widget的创建和初始化,widget之间的连接以及widget的上下电顺序等等。本章我们准备讨论dapm框架中的另一个机制:事件机制。通过dapm事件机制,widget可以对它所关心的dapm事件做出反应,这种机制对于扩充widget的能力非常有用,例如,对于那些位于codec之外的widget,好像喇叭功放、外部的前置放大转载 2014-04-18 10:06:14 · 620 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之六:精髓所在,牵一发而动全身
设计dapm的主要目的之一,就是希望声卡上的各种部件的电源按需分配,需要的就上电,不需要的就下电,使得整个音频系统总是处于最小的耗电状态,最主要的就是,这一切对用户空间的应用程序是透明的,也就是说,用户空间的应用程序无需关心那个部件何时需要电源,它只要按需要设定好音频路径,播放音频数据,暂停或停止,dapm框架会根据音频路径,完美地对各种部件的电源进行控制,而且精确地按某种顺序进行,防止上下电过程转载 2014-04-18 10:05:27 · 1483 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之五:建立widget之间的连接关系
前面我们主要着重于codec、platform、machine驱动程序中如何使用和建立dapm所需要的widget,route,这些是音频驱动开发人员必须要了解的内容,经过前几章的介绍,我们应该知道如何在alsa音频驱动的3大部分(codec、platform、machine)中,按照所使用的音频硬件结构,定义出相应的widget,kcontrol,以及必要的音频路径,而在本章中,我们将会深入da转载 2014-04-18 10:04:20 · 949 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之三:如何定义各种widget
上一节中,介绍了DAPM框架中几个重要的数据结构:snd_soc_dapm_widget,snd_soc_dapm_path,snd_soc_dapm_route。其中snd_soc_dapm_path无需我们自己定义,它会在注册snd_soc_dapm_route时动态地生成,但是对于系统中的widget和route,我们是需要自己进行定义的,另外,widget所包含的kcontrol与普通的k转载 2014-04-18 10:02:25 · 809 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之二:widget-具备路径和电源管理信息的kcontrol
上一篇文章中,我们介绍了音频驱动中对基本控制单元的封装:kcontrol。利用kcontrol,我们可以完成对音频系统中的mixer,mux,音量控制,音效控制,以及各种开关量的控制,通过对各种kcontrol的控制,使得音频硬件能够按照我们预想的结果进行工作。同时我们可以看到,kcontrol还是有以下几点不足:只能描述自身,无法描述各个kcontrol之间的连接关系;没有相转载 2014-04-18 10:01:32 · 822 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之一:kcontrol
DAPM是Dynamic Audio Power Management的缩写,直译过来就是动态音频电源管理的意思,DAPM是为了使基于linux的移动设备上的音频子系统,在任何时候都工作在最小功耗状态下。DAPM对用户空间的应用程序来说是透明的,所有与电源相关的开关都在ASoc core中完成。用户空间的应用程序无需对代码做出修改,也无需重新编译,DAPM根据当前激活的音频流(playback/c转载 2014-04-18 10:00:37 · 791 阅读 · 0 评论 -
Linux ALSA声卡驱动之六:ASoC架构中的Machine
前面一节的内容我们提到,ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machine驱动负责处理机器特有的一些控件和音频事件(例如,当播放音频时,需要先行打开一个放大器);单独的Platform和Codec驱动是不能工作的,它必须由Machine驱动把它们结转载 2014-04-18 09:57:48 · 658 阅读 · 0 评论 -
Linux ALSA声卡驱动之三:PCM设备的创建
声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢!1. PCM是什么PCM是英文Pulse-code modulation的缩写,中文译名是脉冲编码调制。我们知道在现实生活中,人耳听到的声音是模拟信号,PCM就是要把声音从模拟转换成数字信号的一种技术,他的原理简单地说就是利用一个固定的频率对模拟信号进行采样,转载 2014-04-18 09:55:28 · 559 阅读 · 0 评论 -
Linux ALSA声卡驱动之七:ASoC架构中的Codec
1. Codec简介在移动设备中,Codec的作用可以归结为4种,分别是:对PCM等信号进行D/A转换,把数字的音频信号转换为模拟信号对Mic、Linein或者其他输入源的模拟信号进行A/D转换,把模拟的声音信号转变CPU能够处理的数字信号对音频通路进行控制,比如播放音乐,收听调频收音机,又或者接听电话时,音频信号在codec内的流通路线是不一样的对音频信号做出相应的处理转载 2014-04-18 09:58:43 · 787 阅读 · 0 评论 -
进程上下文与中断上下文的理解
一.什么是内核态和用户态内核态:在内核空间执行,通常是驱动程序,中断相关程序,内核调度程序,内存管理及其操作程序。用户态:用户程序运行空间。二.什么是进程上下文与中断上下文1.进程上下文:(1)进程上文:其是指进程由用户态切换到内核态是需要保存用户态时cpu寄存器中的值,进程状态以及堆栈上的内容,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,...原创 2019-08-16 11:05:26 · 252 阅读 · 0 评论 -
Linux内核开发之中断处理
一、概念1、外设的处理速度一般慢于CPU。2、CPU不能一直等待外部事件。所以设备必须有一种方法来通知CPU它的工作进度,这种方法就是中断。二、中断实现在Linux驱动程序中,为设备实现一个中断包含两个步骤:1、向内核注册中断2、实现中断处理函数三、中断处理子系统1、根据中断号找到正确的中断处理代码。2、Linux定义名字为irq_desc...原创 2019-08-16 11:04:30 · 158 阅读 · 0 评论 -
Qsee指纹数据dump方法
Qsee指纹数据dump方法(老QSEE代码)在native里面的include,有gx_fingerprint.h头文件,里面有设置GOODIX_FP_DEBUG "goodix.fp.debug",所以打开dump数据的功能,比如dump注册和识别的图片,则可以设置adb shell setprop goodix.fp.debug 1(注意可以adb shell setenforce转载 2017-10-26 17:01:52 · 1052 阅读 · 0 评论 -
Android中使用ALSA声卡
Android中使用ALSA声卡首先,cd到Android源码树根目录下:cd /home/figo/android/Android-2.0从Android主页下载ALSA声卡的相关源码:git clone git://android.git.kernel.org/platform/external/alsa-lib.gitgit clone git://a转载 2014-04-21 16:22:15 · 1409 阅读 · 0 评论 -
Android音频系统之音频框架
1.1 音频框架Android的音频系统在很长一段时间内都是外界诟病的焦点。的确,早期的Android系统在音频处理上相比于IOS有一定的差距,这也是很多专业的音乐播放软件开发商没有推出Android平台产品的一个重要原因。但这并不代表它的音频框架一无是处,相反,基于Linux系统的Android平台有很多值得我们学习的地方。1.1.1 Linux下的音频框架在计算转载 2018-06-14 15:44:05 · 7627 阅读 · 0 评论 -
ALSA声卡驱动中的DAPM详解之四:在驱动程序中初始化并注册widget和route
前几篇文章我们从dapm的数据结构入手,了解了代表音频控件的widget,代表连接路径的route以及用于连接两个widget的path。之前都是一些概念的讲解以及对数据结构中各个字段的说明,从本章开始,我们要从代码入手,分析dapm的详细工作原理:如何注册widget如何连接两个widget一个widget的状态裱画如何传递到整个音频路径中/***************转载 2014-04-18 10:03:17 · 786 阅读 · 0 评论 -
Linux ALSA声卡驱动之八:ASoC架构中的Platform
1. Platform驱动在ASoC中的作用前面几章内容已经说过,ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,最终通过CPU的数字音频接口(DAI)把音频数据传送给Codec进行处理,最终由Codec输出驱动耳机或者是喇叭的音信信号。在具体实现上,ASoC有把Platform驱动分为两个部分:snd_soc_pl转载 2014-04-18 09:59:45 · 730 阅读 · 0 评论 -
Linux ALSA声卡驱动之五:移动设备中的ALSA(ASoC)
1. ASoC的由来ASoC--ALSA System on Chip ,是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。在ASoc出现之前,内核对于SoC中的音频已经有部分的支持,不过会有一些局限性: Codec驱动与SoC CPU的底层耦合过于紧密,这种不理想会导致代码的重复,例如,仅是wm8731的驱动,当时Lin转载 2014-04-18 09:56:59 · 580 阅读 · 0 评论 -
Linux ALSA声卡驱动之四:Control设备的创建
声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢!Control接口Control接口主要让用户空间的应用程序(alsa-lib)可以访问和控制音频codec芯片中的多路开关,滑动控件等。对于Mixer(混音)来说,Control接口显得尤为重要,从ALSA 0.9.x版本开始,所有的mixer工作都是通过contr转载 2014-04-18 09:56:14 · 504 阅读 · 0 评论 -
Linux ALSA声卡驱动之二:声卡的创建
声明:本博内容均由http://blog.csdn.net/droidphone原创,转载请注明出处,谢谢!1. struct snd_card 1.1. snd_card是什么snd_card可以说是整个ALSA音频驱动最顶层的一个结构,整个声卡的软件逻辑结构开始于该结构,几乎所有与声音相关的逻辑设备都是在snd_card的管理之下,声卡驱动的第一个动作通常就是创转载 2014-04-18 09:54:23 · 631 阅读 · 0 评论 -
s3c2410的dma操作的一般步骤
一般的,在s3c2440中,要想进行dma传输,需要一下七个步骤:一:int s3c2410_dma_request(unsignedint channel, struct s3c2410_dma_client *client, void *dev)s3c2410_dma_client的定义为:转载 2012-05-07 16:55:51 · 1174 阅读 · 0 评论 -
wait_event_interruptible_timeout和schedule_timeout的区别
一、适用情况wait_event_interruptible_timeout和schedule_timeout的区别当在某个硬件驱动程序中使用wait_event_interruptible_timeout时,执行的继续可以通过以下两种方式获得:1.其他人在等待队列上调用了wake_up2.超时到期。而调用schedule_timeout的进程始终会在超时到期时被唤醒。二、转载 2012-04-17 14:48:12 · 8687 阅读 · 0 评论 -
Linux2.6内核驱动移植参考
随着Linux2.6的发布,由于2.6内核做了新的改动,各个设备的驱动程序在不同程度上要进行改写。该文当列举了2.6内核同以前版本的绝大多数变化,可惜的是由于时间和精力有限没有详细列出各个函数的用法。 如果需要有各个函数的较为详细的的说明,请在互联网上搜索。1、 使用新的入口必须包含 module_init(your_init_func);module_exit(your转载 2012-03-16 17:58:01 · 567 阅读 · 0 评论