- 博客(289)
- 收藏
- 关注
转载 wav文件格式详解
WAV(Waveform audio format)是微软与IBM公司所开发的一种声音编码格式,它符合RIFF(Resource Interchange File Format)文件规范,用于保存Windows平台的音频信息资源,被Windows平台及其应用程序所广泛支持,也是其音乐发烧友中常用的指定规格之一。由于此音频格式未经过压缩,所以在音质方面不会出现失真的情况,但档案的体积因而在众多音频格
2014-08-13 10:14:51 8689
原创 asound.conf中生成音频文件的
pcm.navi_out { @args[FILE FORMAT] @args.FILE{ type string default /tmp/%r_%c_%f.wav } @args.FORMAT{ type string default wav } type file
2014-08-01 09:55:23 988
原创 数组简略初始化过程
#include #include #define SNDRV_CARDS 8static int enable[SNDRV_CARDS] = {1, [1 ... (SNDRV_CARDS - 1)] = 5};int main(void){ int i,a; for(i = 0; i
2014-07-30 19:30:48 694
转载 线程pthread_join和分离式线程
2012-04-01 16:24 1530人阅读 评论(0) 收藏 举报jointhreadcallbacknull多线程funCALLBACK_POINT_FUN pC = NULL;void call_fun(CALLBACK_POINT_FUN fun){ pC = fun;//方法1 单线程都用这样方法 pthread_t sh1; int ret;
2014-07-30 14:23:07 944
转载 一个简单的ALSA示例代码
代码如下,注释可参看原文http://users.suse.com/~mana/alsa090_howto.html#include int main(){int ret;snd_pcm_t *pcm_handle;snd_pcm_stream_t stream = SND_PCM_STREAM_PLAYBACK;snd_pcm_hw_params_t *h
2014-07-28 11:33:43 864
转载 Linux进程间通信——使用共享内存
下面将讲解进程间通信的另一种方式,使用共享内存。一、什么是共享内存顾名思义,共享内存就是允许两个不相关的进程访问同一个逻辑内存。共享内存是在两个正在运行的进程之间共享和传递数据的一种非常有效的方式。不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配
2014-07-23 18:04:52 668
转载 杂音 & pop 音的解决方法
分类: audio(oss&alsa)012-11-08 13:53 925人阅读 评论(0) 收藏 举报杂音 & pop 音的解决方法1. 喇叭有严重的“吱吱”破音,绝大多数的原因有可能在于V(out)电压不稳定,所以最好测一下无负载时的输出电压。同时也可以测量 VCC –即boost 的输出/输入电压。正常的VCC 可以通过客户的 反馈电阻和 VCC负载电阻求得。
2014-07-23 12:36:42 4436
原创 PLUG-IN文章保存
http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html PLUG-IN 文章保存
2014-07-17 16:49:46 588
原创 内核链表
在Linux内核中使用了大量的链表结构来组织数据。这些链表大多采用了[include/linux/list.h]中实现的一套精彩的链表数据结构。链表数据结构的定义:struct list_head { struct list_head *next, *prev; }; list_head结构包含两个指向list_head结构的指针prev和next,由此可见,内核的链表
2014-07-16 18:30:58 620
转载 _raw_writel, writel_relaxed 和 writel的区别
因为对别的平台不了解,下面仅谈它们在ARM上的区别__raw_writel: 因为有volatile关键字, 所以编译器不会打乱多个__raw_writel的执行顺序。对于ARM而言,当多个写以代码的顺序到达相同设备时,执行的顺序也是被保证的,不过对于不同的设备,执行的顺序就不被保证了。write_relaxed: 在ARM平台上与__raw_writel一样,
2014-07-09 20:08:14 6717
转载 内核使用硬件ip的dma,dma_alloc_coherent 与 dma_alloc_writecombine
平台structbuffergooglevideo编程 内核的dma一般在平台初始化的时候已经分配好了。但是对于一些有内部dma的硬件ip,比如usb ip、video加速ip,他们可能由ip厂商封装好的,没办法绑定到cpu端,这时候在内核使用dma就要注意了,因为dma只认识物理地址哦。当然,办法还是有的,look:以下来自:http://blog.csdn.net/
2014-07-09 19:57:19 823
转载 mxc sdma 分析
本文主要讲述mxc处理器中,sdma的处理过程及用户如何去使用sdma进行数据的传输。一 sdma 的通道数及优先级 #define MAX_DMA_CHANNELS 32 /* 32 通道 */#define MAX_BD_NUMBER 16 /* 缓冲描述符数目 */#define MXC_SDMA_DEFAULT_PRIORITY 1 /* 默认的
2014-07-09 11:10:08 2236
原创 SDMA相关的数据结构、宏展开及设备函数注册过程
struct sdma_platform_data {int sdma_version;char *cpu_name;int to_version;struct sdma_script_start_addrs *script_addrs;};struct imx_imx_sdma_data {resource_size_t iobase;resource_size_
2014-07-07 15:52:40 1493
转载 container_of分析
1.container_of宏1> Container_of在Linux内核中是一个常用的宏,用于从包含在某个结构中的指针获得结构本身的指针,通俗地讲就是通过结构体变量中某个成员的首地址进而获得整个结构体变量的首地址。2>接口:container_of(ptr, type, member) ptr:表示结构体中member的地址 type:表示结构体类型 membe
2014-07-04 14:58:56 558
转载 Linux 的 completion机制
分类: Linux kernel2010-09-06 16:29 3906人阅读 评论(0) 收藏 举报linuxstructsignalup数据结构null一、定义:linux/include/linux/completion.h 13struct completion { 14 unsigned int done; 15
2014-07-04 11:49:04 1030
转载 ethtool 在 Linux 中的实现框架和应用
2014-02-24 21:18 61人阅读 评论(0) 收藏 举报简介: Linux 的一个显著特点就是其强大的网络功能,Linux 几乎支持所有的网络协议,并在这些协议基础上提供了丰富的应用。对 Linux 网络管理的重要性不言而喻,这些管理依赖于网络工具,比如最常用的 ifconfig,route,ip,ethtool 等,其中 ethtool 提供了强大的网卡及网卡驱动管理能力
2014-05-07 16:40:46 1214
转载 一个十分经典的Linux DM9000网卡驱动程序完全分析(转载)
2012-04-07 00:19:35| 分类: 跟着国嵌学arm|举报|字号 订阅原文:http://blog.chinaunix.net/link.php?url=http://blog.csdn.net%2Fypoflyer%2Farticle%2Fdetails%2F6209922说明1:本文分析基于内核源码版本为linux-2.6.31
2014-05-05 20:02:19 1793
转载 (一)mini2440网卡驱动dm9000之dm9000_probe分析
2012-04-07 02:05:48| 分类: 跟着国嵌学arm|举报|字号 订阅/*首先我们必须知道probe函数什么时候调用。其实在平台设备驱动注册的时候,内核会在平台设备总线上去遍历所有的设备,做匹配操作,匹配函数为platform_match(内核源码在driver/base/platform.c中)那么这个函数做了什么呢,不妨来看一下:
2014-05-05 20:01:12 1034
转载 C语言函数指针
C语言函数指针一、函数指针的定义顾名思义,函数指针就是函数的指针。它是一个指针,指向一个函数。看例子:A) char * (*fun1)(char * p1,char *p2);B) char **fun2(char * p1,char * p2);C) char *fun3(char * p1,char * p2);看看上面三个表达式分别是什么意思?
2014-03-27 16:58:16 764
转载 C语言函数指针
一、函数指针的定义顾名思义,函数指针就是函数的指针。它是一个指针,指向一个函数。看例子:A) char * (*fun1)(char * p1,char *p2);B) char **fun2(char * p1,char * p2);C) char *fun3(char * p1,char * p2);看看上面三个表达式分别是什么意思?C):这很容易,f
2014-03-27 16:57:15 621
原创 atoi函数的实现(十进制 十六进制的实现)
#includeint atoi(char * str){ int value = 0; int sign = 1; int radix; if(*str == '-') { sign = -1; str++;
2014-03-14 15:12:03 13267
转载 alsa分析:alsa的那些配置文件2
关于ALsa的配置文件,这里有一篇很好的文章。感谢原著。+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 理解和使用Alsa的配置文件作者:刘旭晖 Raymond转载请注明出处 http://blog.csdn.net/colorant/archi
2013-12-26 17:15:05 904
转载 alsa分析:alsa的那些配置文件1
在根文件系统下,alsa相关的配置文件有:在/system/usr/share/alsa目录下:[c-sharp] view plaincopy├── alsa.conf ├── cards │ └── aliases.conf └── pcm ├── center_lfe.conf
2013-12-26 17:14:04 992
转载 C语言宏定义##连接符和#符的使用
C语言中如何使用宏C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量 通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP)
2013-11-12 17:14:08 705
转载 浅析ac97声卡intel8x0的runtime->dma_area是怎么获取的
runtime->dma_area的DMA内存空间指向substream->dma_buffer申请到的DMA内存[luther.gliethttp]ioctl(SNDRV_PCM_IOCTL_HW_PARAMS)==> snd_pcm_f_ops.unlocked_ioctl即:snd_pcm_playback_ioctl==> snd_pcm_playback_ioctl=
2013-11-01 16:21:38 1922
转载 浅析ac97声卡intel8x0的DMA内存substream->dma_buffer什么时候被赋值的
对于snd-intel8x0.ko驱动,为设备直接申请可以供DMA使用的DDR内存空间到substream->dma_bufferinsmod snd-intel8x0.ko==> sys_init_module==> alsa_card_intel8x0_init==> __pci_register_driver==> driver_register==> bus_add
2013-11-01 16:21:22 2267
转载 杂记asla-lib库函数snd_pcm_open打开流程
2009-12-10 15:52:28分类: LINUX《alsa声卡/dev/snd /pcmC0D0p的open打开流程》杂记asla-lib库函数snd_pcm_open打开流程浅析ac97声卡intel8x0的DMA内存substream->dma_buffer什么时候被赋值浅析ac97声卡intel8x0的runtime->dma_area是怎
2013-11-01 16:18:06 5185
转载 U-boot启动详解
cpu/arm920t/start.S/* ************************************************************************* * * Jump vector table as in table 3.1 in [1] * *********************************************
2013-10-30 17:15:56 1574
转载 main_loop分析
1。main_loopcommon/main.cmain_loop又臭又长,去掉宏注释掉的部分就只剩下一点点了。如下:void main_loop (void){#ifndef CONFIG_SYS_HUSH_PARSER static char lastcommand[CONFIG_SYS_CBSIZE] = { 0, }; int len;
2013-10-21 20:13:27 999
转载 U-boot 添加命令 U_BOOT_CMD
2013-02-01 16:51:49分类: LINUXU-boot 添加命令 U_BOOT_CMD U-Boot的每一个命令都是通过U_BOOT_CMD宏定义的。这个宏在include/command.h头文件中定义,每一个命令定义一个cmd_tbl_t结构体。 /*命令宏U_BOOT_CMD*/ #define U_BOOT_CM
2013-10-18 20:16:09 986
转载 FLASH 存储学习-串行SPI nor
分类: 嵌入式1.1 SST25VF080B简介1.1.1 主要特性关键点:容量、速度(时钟速度、读写速度)、功耗。l 容量:8MBit;l 最高SPI时钟频率:50MHz;l 低功耗模式下电流消耗:5uA,正常读模式电流:15mA;低功耗!采用不同的制造技术功耗要低很多。l 整片擦除:35ms;扇区/块擦除:18ms;字节编程:7us;
2013-10-16 10:37:48 29842 2
转载 u-boot.lds文件诠释
网上大部分u-boot.lds文件的分析大部分都是千遍一律,例如下面就是本人在网上找到的关于u-boot.lds的资料。OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")/*指定输出可执行文件是elf格式,32位ARM指令,小端*/OUTPUT_ARCH(arm)/*指定输出可执行文件的平台为
2013-08-19 11:26:35 853
转载 uboot之start.s分析
开始start.s分析,根据S3C2410来跟踪代码,参考了S3C2410的datasheet和网上各个帖子 一般来说,大家都是从start.s来分析UBOOT,但是事实是流程是从makefile中来的,也就是说是在敲入make smdk2410_config和make all后才进入start.s中,makefile在这里不做分析,韦东山的那本书有详细的说明,这里要提到的是mak
2013-08-14 17:29:00 887
转载 uboot中start.S详解
#include #include /* 这段代码的主要作用是初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境 */#if defined(CONFIG_OMAP1610)#include #elif defined(CONFIG_OMAP730)#include #endif/*******
2013-08-14 17:24:58 936
转载 最全的uboot start.S分析
#include #include #if defined(CONFIG_S3C2410)#include #elif defined(CONFIG_S3C2440)//include\configs\smdk2440.h中定义。#include #endif#include /*************************************************
2013-08-14 17:23:50 912
转载 ALSA编写的音频程序
ALSA编写的音频程序 (2011-12-02 09:15:23)转载▼标签: 杂谈分类: linux作者:北京中科红旗软件技术有限公司 孔伟 Alsa是Linux高级音频接口。面对众多的音频设备,Alsa为Linux音频开发人员提供了一套标准的访问机制,使得音频开发变得十分容易。不信?下面我们就利用它编写
2013-08-12 17:25:55 1139
转载 alsa lib源码分析
使用ALSA lib进行音频播放器开发的朋友都知道,ALSA的配置文件alsa.conf定义了一些简单的语法,通过这些语法记录了alsa环境变量。该文件在 /usr/share/alsa/alsa.conf.该文件开头处包含了用户可以配置的hook.用户自定义的配置信息可以保存在/etc /asound.conf或~/.asoundrc里,当然也可以自己定义的位置。我们感兴趣的是,alsa
2013-08-09 18:26:44 1314
转载 Linux--Linux互斥锁、条件变量和信号量
进行多线程编程,最应该注意的就是那些共享的数据,因为无法知道哪个线程会在哪个时候对它进行操作,也无法得知哪个线程会先运行,哪个线程会后运行。所以,要对这些资源进行合理的分配和正确的使用。在Linux下,提供了互斥锁、条件变量和信号量来对共享资源进行保护。一、互斥锁互斥锁,是一种信号量,常用来防止两个进程或线程在同一时刻访问相同的共享资源。需要的头文件:pthread.h互斥锁标
2013-08-09 18:12:06 895
转载 基于ALSA的WAV播放和录音程序
在看ALSA Lib时,写了一个比较典型的基于ALSA的播放录音程序。程序包包含四个部分:WAV Parser、SND Common、Playback和Record。WAV Parser是对WAV文件的分析和封装,这里只针对Standard WAV File;SND Common是Playback 和Record共同操作,如SetParams、ReadPCM和WriteTAG: 录音 A
2013-07-16 16:25:10 7775
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人