自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

深度理解是快乐的源泉

点滴记录,终生成长

  • 博客(37)
  • 资源 (1)
  • 收藏
  • 关注

转载 DPCM (Dynamic PCM)系列之一:概述

http://blog.csdn.net/azloong/article/details/50162241Dynamic PCM  ===========    1. Description  ==============    Dynamic PCM allows an ALSA PCM device to digitally route its PCM 

2015-12-28 17:47:46 6644 1

转载 DAPM之二:audio paths与dapm kcontrol

http://blog.csdn.net/azloong/article/details/6334922在用alsa_amixer controls时,除了我们之前提到的snd_soc_add_controls添加的kcontrols外,还有一些多出来的controls。其实多出来的那些都是属于dapm kcontrol,主要用于切换音频路径。一、AUDIO PAT

2015-12-28 16:48:31 644

转载 DAPM之一:概述

http://blog.csdn.net/azloong/article/details/6331884DAPM--Dynamic Audio Power Management,对应结构体是snd_soc_dapm_widget和snd_soc_dapm_route,对应的操作函数是snd_soc_dapm_new_controls()、snd_soc_dapm_add_routes(

2015-12-28 16:45:37 555

原创 用git生成patch

1,修改代码vi drivers/bluetooth/btusb.c2,把代码添加到git管理仓库git add drivers/bluetooth/btusb.c3,提交修改git commit -m "mypatchtest"4,查看日志git log 来得到需要对比的base的hash code5,生成patchgit format-p

2015-12-25 18:04:09 442

转载 翻译:Linux的电源管理架构

http://blog.csdn.net/droidphone/article/details/6664057设备电源管理Copyright (c) 2010 Rafael J. Wysocki, Novell Inc.Copyright (c) 2010 Alan Sternstern@rowland.harvard.edu *********************

2015-12-24 17:36:04 293

转载 基于Android的Linux内核的电源管理:Early Suspend

http://blog.csdn.net/droidphone/article/details/66420811.      用户空间的接口在kernel/power/main.c中,定义了一组sysfs的属性文件,其中一个定义是:power_attr(state);把这个宏展开后:[cpp] view plaincopystaticstru

2015-12-24 17:34:47 326

转载 基于Android的Linux内核的电源管理:概述

http://blog.csdn.net/droidphone/article/details/66325161.  电源管理的状态Android的Linux内核为系统提供了4种电源状态,内核的源代码为其中的3种定义了名字和对应的宏定义,名字定义在kernel/power/suspend.c中:[cpp] view plaincopyconst char

2015-12-24 17:33:22 300

转载 ALSA声卡驱动中的DAPM详解之七:dapm事件机制(dapm event)

前面的六篇文章,我们已经讨论了dapm关于动态电源管理的有关知识,包括widget的创建和初始化,widget之间的连接以及widget的上下电顺序等等。本章我们准备讨论dapm框架中的另一个机制:事件机制。通过dapm事件机制,widget可以对它所关心的dapm事件做出反应,这种机制对于扩充widget的能力非常有用,例如,对于那些位于codec之外的widget,好像喇叭功放、外部的前置放大

2015-12-24 17:16:51 644

转载 ALSA声卡驱动中的DAPM详解之六:精髓所在,牵一发而动全身

http://blog.csdn.net/droidphone/article/details/14146319设计dapm的主要目的之一,就是希望声卡上的各种部件的电源按需分配,需要的就上电,不需要的就下电,使得整个音频系统总是处于最小的耗电状态,最主要的就是,这一切对用户空间的应用程序是透明的,也就是说,用户空间的应用程序无需关心那个部件何时需要电源,它只要按需要设定好音频路径,播放音

2015-12-24 17:15:58 491

转载 ALSA声卡驱动中的DAPM详解之五:建立widget之间的连接关系

前面我们主要着重于codec、platform、machine驱动程序中如何使用和建立dapm所需要的widget,route,这些是音频驱动开发人员必须要了解的内容,经过前几章的介绍,我们应该知道如何在alsa音频驱动的3大部分(codec、platform、machine)中,按照所使用的音频硬件结构,定义出相应的widget,kcontrol,以及必要的音频路径,而在本章中,我们将会深入da

2015-12-24 17:15:13 706

转载 ALSA声卡驱动中的DAPM详解之四:在驱动程序中初始化并注册widget和route

前几篇文章我们从dapm的数据结构入手,了解了代表音频控件的widget,代表连接路径的route以及用于连接两个widget的path。之前都是一些概念的讲解以及对数据结构中各个字段的说明,从本章开始,我们要从代码入手,分析dapm的详细工作原理:如何注册widget如何连接两个widget一个widget的状态裱画如何传递到整个音频路径中/*********************

2015-12-24 17:14:04 619 1

转载 ALSA声卡驱动中的DAPM详解之三:如何定义各种widget

http://blog.csdn.net/droidphone/article/details/12978287上一节中,介绍了DAPM框架中几个重要的数据结构:snd_soc_dapm_widget,snd_soc_dapm_path,snd_soc_dapm_route。其中snd_soc_dapm_path无需我们自己定义,它会在注册snd_soc_dapm_route时动态地生成,

2015-12-24 17:12:25 478

转载 ALSA声卡驱动中的DAPM详解之二:widget-具备路径和电源管理信息的kcontrol

http://blog.csdn.net/droidphone/article/details/12906139上一篇文章中,我们介绍了音频驱动中对基本控制单元的封装:kcontrol。利用kcontrol,我们可以完成对音频系统中的mixer,mux,音量控制,音效控制,以及各种开关量的控制,通过对各种kcontrol的控制,使得音频硬件能够按照我们预想的结果进行工作。同时我们可以看到,

2015-12-24 17:11:07 362

转载 ALSA声卡驱动中的DAPM详解之一:kcontrol

http://blog.csdn.net/droidphone/article/details/12793293DAPM是Dynamic Audio Power Management的缩写,直译过来就是动态音频电源管理的意思,DAPM是为了使基于linux的移动设备上的音频子系统,在任何时候都工作在最小功耗状态下。DAPM对用户空间的应用程序来说是透明的,所有与电源相关的开关都在ASoc

2015-12-24 17:09:54 493

转载 Linux ALSA声卡驱动之八:ASoC架构中的Platform

http://blog.csdn.net/droidphone/article/details/73160611.  Platform驱动在ASoC中的作用前面几章内容已经说过,ASoC被分为Machine,Platform和Codec三大部件,Platform驱动的主要作用是完成音频数据的管理,最终通过CPU的数字音频接口(DAI)把音频数据传送给Codec进行处理,最终由Codec

2015-12-24 17:07:46 348

转载 Linux ALSA声卡驱动之七:ASoC架构中的Codec

http://blog.csdn.net/droidphone/article/details/72838331.  Codec简介在移动设备中,Codec的作用可以归结为4种,分别是:对PCM等信号进行D/A转换,把数字的音频信号转换为模拟信号对Mic、Linein或者其他输入源的模拟信号进行A/D转换,把模拟的声音信号转变CPU能够处理的数字信号对音频通路进行控制,比如

2015-12-24 17:06:09 312

转载 Linux ALSA声卡驱动之六:ASoC架构中的Machine

http://blog.csdn.net/droidphone/article/details/7231605前面一节的内容我们提到,ASoC被分为Machine、Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machine驱动负责处理机器特有的一些控件和音频事件(例如,当播

2015-12-24 17:04:38 360

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

http://blog.csdn.net/DroidPhone/article/details/71654821.  ASoC的由来ASoC--ALSA System on Chip ,是建立在标准ALSA驱动层上,为了更好地支持嵌入式处理器和移动设备中的音频Codec的一套软件体系。在ASoc出现之前,内核对于SoC中的音频已经有部分的支持,不过会有一些局限性:  

2015-12-24 17:04:04 284

转载 Linux ALSA声卡驱动之四:Control设备的创建

http://blog.csdn.net/DroidPhone/article/details/6409983Control接口Control接口主要让用户空间的应用程序(alsa-lib)可以访问和控制音频codec芯片中的多路开关,滑动控件等。对于Mixer(混音)来说,Control接口显得尤为重要,从ALSA 0.9.x版本开始,所有的mixer工作都是通过cont

2015-12-24 17:02:26 363

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

http://blog.csdn.net/droidphone/article/details/63080061. PCM是什么PCM是英文Pulse-code modulation的缩写,中文译名是脉冲编码调制。我们知道在现实生活中,人耳听到的声音是模拟信号,PCM就是要把声音从模拟转换成数字信号的一种技术,他的原理简单地说就是利用一个固定的频率对模拟信号进行采样,采

2015-12-24 17:01:05 318

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

http://blog.csdn.net/droidphone/article/details/62897121. struct snd_card 1.1. snd_card是什么snd_card可以说是整个ALSA音频驱动最顶层的一个结构,整个声卡的软件逻辑结构开始于该结构,几乎所有与声音相关的逻辑设备都是在snd_card的管理之下,声卡驱动的第一个动作通常就是创建一个

2015-12-24 16:59:17 340

转载 Linux ALSA声卡驱动之一:ALSA架构简介

http://blog.csdn.net/droidphone/article/details/6271122一.  概述    ALSA是Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构,想了解更多的关于ALSA的这一开源项目的信息和知识,请查看以下网址:http://www.alsa-project.org/

2015-12-24 16:57:59 336

原创 Device Tree GPIO引脚控制

第一次接触Devicetree,在调试IC驱动的时候居然发现Reset引脚一直无法控制,驱动调试被Block了,后来终于摸索出一个步骤。这个是在高通MSM8976平台上控制GPIO的步骤:1、从of node中得到GPIO的number      of_get_named_gpio(i2c_client->dev.of_node, "cirrus,reset-gpio", 0);

2015-12-24 13:41:58 9718

原创 AudioPolicyManagerBase & AudioFlinger 的Inteface(hw module)初始化

AudioFlinger通过loadHwModule加载audio的各个interface(也叫hw module),各个interface就是audio的HAL。Audioflinger不会主动调用 loadHwModule,而是由audiopolicy发起的,AudioFlinger是个执行机构。在AudioPolicyManagerBase的构造函数中,能找到loadAudioP

2015-12-18 17:13:30 1413 1

转载 Linux下Gcc生成和使用静态库和动态库详解

一、基本概念1.1什么是库在windows 平台和linux 平台下都大量存在着库。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows 和linux 的平台不同(主要是编译器、汇编器和连接器的不同),因此二者库的二进制是不兼容的。本文仅限于介绍linux 下的库。1.2库的种类linux 下的库有两种:静态库和共享库(动态库)。二者

2015-12-17 18:16:04 296

转载 如何使用git 生成patch

1,下载代码git clone git://git.kernel.org/pub/scm/linux/kernel/git/padovan/bluetooth-next-2.6.gitcd bluetooth-next-2.62,修改代码vi drivers/bluetooth/btusb.c3,把代码添加到git管理仓库git add drivers/bluetooth/

2015-12-17 17:31:14 330

转载 Android进程线程之同步互斥(一)

http://blog.csdn.net/xuesen_lin/article/details/88172011.1.1 Android中的同步与互斥Android系统也提供了自己的同步互斥机制,不过任何技术的本质都是类似的,更多的是把这些本质的东西应用到符合自己要求的场景。目前Android封装的同步互斥类包括:·          Mutex头文件在frameworks

2015-12-16 16:10:24 520

转载 Android音频系统之AudioTrack(二)

http://blog.csdn.net/xuesen_lin/article/details/88051821.1.1 AudioPolicyService的路由实现我们在AudioPolicyService小节曾将其比作是一个“路由器”,不过还没有深入解析它是如何完成路由选择的。这部分的功能与使用者——AudioTrack有很大关联,所以我们特别将它的实现原理剖析放在这里,以使

2015-12-16 16:03:03 369

转载 Android音频系统之AudioTrack(一)

http://blog.csdn.net/xuesen_lin/article/details/88051681.1 AudioTrack1.1.1 AudioTrack应用实例对于Android应用开发人员来讲,音频回放最熟悉的莫过于MediaPlayer,而AudioTrack相信用的人相对会少很多。这是因为MediaPlayer提供了更完整的封装和状态控制,使得我们用很少

2015-12-16 16:02:11 558

转载 Android音频系统之AudioPolicyService

http://blog.csdn.net/xuesen_lin/article/details/88051081.1 AudioPolicy Service在AudioFlinger小节,我们反复强调它只是策略的执行者,而AudioPolicyService则是策略的制定者。这种分离方式有效地降低了整个系统的藕合性,而且为各个模块独立扩展功能提供了保障。1.1.1 Au

2015-12-16 14:31:22 566

转载 Android音频系统之AudioFlinger(四)

http://blog.csdn.net/xuesen_lin/article/details/88050961.1.1 AudioMixer每一个MixerThread都有一个唯一对应的AudioMixer(在MixerThread中用mAudioMixer表示),它的作用如其名所表示的,就是为了完成音频的混音操作。 图 13‑14 Mix

2015-12-16 14:16:23 460

转载 Android音频系统之AudioFlinger(三)

1.1.1 PlaybackThread的循环主体http://blog.csdn.net/xuesen_lin/article/details/8805091当一个PlaybackThread进入主循环后(threadLoop),音频事务就正式开启了。仔细观察的话,我们会发现这个循环中会不断地调用以“threadLoop_”开头的若干接口,比如threadLoop_mix、threa

2015-12-16 13:55:09 550

转载 Android音频系统之AudioFlinger(二)

1.1.1 音频设备的管理http://blog.csdn.net/xuesen_lin/article/details/8805076虽然AudioFlinger实体已经成功创建并初始化,但到目前为止它还是一块静态的内存空间,没有涉及到具体的工作。从职能分布上来讲,AudioPolicyService是策略的制定者,比如什么时候打开音频接口设备、某种Stream类型的音频对应什么

2015-12-16 10:51:34 957

转载 Android音频系统之AudioFlinger(一)

1.1 AudioFlinger在上面的框架图中,我们可以看到AudioFlinger(下面简称AF)是整个音频系统的核心与难点。作为Android系统中的音频中枢,它同时也是一个系统服务,启到承上(为上层提供访问接口)启下(通过HAL来管理音频设备)的作用。只有理解了AudioFlinger,才能以此为基础更好地深入到其它模块,因而我们把它放在前面进行分析。 http://blog.cs

2015-12-16 10:48:41 960 2

转载 Android音频系统之音频框架

http://blog.csdn.net/xuesen_lin/article/details/87964921.1 音频框架转载请注明,From LXS, http://blog.csdn.net/uiop78uiop78/article/details/8796492Android的音频系统在很长一段时间内都是外界诟病的焦点。的确,早期的Android系统在音频处理上相

2015-12-16 10:45:19 799

转载 Android深入浅出之Binder机制

http://www.cnblogs.com/innost/archive/2011/01/09/1931456.htmlAndroid深入浅出之Binder机制一说明 Android系统最常见也是初学者最难搞明白的就是Binder了,很多很多的Service就是通过Binder机制来和客户端通讯交互的。所以搞明白Binder的话,在很大程度上就能理解程序运行的流程。我们这里将

2015-12-15 11:42:16 316

转载 static_cast,dynamic_cast,const_cast和reinterpret_cast

reinterpret_cast可以转换任意一个32bit整数,包括所有的指针和整数。可以把任何整数转成指针,也可以把任何指针转成整数,以及把指针转化为任意类型的指针,威力最为强大!但不能将非32bit的实例转成指针。总之,只要是32bit的东东,怎么转都行!   static_cast和dynamic_cast可以执行指针到指针的转换,或实例本身到实例本身的转换,但不能在实例和指针之间转换。st

2015-12-15 11:37:19 450

aapt Android Asset Packaging Tool

aapt即Android Asset Packaging Tool,我们可以在SDK的platform-tools目录下找到该工具。aapt可以查看、 创建、 更新ZIP格式的文档附件(zip, jar, apk)。 也可将资源文件编译成二进制文件,尽管你可能没有直接使用过aapt工具,但是build scripts和IDE插件会使用这个工具打包apk文件构成一个Android 应用程序。

2016-05-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除