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

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

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、  打开Sambaserver,将内核镜像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声卡驱动移植和測试的更多相关文章

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

    经过一段时间的调试,终于调好了TQ335x的声卡驱动.TQ335x采用的Codec是WM8960,本文来总结下WM8960驱动在AM335x平台上的移植方法.Linux声卡驱动架构有OSS和ALSA两 ...

  2. linux网卡驱动移植

    这里重要的是物理层PHY receiver,MAC(media access control)层,这里与软件中的协议栈不同,在硬件上MAC是PHY的下一层.DM9000A将MAC和PHY做到一起,也可 ...

  3. 31.Linux-wm9876声卡驱动(移植+测试)

    本节学习目的 1)分析Linux中的OSS声卡系统 2)移植wm9876声卡 3)使用madplay应用程序播放mp3 1.声音三要素 采样频率 音频采样率是指录音设备在一秒钟内对声音信号的采样次数, ...

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

    学习目标:1. WM9876接口和工作原理:2. WM9876驱动移植:3. WM9876应用测试:4. 问题总结 1. WM9876接口和工作原理  本节使用了JZ2440开发板移植WM9876驱动 ...

  5. Linux网卡驱动移植--Dm9000网卡驱动分析

    1. Linux网络体系结构由以下5部分组成 ① 系统调用接口: 位于Linux网络子系统的顶部,为应用程序提供访问内核网络子系统的方法,主要指socket系统调用. ② 协议无关接口: 实现一组基于 ...

  6. Linux声卡驱动框图

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

  7. Linux VGA驱动移植实验【转】

    本文转载自:http://m.blog.csdn.net/bzw73/article/details/46564275 有了前面的LCD驱动的框架,再移植VGA驱动就相当的容易了.默认在光盘中已经支持 ...

  8. Linux Spi驱动移植小结

    2012-01-07 22:21:29 效果图: 理论学习后,主要是linux中spi子系统设备框架的了解后,主控制器与设备分离的思想,那么我要开始动手了. 1,  make menuconfig添加 ...

  9. mini2440驱动奇谭——ADC驱动与測试(动态挂载驱动)

    博客:http://blog.csdn.net/muyang_ren 实现功能:开发板动态载入adc驱动模块并能通过測试程序 系统:Ubuntu 14.04     驱动交叉编译内核:linux-2. ...

随机推荐

  1. Listview多种布局的使用

    ListView中有两个可以用来让ListView可以在视图中显示多种布局的方法,分别是getItemType和getViewTypeCount 其中 getItemViewType返回的是有参数po ...

  2. 滚动时sticky nav

    参考w3c <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <met ...

  3. es6数值扩展

    1. 二进制和八进制表示法 从 ES5 开始,在严格模式之中,八进制就不再允许使用前缀0表示,ES6 进一步明确,要使用前缀0o表示. ES6 提供了二进制和八进制数值的新的写法,分别用前缀0b(或0 ...

  4. LR接口测试---webservices

    //================================================================================== /* //事务开始 lr_st ...

  5. Android PopupWindow使用时注意

    项目中使用PopupWindown出现的坑 1.部分设备,PopWindow在Android4.0后版本,出现NullPointerException调用以下方法可解决, fixPopupWindow ...

  6. Sql server 本地临时表、全局临时表的区别

    创建了本地临时表#Tmp.全局临时表##Tmp: 本地临时表: 取名以#开头.如:#Tmp(会自动加上一串后缀) 只有当前的连接可以访问 连接关闭后,本地临时表自动释放 全局临时表: 取名以##开头. ...

  7. Java学习1_一些基础1——16.5.4

    每个java程序中都必须有一个main方法,格式为: public class ClassName { public static void main(String[] args) { program ...

  8. linux 挂载数据盘

    完整的阿里云挂载数据盘方法如下: 1.入手阿里云后查看有几块硬盘:(只显示概况,不显示分区情况) fdisk -l|grep Disk 2.查看硬盘分区 fdisk -l 如果有提示:disk /de ...

  9. Deepin系统关于每次启动终端都要输入source /etc/profile的问题

    关于每次启动终端都要输入source /etc/profile的问题 当我在Deepin系统中下载了node以及npm之后,我为了将node导入到系统文件,使用了以下命令sudo gedit ``/e ...

  10. A3. JVM 类加载器

    [概述] 虚拟机设计团队把类加载阶段中的 “通过一个类的全限定名来获取描述此类的二进制字节流” 这个动作放到 Java 虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类.实现这个动作的代码 ...