android下调试声卡驱动之概述

在Android中音频系统使用的是ALSA系统架构。ASoC--ALSA System on Chip ,是建立在标准ALSA驱动层上,为了更好地支持

嵌入式处理器和移动设备中的音频Codec的一套软件体系,在音频设备驱动中ASoC被分为Machine、Platform和Codec三大部分。

Codec部分:负责音频解码,这部分代码完全无平台无关(设备原厂提供),它包含了一些音频的控件(Controls),音频接

口,DAMP(动态音频电源管理)的定义和Codec IO功能。为了保证硬件无关性,任何特定于平台的代码都要移

到Platform和Machine驱动中。

Platform部分:包含了平台的音频DMA和音频接口的配置和控制(I2S,PCM,AC97等);与处理器芯片相关的代码。

Machine部分:是耦合Platform和Codec驱动,同时与上层交互的代码。由于上层是标准的alsa架构,所以下层接口肯定要做了

统一,这部分由Machine本身的Platform驱动和Platform设备组成(请跟上面的Platform驱动区别开),Platform驱动

内核已经完成了,所以无须过多的关心怎么跟上层ALSA怎么衍接的问题,我们只需要注册一个Machine的Platform

设备以及完成Platform和Codec耦合。

1、ALSA设备文件结构

controlC0     用于声卡的控制,例如通道选择,混音,麦克风的控制等;

pcmC0D0c   用于录音的pcm设备;

pcmC0D0p   用于播放的pcm设备;

timer       定时器。

其中,C0D0代表的是声卡0中的设备0,pcmC0D0c最后一个c代表capture,pcmC0D0p最后一个p代表playback,这些都是

alsa-driver中的命名规则。

2、ALSA文件目录结构概述

sound/core:该目录包含了中间层,ALSA的核心驱动。那些本地ALSA模块保持在这个目录里。一些子目录包含那些与内核配置

相关的不同的模块。

sound/core/oss :关于PCM和mixer的OSS模拟的模块保存在这个目录里面。

sound/core/seq :有关音序器相关的代码。

kernel /include/sound :ALSA驱动的公共头文件目录,该目录的头文件需要导出给用户空间的应用程序使用,通常驱动模块私

有的头文件不应放置在这里。

sound/drivers :该目录包含了在不同架构的系统中的不同驱动共享的文件部分。与CPU、BUS架构无关的公用代码。

sound/i2c :该目录包含了ALSA自己的I2C控制代码。虽然Linux有个i2c的标准协议层,ALSA还是拥有它关于一些card的专用

i2c代码,因为一些声卡仅仅需要一些简单的操作,而标准的i2c的API函数对此显得太过复杂了。

sound/pci :该目录文件负责PCI声卡和一些PCI BUS的上层card模块。在pci目录下面保存着一些简单的驱动文件,而一些比较

复杂的,同时包含多个程序文件的驱动会被放置在pci目录下面一个单独的子目录里面(如:emu10k1,ice1712)。

sound/isa  该目录文件是处理ISA声卡的上层card模块。

sound/arm,sound/ppc,和sound/sparc  这里目录放置一些和芯片架构相关的一些上层的card模块。

sound/usb  该目录包含一些USB-AUDIO驱动。

sound/pcmcia    PCCard驱动会放到这里。CardBus驱动将会放到pci目录里面,因为API函数和标准PCI卡上统一的。

sound/soc 针对system-on-chip体系的中间层代码。

sound/soc/codecs 针对soc体系的各种codec的代码,与平台无关。

时间: 2024-10-21 21:58:01

android下调试声卡驱动之概述的相关文章

android下调试声卡驱动之I2S音频通信

一.I2S概述 I2S(Inter-IC Sound)总线是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准,该总线专责于音频设备之 间的数据传输.由4条线组成的数字音频接口,常用于HiFi,STB便携设备.Tx  和Rx信号线用于音频传输.而位时钟和左右时钟 (LRC)用于同步链接.I2S具有灵活性,因为控制器和解码器都可以控制位时钟和左右时钟.位时钟因采样率和主系统时钟而有不 同.LRCLK与采样率相同.少数设备支持独立的ADC和DAC的LRCLK.这使在不同采样率情况下同步捕

android下调试声卡驱动之wm8960介绍二

三.LINPUT输入通道介绍 有关LINPUT的主要配置如下: R32的bit8(LMN1)置1:LINPUT1连接PGA: R00的bit7(LINMUTE)置0:禁止静音: R25的bit5(AINL)置1:PGA使能: R47的bit5(LMIC)置1:Left Boost Mixer使能: R32的bit3(LMIC2B)置1:boost连接Left Boost Mixer. 四.OUTPUT输出通道介绍 有关OUPUT的主要配置如下: R34的bit8(LD2LO)置1:使LDAC连接

《Android深度探索卷一》第一章Android系统移植与驱动开发概述。

<Android深度探索>第一章讲的是Android系统移植与驱动开发概述.这一章节将对Android以及Linux驱动做一个总体的介绍. Android是一个非常优秀的的嵌入式操作系统.经过几年的发展和演进,Android已经形成了非常完善的系统架构.Android的系统架构分为四层,如下图 Android移植可分为两部分:应用移植和系统移植. Android系统移植是指让Android操作系统在某一个特定硬件平台上运行.使一个操作系统在特定硬件平台上运行的一个首要条件就是该操作系统支持硬件

Android系统移植与驱动开发概述读书心得

第一章是Android系统移植与驱动开发概述,包含了Android系统架构.Android系统移植的主要工作.查看Linux内核版本.Linux内核版本号的定义规则.如何学习Linux驱动开发以及Linux设备驱动等六方面内容 Android系统架构分为四层,分别是Linux内核.C/C++代码库.Android SDK API和应用程序.Linux内核这一层主要包括Linux的驱动程序以及内存管理.进程管理.电源管理等程序. Android移植可分为两部分:应用移植和系统移植.应用移植是指将应

Android系统移植与驱动开发概述 第一章

Android系统移植与驱动开发概述 1. Android的系统架构分为Linux内核.C/C++代码库.Android SDK API.应用程序四层. 2. Android移植可分为应用移植和系统移植.应用移植是指将应用程序移植到特定的硬件平台.系统移植指的是让Android操作系统在某一特定硬件平台上运行(首要条件是该操作系统支持硬件平台的CPU架构).系统移植的主要任务是移植Linux驱动和HAL(Hardware Abstraction Layer:硬件抽象层,位于应用程序与驱动之间).

(转)&lt;Unity3D&gt;Unity3D在android下调试

转自:http://blog.csdn.net/zuoyamin/article/details/11827309 一.工具准备 1.JDK——由于android是基于Java平台开发的,jdk是必须要安装的.下载地址:http://www.java.net/download/jdk6/6u10/promoted/b32/binaries/jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe 2.Android SDK——这个就不多说了,要开发a

Android深度探索(卷1)HAL与驱动开发 第一章&#160;Android系统移植与驱动开发概述 读书笔记

Android深度探索(卷1)HAL与驱动开发 第一章 Android系统移植与驱动开发概述 读书笔记 本章是 Android系统移植与驱动开发概述性的具体讲解.首先,Android被分为了四层架构.在最底层的是Linux内核 .然后分别是C/C++代码库.Android SDK A和应用程序.而Android的移植又分为系统移植和应用移植.系统移植要实现Android操作系统在其他硬件平台上运行起来,其中的关键是Linux的内核.内核必须要完成对平台上运行的各个硬件的识别.所以这就需要Linu

第一章 Android系统移植与驱动开发概述 心得体会

第一章 Android系统移植与驱动开发概述 心得体会 通过学习Android深度探索(卷1)HAL与驱动开发的第一章Android系统移植与驱动开发,我对android驱动开发与移植概念有了一个整体且系统的把握.在本章中我主要学到了一下的知识 1.Android的系统架构分为Linux内核.C/C++代码库.Android SDK API.应用程序四层. 其中重点讲解第一层 Linux 内核.这一层主要包括Linux的驱动程序以及内存管理.进程管理.电源管理等程序. 2. Android移植可

android下调试unity3d应用

原地址:http://blog.csdn.net/armoonwei/article/details/7032455 目前貌似不支持断点调试,但可以通过日志打印(logcat)来跟踪. 在android SDK中有个adb工具,使用此工具来跟踪运行的android应用: adb logcat 启动logcat,并将设备上运行的android应用的运行时信息全部打印出来. adb logcat -s Unity 如果只想打印Unity的输出信息,使用此命令. adb logcat -d > log