- 博客(63)
- 资源 (24)
- 收藏
- 关注
原创 DAPM之一:概述
DAPM--Dynamic Audio Power Management,对应结构体是snd_soc_dapm_widget和snd_soc_dapm_route,对应的操作函数是snd_soc_dapm_new_controls()、snd_soc_dapm_add_routes()和snd_soc_dapm_new_widgets()。在我看来,DAPM是音频驱动初接触者的噩梦。从何处来,到何处去?它字面上的意义是音频电源动态管理,但是往往困惑于它是怎么被触发的?而最郁闷的是:这方面的资料是最少的,我涉
2011-04-18 19:15:00 30739 3
原创 snd_kcontrol_new名称中的SOURCE字段
前些日子写了一篇snd_kcontrol探究,该文主要从内核源码出发简单讲述一下kcontrol接口的始末。这几天因为要在Android里面添加一些音频控制接口,配合alsa_amixer scontents分析,对此有了更深的体会,记录于此。因为这方面的资料实在太少,很多东西都是自我理解的,如有错误请见谅并指出。name字段是名称标识,这个字段非常重要,因为kcontrol的作用由名称来区分,对于名称相同的kcontrol,则使用index区分。name定义的标准是“SOURCE DIRECTION
2011-04-15 10:15:00 9331 3
原创 ANDROID模块编译
之前每次修改BoardConfig.mk后,都傻傻的先make clean然后重新编译,这样浪费的时间不计其数。后来忍受不了这种效率,Google了一下,果然不出所料是可以模块独立编译的。1、进入Android源码根目录,执行source build/envsetup.sh;2、可以执行mm、mmm等模块编译命令了。如要编译audioflinger,则执行mmm frameworks/base/services/audioflinger/ -B即可。3、make -snod重新生成system.img映像。
2011-04-11 11:12:00 7276
转载 ALSA编程细节分析
[Loong]:之前写过基于ALSA的WAV播放录音程序,见http://blog.csdn.net/sepnic/archive/2011/01/14/6140824.aspx。现在本想好好整理一下ALSA的编程思想,但Google了一下,发现已经有同道做了类似的工作,故将其转载过来,并添加一些本人的疑问以及补充(将会继续补充,原文很多重要的ALSA参数没有提到)。原文:http://blo
2011-03-25 12:44:00 20498 20
原创 音频采样概念
数码音频系统是通过将声波波形转换成一连串的二进制数据来再现原始声音的,实现这个步骤使用的设备是模/数转换器(A/D)它以每秒上万次的速率对声波进行采样,每一次采样都记录下了原始模拟声波在某一时刻的状态,称之为样本。将一串的样本连接起来,就可以描述一段声波了,把每一秒钟所采样的数目称为采样频率或采率,单位为HZ(赫兹)。采样频率越高所能描述的声波频率就越高。采样率决定声音频率的范围(相当于音调),可
2011-03-25 11:11:00 6343 4
原创 音频调试的一些tips
1、声音波形分析编辑工具cooledit用cooledit产生一个正弦波声音文件,host机不断循环播放这个文件,再用音频线将host的LINE OUT口与target的mic口相连,这样target机就可以录host发过来的正弦波声音了。用正弦波进行测试可以非常明显体现录音的效果,有杂音爆音都很容易分辨出来。
2011-03-18 17:28:00 5447 1
原创 ANDROID2.3音频系统HAL
从大的方面来说,Android2.3的音频系统架构与Android2.2相比并没有太多的改变。对2.2的音频架构分析依然适用于2.3,之前很多人已经对这方面进行非常详尽的阐述,这里就不重复了。各模块文件的存放位置有所变更,这点倒是要了解的。
2011-03-11 19:16:00 14232 19
原创 驱动模块使用SPI总线范例
<br />前两天写了一个<驱动模块使用I2C总线范例>。由于SPI和I2C类似,加上有空闲时间,故参考之前写的I2C实现了这个SPI模块。代码如下,这个代码未经调试,我目前的板子没有用到SPI接口,但是总体架构应该没错的。<br />#include <linux/init.h>#include <linux/kernel.h>#include <linux/module.h>#include <linux/init.h>#include <linux/errno.h>#include
2011-02-15 18:03:00 2744 1
原创 驱动模块使用I2C总线范例
在嵌入式中,I2C接口的意义非常重大,许多外围芯片控制接口都采用I2C。因此,了解在驱动模块中如何进行I2C总线通信是很有必要的。我们先看看I2C驱动代码的树形结构:.|-- Kconfig|-- Makefile|-- algos| |-- Kconfig| |-- Makefile| |-- i2c-algo-bit.c| |-- i2c-algo-pca
2011-02-11 12:12:00 7079 6
原创 shellcode之二.Plus2:ret2libc实例
在最后提到ret2libc,原书并没有详细的资源。但理解这个对以后如何绕开不可执行栈(nx-stack)有很大的帮助,鉴于此,我在网络上找到一些相关资料,并进行相应的试验。The basic idea behind the "Return to Libc" attack is that even though the stack has been marked "Non Executable"
2011-01-22 15:16:00 4269
原创 shellcode之二.Plus:victim漏洞提权实例
声明:主要内容来自《The Shellcoder's Handbook》,摘录重点作为笔记并加上个人的一些理解,如有错,请务必指出。在中提到一个简单的程序victim攻击。由于之前我的系统是Debian/Etch,会故意变化栈的地址,当时未能按照书上做这个测试。后来装了sarge,遂进行这个实验,因为这个攻击实例非常有助于栈溢出的理解。注:sarge的sources.list源非常
2011-01-22 15:09:00 1999
原创 shellcode之五:堆溢出
声明:主要内容来自《The Shellcoder's Handbook》,摘录重点作为笔记并加上个人的一些理解,如有错,请务必指出。几乎所有的malloc实现都会用元数据保存块的位置、大小或与小块有关的特殊数据。dlmalloc用存储桶保存这些数据,还有些malloc实现用平衡树结构保存它们。这些元数据一般保存在两个地方:malloc实现自己使用的全局变量;分配给用户的内存块的前/后位
2011-01-22 15:01:00 3184 2
原创 shellcode之四:格式化串漏洞
声明:主要内容来自《The Shellcoder's Handbook》,摘录重点作为笔记并加上个人的一些理解,如有错,请务必指出。格式化串漏洞 当printf系列函数的格式化串里包含用户提交的数据时,有可能出现格式化串漏洞。攻击者可能提交许多格式化字符(但不提供对应的变量),这样栈上就没有和格式符相对于的参数,因此系统就会用栈上的其他数据代替这项参数,从而导致信息泄露和执行指
2011-01-22 14:53:00 4054 2
原创 shellcode之三:shellcode编写
声明:主要内容来自《The Shellcoder's Handbook》,摘录重点作为笔记并加上个人的一些理解,如有错,请务必指出。系统调用Shellcode是一组可注入的指令,可在被攻击的程序内运行。由于shellcode要直接操作寄存器,通常用汇编语言编写并翻译成十六进制操作码。我们想让目标程序以不同与设计折预期的方式运行,操纵程序的方法之一是强制它产生系统调用。
2011-01-22 14:46:00 3858
原创 shellcode之二:简述漏洞提权
声明:主要内容来自《The Shellcoder's Handbook》,摘录重点作为笔记并加上个人的一些理解,如有错,请务必指出。派生shell这类溢出一般会被用来获取根(uid 0)特权,我们可以攻击以根特权运行的进程来达到这个目的。如果进程以根运行,我们可以通过溢出强制它执行shell,而这个shell将继承根特权,我们也会因此而得到根shell。首先了解一下
2011-01-22 14:37:00 6539 4
原创 shellcode之一:栈溢出
前言:现在我是嵌入式软件开发者,大学本科读的是电子信息专业,正常的来说不会与入侵、漏洞利用什么的打交道。只是大一时心血来潮用工具进入了另外一台电脑。其实这些也无关重要,重要的是我从那台电脑上down了第一部A片。不出意外的话,那台电脑应该属于女生的,因为那个IP段是女生楼那边的。后来我就可以很笃定的跟别人说:女生也是要看A片的。后来又用工具入侵了更多的局域网电脑,甚至学校一些社团的服务器。再后来,
2011-01-22 14:17:00 5106
原创 Android如何找到正确的ALSA底层kcontrol接口?
昨天分析了一把snd_kcontrol,可以认为上层应用的确是通过名称标识name来遍历底层的snd_kcontrol链表,从而找到相匹配的kcontrol。见snd_ctl_find_id函数/** * snd_ctl_find_id - find the control instance with the given id * @card: the card instance * @
2011-01-19 15:54:00 8825 13
原创 snd_kcontrol探究
control控制接口控制接口对于许多开关(switch)和调节器(slider)应用广泛,它能被用户空间存取,从而读写CODEC相关寄存器。control的主要用于mixer。它用snd_kcontrol_new结构体描述。snd_kcontrol_newstruct snd_kcontrol_new { snd_ctl_elem_ifac
2011-01-18 19:38:00 15374 7
原创 简单原始的FFMpeg播放器
这个代码很久之前写的,当时是为了学习FFMpeg和SDL。写得很简单,仅仅处理视频帧解码,用SDL_DisplayYUVOverlay显示视频数据,没有同步处理和音频处理,所以一个视频文件会很快的逐帧显示而过。// rin.c// A small sample program that shows how to use libavformat and libavcodec to//
2011-01-17 21:14:00 3300
原创 ALSA之PCM分析
之前写过一个音频驱动CODEC分析,当时忽略了阐述最基本的概念。要了解一个东西,首先要明白它是什么它起到什么作用,然后才会更好对它的工作流程更好的分析。所以这里提一下:CODEC :音频芯片的控制,比如静音、打开(关闭)ADC(DAC)、设置ADC(DAC)的增益、耳机模式的
2011-01-17 11:22:00 21964 13
原创 ALSA之CODEC分析
ALSA: Advanced Linux Sound Architecture,它包括内核驱动集合、API库和工具。用户层程序直接调用libsound的API库,不需要打开设备等操作,因此编程者不需要了解底层细节。这里不分析ALSA的核心代码core,也不阐述如何在用户层进行声卡编程,仅仅简要介绍在ALSA的架构上添加一个声卡驱动,即上图中的Sound Driver。其实文档《wirte an
2011-01-15 00:16:00 22366 10
原创 应用时间片实现多任务的单片机代码
要实现的功能模块有四个:ir信号解码,待机信号重复按键判断,i2c从设备中断处理,LED&KEYPAD扫描。其中这四个模块中除了i2c从设备中断处理,其他都需要用到定时器。 不巧的是,我们用到的单片机是HT46R22,只有一个定时器。我参考了操作系统时间片的概念,最终写了这个目前
2011-01-14 23:42:00 4017 1
原创 基于ALSA的WAV播放和录音程序
这段时间在探索ALSA架构,从ALSA Core到ALSA Lib,再到Android Audio System。在看ALSA Lib时,写了一个比较典型的基于ALSA的播放录音程序。程序包包含四个部分:WAV Parser是对WAV文件的分析和封装,这里只针对Standard WAV File;SND Common是Playback 和Record共同操作,如SetParams、Read
2011-01-14 23:13:00 22253 19
PCM_data_flow_in_ASoC-Part1
2014-05-20
ANDROID-AUDIO-SYSTEM-(by-DroidPhone)
2011-11-20
AUDIO CODEC DAPM(包括dapm机制和音频路径详细分析)
2011-07-29
DAPM之二:音频通路与dapm kcontrol
2011-05-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人