Linux声卡驱动移植和测试
来源:互联网 发布:mac的复制黏贴快捷键 编辑:程序博客网 时间:2024/06/05 06:47
一、分析驱动程序,根据开发板修改代码
代码太长,就不贴了,几个注意点:
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声卡驱动移植和测试
- Asoc声卡驱动移植
- alsa声卡驱动移植
- 开发声卡驱动移植
- 嵌入式声卡驱动模块的编译和移植
- Linux下SPI驱动的移植和应用程序的测试
- Linux下SPI驱动的移植和应用程序的测试
- Linux下SPI驱动的移植和应用程序的测试
- 移远EC20 4G模块Linux驱动移植和测试
- Linux编译声卡驱动
- Linux ALSA声卡驱动
- linux oos 声卡 驱动
- Linux ALSA声卡驱动
- Linux声卡驱动分析
- Linux设备驱动之udal341声卡驱动与madplay播放器移植
- Linux平台RTL8188CUS驱动移植及测试
- AM335x—WM8960声卡驱动移植
- uda1341声卡的linux 2.6.28版本内核驱动在arm s3c2440上的移植。
- C# 实现冒泡算法
- hdu3622 二分+2sat
- mac 终端 svn 命令
- spring定时器的实现方式-quartz 实现方式
- 唯快不破!90后大学生9天完成近670页的Swift语言文档翻译
- Linux声卡驱动移植和测试
- 找大数问题
- Nginx 的安装入门
- Android 自定义的数字键盘 支持随意拖动 和稳定的字符输入的控件
- C#不重启程序读取appconfig
- spring与Quartz整合实现定时邮件发送
- MYSQL的master,slave环境的搭建
- Android: NDK编程入门笔记
- sphinx/coreseek如何及时删除索引里的数据呢