设为首页 收藏本站
查看: 1508|回复: 0

[经验分享] Linux声卡驱动移植和测试

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2014-6-18 08:39:57 | 显示全部楼层 |阅读模式
一、分析驱动程序,根据开发板修改代码
代码太长,就不贴了,几个注意点:
1、 查看开发板原理图和S3C2410的datasheet,UDA1341的L3MODE、L3DATA、L3CLOCK分别与S3C2410的GPB2、GPB3、GPB4相连,IISLRCK=GPE0, IISSCLK=GPE1, CDCLK=GPE2,IISSDI=GPE3, IISSDO=GPE4,部分代码如下:
20140613161347562.jpg
2、 两个重要结构体:audio_buf_t和audio_stream_t,其中audio_stream_t 为音频流数据组成了一个环形缓冲区;
20140613161441000.jpg

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

20140613161509500.jpg

4、 DMA的原理;
5、 驱动加载和卸载等;
20140613161520390.jpg
二、向内核中添加声卡驱动
1、  配置内核中的声卡选项;
注意:UDA1341的驱动程序s3c2410-oss.c在linux/sound/oss/目录下(内核版本:Linux-2.6.8.1)。
在内核树目录下输入make menuconfig,会跳出内核配置界面:
20140613161703156.jpg

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

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

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

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

ps*表示将驱动程序编译进内核,空表示不编译驱动程序,M表示将驱动程序编译成模块。
2、  编译内核,生成内核镜像zImage;
在内核树目录下,输入命令make zImage,编译成功后会在linux/arch/arm/boot/目录下生成zImage文件。
3、  打开Samba服务器,将内核镜像zImage共享到windows平台下,再通过DNW软件将zImage下载到开发板上;
经过以上步骤,就成功地将声卡驱动程序添加进内核。
三、测试声卡
1、启动开发板,查看声卡设备;
20140613161846765.jpg

从显示结果可以看出,驱动程序已经成功地在内核中注册了两个字符设备:dsp和mixer,dsp的主设备号是14,次设备号是3;mixer的主设备号也是14,次设备号是0。
2、查看声卡能否正常录音和播放;
20140613161850796.jpg

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

遇到的问题:
测试声卡时,出现错误“cat :Read  error:Illegal  seek”。
解决办法:
修改声卡驱动程序,将驱动程序里的smdk2410_audio_read函数中的部分代码注释了,如下图红色圈出部分。
20140613161854125.jpg

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

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-20749-1-1.html 上篇帖子: ubuntu14.04下unix网络编程 环境的配置 下篇帖子: linux操作提示:“Can't open file for writing”或“operation not per... 声卡驱动 Linux
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表