历史上的今天
今天是:2025年07月23日(星期三)
2021年07月23日 | 嵌入式驱动移植之声卡驱动移植
2021-07-23 来源:eefocus
移植环境
BootLoader:u-boot-1.1.6
kernel:linux-2.6.30.4
CPU:s3c2440
开发板:TQ2440
声卡:UDA1341
移植步骤
在 Linux-2.6.30.4 的驱动中已经包含了 UDA13410 的驱动了,不过原生的 1.0.20 这个版本会出现播放音频视频断断续续的情况,应该是驱动 bug,这里使用了 1.0.18a 这个版本的驱动,成功解决了播放断断续续的问题。
1、在 Linux-2.6.30.4 中替换 1.0.18a 的驱动:
获取 1.0.18a 的声卡驱动,可以下载 Linux-2.6.29.xxx 的内核源码,然后复制其中的“sound/”目录和“ include/sound/ ” 目 录 到 Linux-2.6.30.4 的 内 核 中 替 换 掉 原 来 的 目 录 ; 然 后 复 制“ include/asm-arm/plat-s3c24xx/ ” 目 录 到 Linux-2.6.30.4 目 录 下 的 “ include/asm-arm/ ” 目 录 下 ; 复 制
“arch/arm/mach-s3c2410/include/mach/audio.h”文件到对应的目录下。
在“include/linux/proc_fs.h”文件中 70 行添加如下内容:
struct module *owner;
1
因为在“sound/core/info.c”文件的 159 和 982 行用到了 struct proc_dir_entry 结构图的 owner 变量。
然后修改“arch/arm/mach/mach-s3c2440/mach-smdk2440.c”文件,添加如下内容:
# include 1 /* UDA1341 */ 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 s3c_device_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, &s3c_device_dm9000, &s3c_device_uda134x, //添加的 }; 2、配置内核 Device Drivers —> <* > Sound card support —> — Sound card support <* > Advanced Linux Sound Architecture —> — Advanced Linux Sound Architecture <* > OSS Mixer API <* > OSS PCM (digital audio) API [* ] Verbose procfs contents <* > ALSA for SoC audio support —> — ALSA for SoC audio support <* > SoC Audio for the Samsung S3CXXXX chips <* > SoC I2S Audio support UDA134X wired to a S3C24XX 完成配置后,保存配置单,编译出内核,烧写镜像到开发板之后,可以在开发板上面使用声卡设备了。 3、测试声卡 使用 madplay 播放器来播放 MP3 等音频文件,直接复制天嵌科技提供的文件系统里面的 madplay 到NFS文件系统的“sbin/”目录下即可。 这里发现一个问题,按照天嵌的方法不能录音和播放: 在开发板的串口终端使用:#cat /dev/sound/dsp > /tmp/abc.wav 这条命令进行录音测试,然后再使用:#cat /tmp/abc.wav > /dev/sound/dsp, 发现用不了,有待解决。。。。。。。 
上一篇:嵌入式驱动移植之RTC驱动移植
下一篇:嵌入式驱动移植之触摸驱动初识
史海拾趣
|
刚装了Evc4+sp3+sdk4.2+ppc2003sdk,编译的时候报“The emulator coul not be found in the speci 模拟器已经装了阿,可以看到的,为什么编译出问题呢?模拟器的安装路径不能变吗?哪位能告诉我evc4怎么配置阿,有哪本书讲啊?… 查看全部问答> |
|
小弟正在做一个项目,是用飞思卡尔的MCU+2.4 G无线,无线可以随便 想找个做过或熟悉2.4G的帮我写,或教我写无线部分代码。可以付一定的报酬,不要太多哦,我也打工 .实在无办法了,只能自掏腰包。 跪求各 ...… 查看全部问答> |
|
最近在学习28027,也买了个开发板。下载了不少论坛里各位高手的例程,发现基本大家都没有利用到ti的库函数,都是在编辑寄存器的各个位来实现外设的初始化。 我之前用过lm3s系列的arm,感觉用库函数还是很方便的,但找了很久都没有找到ti官方的库函 ...… 查看全部问答> |




