<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
mini2440下UDA1341声卡移植笔记
毕业不久,从大四下学期接触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基础上修改的,我在配置LCD、RTC等都是在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”命令后听到音频耳机输出哧哧的声音,证明声卡驱动配置成功。
----------------------------取之于网络,还之于网络--------------------
用户229822 2009-12-9 11:40
用户229822 2009-12-9 11:37