Linux声卡驱动移植和测试

一、分析驱动程序,根据开发板修改代码

代码太长,就不贴了,几个注意点:

1、 查看开发板原理图和S3C2410的datasheet,UDA1341的L3MODE、L3DATA、L3CLOCK分别与S3C2410的GPB2、GPB3、GPB4相连,IISLRCK=GPE0, IISSCLK=GPE1, CDCLK=GPE2,IISSDI=GPE3, IISSDO=GPE4,部分代码如下:

2、 两个重要结构体:audio_buf_t和audio_stream_t,其中audio_stream_t 为音频流数据组成了一个环形缓冲区;

3、 file_operations结构体,open()、write()、read()、ioctl()、release()等函数的底层实现;

4、 DMA的原理;

5、 驱动加载和卸载等;

二、向内核中添加声卡驱动

1、  配置内核中的声卡选项;

注意:UDA1341的驱动程序s3c2410-oss.c在linux/sound/oss/目录下(内核版本:Linux-2.6.8.1)。

在内核树目录下输入make menuconfig,会跳出内核配置界面:

然后按键盘的向下导航键,下拉至Sound选项:

按回车,进入Sound选项界面:

选中“Open Sound System”选项,回车进入OSS选项界面:

分别选中“Open Sound System(DEPRECATED)”和“S3C2410 audio support”两项,按空格,直到选项前面<>内变成*,然后按Tab键退出,保存配置信息:

ps*表示将驱动程序编译进内核,空表示不编译驱动程序,M表示将驱动程序编译成模块。

2、  编译内核,生成内核镜像zImage;

在内核树目录下,输入命令make zImage,编译成功后会在linux/arch/arm/boot/目录下生成zImage文件。

3、  打开Samba服务器,将内核镜像zImage共享到windows平台下,再通过DNW软件将zImage下载到开发板上;

经过以上步骤,就成功地将声卡驱动程序添加进内核。

三、测试声卡

1、启动开发板,查看声卡设备;

从显示结果可以看出,驱动程序已经成功地在内核中注册了两个字符设备:dsp和mixer,dsp的主设备号是14,次设备号是3;mixer的主设备号也是14,次设备号是0。

2、查看声卡能否正常录音和播放;

创建临时文件夹audio,使用命令实现录音,生成音频文件audio.wav,使用命令实现放音,通过测试,发现声卡工作正常。

遇到的问题:

测试声卡时,出现错误“cat :Read  error:Illegal  seek”。

解决办法:

修改声卡驱动程序,将驱动程序里的smdk2410_audio_read函数中的部分代码注释了,如下图红色圈出部分。

注意:修改驱动程序后,需要重新编译内核,生成zImage文件并下载到开发板上。

2014年6月13日星期五16:23

Linux声卡驱动移植和测试,布布扣,bubuko.com

时间: 2024-10-06 14:21:54

Linux声卡驱动移植和测试的相关文章

Linux声卡驱动移植和測试

一.分析驱动程序,依据开发板改动代码 代码太长,就不贴了,几个注意点: 1. 查看开发板原理图和S3C2410的datasheet,UDA1341的L3MODE.L3DATA.L3CLOCK分别与S3C2410的GPB2.GPB3.GPB4相连.IISLRCK=GPE0, IISSCLK=GPE1, CDCLK=GPE2,IISSDI=GPE3, IISSDO=GPE4,部分代码例如以下: 2. 两个重要结构体:audio_buf_t和audio_stream_t,当中audio_stream_

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之声卡驱动移植

经过前面的移植,tqimx6q已经可以正常驱动触摸屏了,本文我们来移植声卡驱动. DTS编写 由于tqimx6q搭载的声卡是sgtl5000芯片,因此,参考dts目录下其它开发板的相应信息,我们可以在DTS中添加如下内容: / { ... regulators { ... reg_3p3v: 3p3v { compatible = "regulator-fixed"; regulator-name = "3P3V"; regulator-min-microvolt

AM335x(TQ335x)学习笔记——WM8960声卡驱动移植

经过一段时间的调试,终于调好了TQ335x的声卡驱动.TQ335x采用的Codec是WM8960,本文来总结下WM8960驱动在AM335x平台上的移植方法.Linux声卡驱动架构有OSS和ALSA两种架构,目前最常用的架构是ALSA,本文也使用ALSA架构对WM8960驱动进行移植. ASoC是对ALSA驱动架构的进一步封装.ASoC将ALSA驱动中的各模块抽象为三部分:Platform.Codec和Machine.Platform主要是平台硬件驱动,包括SoC的IIS模块.DMA等,在本文中

十七、S3C2440 音频解码芯片WM8976声卡驱动移植、madplay测试

学习目标:1. WM9876接口和工作原理:2. WM9876驱动移植:3. WM9876应用测试:4. 问题总结 1. WM9876接口和工作原理  本节使用了JZ2440开发板移植WM9876驱动,其结构如下图所示,最后利用madplay工具测试音频文件. IIS和控制接口: 原文地址:https://www.cnblogs.com/lxl-lennie/p/10297120.html

linux网卡驱动移植

这里重要的是物理层PHY receiver,MAC(media access control)层,这里与软件中的协议栈不同,在硬件上MAC是PHY的下一层.DM9000A将MAC和PHY做到一起,也可以像IIS设备那样,SOC内有IIS的控制器,而声卡UDA1341放在片外.网卡当然也有这种设计,它是把PHY的下层MAC放入SOC内,片外的是PHY,当然我暂时还没见过这种的.DM9000A的输入是并行的总线,可以和CPU直接IO.而IIS那种需要通过:CPU CORE BUS->I2S控制器->

Linux声卡驱动框图

1.声卡驱动注册完成后的框图 2.open & hw_params 完.

Linux VGA驱动移植实验【转】

本文转载自:http://m.blog.csdn.net/bzw73/article/details/46564275 有了前面的LCD驱动的框架,再移植VGA驱动就相当的容易了.默认在光盘中已经支持了多款VGA驱动,我们在此基础上增加分辨率为1440*900的驱动. 在kernel/drivers/video/samsung/x4412_lcds.c中添加结构体vga_1440_900: /* VGA-1440X900 */ static struct s3cfb_lcd vga_1440_9

Linux Spi驱动移植小结

2012-01-07 22:21:29 效果图: 理论学习后,主要是linux中spi子系统设备框架的了解后,主控制器与设备分离的思想,那么我要开始动手了. 1,  make menuconfig添加spi配置 2,platform_driver及platform_device数据结构都有了.于是在mach-tq2440.c中tq2440_devices[]结构添加里         &s3c_device_spi1,//by apple 3,接着开始make zImage. 出错,发现串口信息

RT-Thread 学习笔记(十三)--- 开启基于RTGUI的LCD显示功能(3)&lt;触屏屏驱动移植和测试&gt;

软件环境:Win7,Keil MDK 4.72a, IAR EWARM 7.2, GCC 4.2,Python 2.7 ,SCons 2.3.2 硬件环境:Armfly STM32F103ZE-EK v3.0开发板 参考文章:RT-Thread编程指南 RT-Thread_1.2.0+lwip+rtgui0.8.0 移植心得 RT-Thread RTOS组件:RTGUI教程 Hello World 前面基本解决了显示驱动问题,接下来将要解决触摸屏的驱动问题. [1]加入触屏屏的驱动文件 (1)重