2.6.22上移植uda1341音频驱动
时间:2009-03-26 来源:For Free
(1)下载附件中uda1341驱动源码,保存为s3c2410-uda1341.c
(2)将s3c2410-uda1341.c复制到kernel root/sound/oss/目录下
(3)修改oss目录下的kconfig
添加
config S3C2410_SND_UDA1341
tristate "S3C2410 UDA1341 driver (S3C2410)"
depends on SOUND_PRIME!=n && SOUND && ARM && ARCH_SMDK2410
(4)修改oss目录下的makefile
增加
obj-$(CONFIG_S3C2410_SND_UDA1341) += s3c2410-uda1341.o
(5)修改增加内存映射,以使内核知道该虚拟地址可用,而且对应的物理地址是我们的声卡。修改/arch/arm/mach-s3c2410/smdk-s3c2410.如下:
static struct map_desc smdk2410_iodesc[] __initdata = { |
(6)把2.4.18内核的include/asm/arch/bitfield.h复制到2.6.22.1同目录下
(7)修复2.6.22内核中dma的bug,2.6.22内核中dma通道的映射有问题。通道映射不正确的话,uda1341就没有输出。
修改arch/arm/plat-s3c24xx/dma.c的s3c2410_dma_map_channel函数中修改如下:
static struct s3c2410_dma_chan *s3c2410_dma_map_channel(int channel) |
就是注释掉一段代码就行了。然后,还是同一个文档中,修改函数:s3c2410_dma_enqueue这个函数的结尾:
将s3c2410_dma_ctrl(chan->number S3C2410_DMAOP_START);
修改为 s3c2410_dma_ctrl(channel, S3C2410_DMAOP_START);
(8) make menuconfig
选择driver->sound->sound card support->open sound system-> S3C2410 UDA1341 driver (S3C2410)
(9)编译 make zImage
(10)测试
/dev/dsp 数字信号处理(DSP):DSP是指声卡中专门处理效果的芯片,称为效果器,对提高声卡性能很有用
/dev/mixer 混音器混音器是一台控制音频信号的提升,并将音频信号导向所指目的地的设备
cat test.wav>/dev/dsp 如果驱动移植成功,这时可以听到杂音
移植一个madplay音频播放程序,就可以用来播放mp3了
参考文章:
http://zhongranxu.blog.163.com/blog/static/6658419520090153127277/
|