原创 mini2440下UDA1341声卡移植笔记

2009-12-20 14:04 6213 11 13 分类: MCU/ 嵌入式


<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 


mini2440UDA1341声卡移植笔记


毕业不久,从大四下学期接触mini2440到现在,一直以来都在想着自己动手完成一个跟mini2440类似甚至更加复杂的东西,一方面是通过做这样一件东西来学习,积累学习Linux的基础,另一方面就是工作的需要,我所喜欢的工作就是Linux方面的,为了我今后能够一直从事Linux方面的工作,我必须不断提高。


一、环境介绍


1、主机:虚拟机下Fedora9


2、交叉编译器:arm-linux-gcc-<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />4.3.2


3、内核版本:Linux-2.6.29.1


二、开始移植


对照友善之臂的Linux-2.6.29内核源码和使用手册,发现原来在Linux-2.6.29的内核源码中已经有了UDA1341的驱动程序,友善也是在在该驱动的基础上进行配置的。使用高版本的内核,我总结了两个好处:一是稳定可靠。内核带的驱动是经过Linux高手的反复测试过的;二是使用简单,对像我这样的初学者来说配置起来容易。说是移植,在我使用的高版本内核中就是配置,下面是我的配置过程:


1、了解友善之臂的声卡驱动配置


在友善之臂的内核源码目录下make menuconfig后,声卡的配置是:


Device Drivers-à


      <*>Sound card support -à


             <*>Advanced Linux Sound Architecture -à


                    <*>ALSA for Soc audio support-à


                           <*>SoC Audio for the Samsung S3C24XX chips


                           <*>SoC I2S Audio support UDA134X wired to a S3C24XX


声卡驱动源码在内核目录的sound/soc/s3c24xx目录下,在arch/arm/mach-s3c2440/mach-mini2440.c中对声卡设备进行配置,使该驱动注册到操作系统中。


2、对比我使用的内核源码中与友善之臂提供源码中声卡配置部分


对比友善所使用的Linux-2.6.29内核中声卡配置部分和我使用的Linux-2.6.29.1中声卡配置部分,不同的部分只有arch/arm/mach-s3c2440/mach-mini2440.c是友善在mach-smdk2440.C基础上修改的,我在配置LCDRTC等都是在mach-smdk2440.c上修改的,所以我只要在该文件上修改就可以了。


3、配置声卡驱动


下面是我在mach-smdk2440.c上修改的地方:




#include <sound/s3c24xx_uda134x.h>



static struct s3c24xx_uda134x_platform_data s3c24xx_uda134x_data = {


       .l3_clk = S3C2410_GPB4,


       .l3_data = S3C2410_GPB3,


       .l3_mode = S3C2410_GPB2,


       .model = UDA134X_UDA1341,


};


 


static struct platform_device s3c24xx_uda134x = {


       .name = "s3c24xx_uda134x",


       .dev = {


              .platform_data    = &s3c24xx_uda134x_data,


       }


};


 


static struct platform_device *smdk2440_devices[] __initdata = {


       &s3c_device_usb,


       &s3c_device_lcd,


       &s3c_device_wdt,


       &s3c_device_i2c0,


       &s3c_device_iis,


    &s3c_device_rtc,


       &s3c24xx_uda134x,


};



4、编译、下载


在内核目录下make zImage后将生成的内核文件烧写到开发板。


三、测试


启动开发板后将已经拷贝歌曲的U盘插入到开发板的USB接口,挂载U盘后,运行”cat  01.mp3 > /dev/dsp”命令后听到音频耳机输出哧哧的声音,证明声卡驱动配置成功。


 


 


 


----------------------------取之于网络,还之于网络--------------------

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户229822 2009-12-9 11:40

怎么都挤成一团啊,发过一遍。 你好,我照着移植后播放mp3不成功哦 [root@FriendlyARM /]# madplay /root/Documents/New\ Soul.mp3 MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al. Title: New soul Artist: Yael Naim Track: 3 Year: 2007 Genre: Pop-Folk Comment: Try before you buy! output: ioctl(SNDCTL_DSP_SYNC): Invalid argument 直接用友善的源码编译出来的也是这样,是不是驱动中ioctl的代码没实现啊

用户229822 2009-12-9 11:37

你好,我照着移植后播放mp3不成功哦 [root@FriendlyARM /]# madplay /root/Documents/New\ Soul.mp3 MPEG Audio Decoder 0.15.2 (beta) - Copyright (C) 2000-2004 Robert Leslie et al. Title: New soul Artist: Yael Naim Track: 3 Year: 2007 Genre: Pop-Folk Comment: Try before you buy! output: ioctl(SNDCTL_DSP_SYNC): Invalid argument 直接用友善的源码编译出来的也是这样,是不是驱动中ioctl的代码没实现啊
相关推荐阅读
用户1398279 2010-07-08 00:12
C语言共享库的制作
C语言共享库的制作0推荐 作者:杨硕,华清远见嵌入式学院讲师。1)基本概念共享库也是.o文件的集合,但是这些文件由编译器按照一种特殊的方式生成(Linux中,共享库文件为"ELF"格式,共享库已经具备...
用户1398279 2010-07-04 22:37
Linux 2.6.11 MTD驱动情景分析
Linux 2.6.11 MTD驱动情景分析最近几天为了熟悉linux的驱动开发,我选择了其MTD驱动做了一些研究。我能找到的文章中我觉得有些部分不够细致,所以我还是自己写了一部分分析,希望对别人也能...
用户1398279 2010-05-05 14:25
automake使用及库和头文件的链接
automake使用及库和头文件的链接关于automake的实践今天弄了很久的automake,自动生成Makefile,这样写程序时就会方便很多。之前也花时间看过一次,但当时只是对着一个hello....
用户1398279 2010-05-05 11:33
HP总裁退休时的信件
HP总裁退休时的信件<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />我有个有趣的观察...
用户1398279 2010-04-23 18:04
VMWare的NAT配置(包括DHCP和固定IP配置)
NAT的DHCP配置:这个网上别人写过,自己实验了下,没有问题。1 .最重要的是你的两个服务必须开启:VMware DHCP Service 和VMware NAT Service。具体操作如下: 开...
用户1398279 2010-04-23 10:48
gcc命令objdump用法
gcc命令objdump用法2009年03月29日 星期日 23:49gcc命令之 objdump ---------------objdump是用查看目标文件或者可执行的目标文件的构成的GCC工具-...
EE直播间
更多
我要评论
2
11
关闭 站长推荐上一条 /3 下一条