UDA1341声卡驱动与madplay移植播放mp3(第三方源代码移植步骤)

本文档详细介绍了如何在Linux环境下配置UDA1341声卡驱动,包括修改arch/arm/mach-s3c2440/mach-smdk2440.c文件并进行内核配置。接着,文章阐述了madplay的移植步骤,涉及zlib、libid3tag、libmad的下载、解压、配置、编译和安装,并解决了编译过程中遇到的头文件和库文件缺失的问题。最后,成功在开发板上运行madplay播放mp3。
摘要由CSDN通过智能技术生成

首先配置声卡UDA1341驱动,看原理图




我们只需要将相应的IIS管脚设置为我们开发板的原理图设计的管脚就可以了。我们只要在/arch/arm/mach-s3c2440/mach-smdk2440.c文件中注册UDA1341 平台设备的控制端口就可以了,端口如上图所示,打开mach-smdk2440.c,添加如下内容:

[fanmaolin@Centeros linux-3.0]$ vim arch/arm/mach-s3c2440/mach-smdk2440.c   


--- mach-smdk2440.c     2017-04-17 11:49:34.775247810 +0800
+++ mach-smdk2440s.c    2017-04-21 20:14:43.312859618 +0800
@@ -59,9 +59,32 @@
 #include <linux/i2c/at24.h>
 #include <linux/delay.h>
 
+#include <sound/s3c24xx_uda134x.h>
+#include <mach/gpio-nrs.h>
+
 #include <plat/common-smdk.h>
 
 /* add DM9000 ethernet drivers ,whitch is bodify by liuchengdeng */  
+
+static struct s3c24xx_uda134x_platform_data s3c24xx_uda134x_data = { 
+    .l3_clk = S3C2410_GPB(4),
+    .l3_data = S3C2410_GPB(3),
+    .l3_mode = S3C2410_GPB(2),
+    .model = UDA134X_UDA1341,
+}; 
+
+static struct platform_device s3c24xx_uda134x = { 
+    .name = "s3c24xx_uda134x",
+    .dev = { 
+        .platform_data = &s3c24xx_uda134x_data,
+    }
+};
+
+static struct platform_device uda1340_codec = {
+    .name = "uda134x-codec", 
+    .id = -1,
+};
+
 #define DM9000_BASE    (S3C2410_CS4 + 0x300)  
 static struct resource s3c_dm9000_resource[] = {  
      [0] = {  
@@ -222,6 +245,10 @@
        &s3c_device_i2c0,
        &s3c_device_iis,
        &s3c_device_dm9000,
+    &uda1340_codec,
+    &s3c24xx_uda134x,
+    &samsung_asoc_dma, 
+
 };
 
 static void __init smdk2440_map_io(void)

上述添加的各类结构体均要放在添加设备的devices[ ]结构体数组之前,否则会出现未定义,以及定义了没使用等错误。因为编译器是按顺序编译,所以声明必须放在结构体或者函数之前。


其次在内核中配置UDA1341驱动

make menuconfig
 
 Device Drivers  ---> 
<*> Sound card support  ---> 
<*>   Advanced Linux Sound Architecture  ---> 
< >   Sequencer support
<*>   OSS Mixer API 
<*>   OSS PCM (digital audio) API
[ ]   Support old ALSA API 
<*>   ALSA for SoC audio support  ---> 
<*>   ASoC support for Samsung
<*>   SoC I2S Audio support UDA134X wired to a S3C24XX 







make编译一下,把生成的linuxrom-s3c2440.bin文件下载到开发板,重启



出现这些信息表明声卡驱动成功移植,可以在开发板上查看:






移植madplay


移植第三方程序的主要步骤分别为:解压缩、配置(./configure)、编译(make)、安装(make install)

一般源码包解压缩之后,若已经存在Makefile则可以直接make编译;但大多数情况下需要使用源码包目录下的./configure脚本来配置源码包生成Makefile文件;

理解下面的配置参数的意义: 

 --host:   用于指定平台;如: --host==arm-linux

--prefix: 用于指定文件的安装路径;   如:--prefix=/home/fanmaolin/fl2440/3rdparty/uda1341/mad

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值