linux音频驱动程序测试,Linux声卡驱动移植和测试

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

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

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

dd758d9ff62b28198ec18b44ce72e523.png

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

7596d73b458794f16d319f196b4dfc35.png

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

a111a8a93388430aa0c40bcb43615b12.png

1b37d488b8c890c8368f71a7f7c76f16.png

4、 DMA的原理;

5、 驱动加载和卸载等;

82a21654d5f5c90da15e0f7ef00f571a.png

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

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

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

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

cae3ce45dcae0a446c52ea57172c5e25.png

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

3fe2bea49894c2a70120fefea91057df.png

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

7c5d72a0700baa054230aba7231ff0c8.png

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

ddf994a74e2e9e9e4b32e8313abe9054.png

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

269c24de7ff984937ce680175405cb94.png

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

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

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

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

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

三、测试声卡

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

5bc4bfd36cd5dd931d8c7926fdc4b987.png

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

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

57097da6f18a80e640668331c6313847.png

创建临时文件夹audio,使用命令

b7f1db8155a39524fb721ca8bb115ef4.png实现录音,生成音频文件audio.wav,使用命令

a59b43722f4eb8507887baf15016f1f9.png实现放音,通过测试,发现声卡工作正常。

遇到的问题:

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

解决办法:

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

5f5a2daf80dcd918ce0df471067976bb.png

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

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

原文:http://blog.csdn.net/suaoyang/article/details/30496823

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值