1.设置音量时应用程序的调用过程 (1)strace分析: amixer cset numid=1 30 (设置音量) /dev/snd/controlC0 open SNDRV_CTL_IOCTL_CARD_INFO SNDRV_CTL_IOCTL_PVERSION SNDRV_CTL_IOCTL_ELEM_INFO SNDRV_CTL_IOCTL_ELEM_READ SNDRV_CTL_IOCTL_ELEM_WRITE : snd_ctl_elem_write_user (2)应用程序调用S…
1.引言 (1)应用程序使用声卡的时候,数据流程是:应用程序把数据发送给驱动,驱动把数据发送给硬件声卡,声卡把数据转换成声音数据播放出去. (2)可以使用两种方式发送数据 第一种:app发数据,等驱动处理完后再发下一段(处理完再发下一段就会导致声音会断断续续 ) 第二种:应用程序不断地发数据,驱动程序不断地取数据,不断地发给硬件.解决了声音断续的问题,但是要创建一个非常大的缓冲区(在驱动程序里面申请的 ,称其为buffer) 一个采样点的数据包括左声道数据和右声道数据 这里hw_ptr是指针(…
1.整体框架 (1)图示((DAI(全称Digital Audio Interface)接口)) 在嵌入式系统里面,声卡驱动是ASOC,是在ALSA驱动上封装的一层,包括以下三大块 (2)程序框架 machine:s3c2440_uda1341.c codec: UDA1341,WM8976 platform:IIS ,DMA 2.s3c2440_uda1341.c(参考s3c24xx_uda134x.c) (1)分配一个平台为soc-audio的平台设备, 在这平台设备里面有一个核心结构体sn…
1.调试 (1)把程序拷贝到服务器上进行编译 (2)把程序放到内核上面去 重新配置内核,吧原来的声卡驱动程序去掉 a. 修改语法错误 11th_myalsa b. 配置内核去掉原来的声卡驱动 -> Device Drivers   -> Sound card support     -> Advanced Linux Sound Architecture        -> ALSA for SoC audio support               c. 使用新内核启动 d.…
1.参数设置分析 (1)open: soc_pcm_open 依次调用cpu_dai, dma, codec_dai, machine的open或startup函数 只在dma的open函数里添加参数相关的代码 (2)SNDRV_PCM_IOCTL_HW_PARAMS: soc_pcm_hw_params 依次调用machine,codec_dai,cpu_dai,platform(dma)的hw_params函数      在uda1341.c, s3c2440-iis.c里实现hw_para…
<零基础学JavaScript(全彩版)>学习笔记 二〇一九年二月九日星期六0时9分 前期: 刚刚学完<零基础学HTML5+CSS3(全彩版)>,准备开始学习JavaScript.对Web前端好做一个全面深入的了解,为Python编程的提高打下一个坚实的基础. 本书除了项目实战,共计17章390页,不光本身的视频,光腾讯课堂的JS视频就有35课时以上.计划用时4天到7天的时间学完. 还是先把书过一遍吧,看书比较好掌握进度,然后再看书补补漏. 第1篇   基础知识 第1章 JavaS…
1.体验 (1)ALSA声卡使用体验:使用arecord录音,使用aplay播放,在Alsa-utils里面) 准备: cd linux-3.4.2 patch -p1 < ../linux-3.4.2_alsa_wm8976_uda1341_jz2440_mini2440_tq2440.patch  //打补丁 cp config_wm8976_jz2440 .config 或 cp config_uda1341_tq2440_mini2440 .config    //设置配置文件 make…
1.编译新的strace工具分析aplay和amixer应用程序对声卡的调用过程 (1)因为旧的strace工具不能识别不能识别alsa声卡驱动程序里面的ioctrl. (2)编译过程参考http://blog.csdn.net/qingkongyeyue/article/details/52228729 (3)出现错误 需要建立相关的设备节点 播放声音和调整音量 (4)等待音频播放完,能得到一个完整的log,把log文件拷贝回windows下进行分析 2.调用分析(aplay.log)(搜索设…
1.先确认要控制的音源(Audio Source)所使用的输出(Output),例如我这里BGM使用的是MainMixer: 2.暴露音量(Volume)参数,让脚本可以控制.这里如果不暴露出来,脚本将会不能控制. 3.确认MainMixer的音量区间,例如我这里是-80到20: 4.在AudioManager里面引用MainMixer,然后添加函数SetVolume,不可以是静态函数.静态函数会在后面找不到引用. [Header("主Mixer")] public AudioMixe…
(注意:内核上电的时候会把一些没运行的控制器模块的时钟都关掉,所有在写驱动的时候需要在使用的使用使用clk_get和clk_enable使能时钟) (说明:与ALSA声卡对应的是OSS架构,第二期视频中的声卡驱动就是指的OSS架构驱动,ALSA可以模拟OSS) (amixer controls执行后返回的可设置属性里面input mux表示录音的时候的通道,在mini2440和tq2440上两者不同,需要修改) 1.裸板WAV文件格式:http://blog.chinaunix.net/uid-…