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

madplay命令使用(Linux音乐播放器) 更多资料请点击:我的目录 本篇仅用于记录自己所学知识及应用,代码仍可优化,仅供参考,如果发现有错误的地方,尽管留言于我,谢谢。 madplay命令使用详细参数: -v 获取音乐播放时间 -q 不存在任何打印,但现实警告 -Q 不存在任何打印 –downsample 只采用一半数据 -i 忽略CRC校验错误 -o PATH/xx.wav 可以用来转码,将mp3转为wav,也可以是其他格式。 -a 开启衰减音量 ,增加音量,衰减系统为-175~+18 (当然通过键盘±也可以调整音量) -A 同- 阅读详情

首先配置声卡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

-I : 指定头文件的路径;  如:-I/home/fanmaolin/fl2440/3rdparty/uda1341/mad/include

arm9+linux s3c2440 uda1341声卡驱动与madplay播放器移植 一、配置声卡UDA1341驱动 Linux-3.0 已经完美的支持UDA1341 音频芯片的驱动。 UDA1341音频芯片,走的标准的IIS总线,Linux中对IIS及UDA1341的支持已经非常完善了,我们只需要将相应的IIS管脚设置为我们开发板的原理图设计的管脚就可以了。我们只要在arch/arm/mach-s3c2440/mach-mini2440.c 文件中注册UDA1341 平台设 阅读详情

相关推荐

linux-2.6.14下madplay在S3C2410上移植的全过程详解

    linux-2.6.14下madplay在S3C2410上移植的全过程详解一. 声卡(uda1341 philis) 驱动的移植: 在移植之前,自己看了不了这方面的文章,但是觉得大同小异,有一些大侠还用了一些我看不懂的文件(.ko,我似乎没有见过这样的文件,知道的请相告一声^_^),后来就开始动手移植了。 1. 首先自己在网上下了一个uda1341的驱动文件s3c2410-uda134

林大虫子的专栏 5533

TQ2440 上用多线程实现的mp3 播放器

    概述:        @  这是一个基于 tq2440开发板的, 使用用多线程实现的mp3播放器。        @  从软件层次来看, 驱动层包括  按键驱动 和 声卡驱动, 需要自己实现的是 按键驱动; 应用层有 MP3主播放程序 和 Madplay播放器。         @  除了madplay 播放器播放MP3, 为了好玩 ,还将蜂鸣器播放音乐的功能加了进去, 不过要用  下的一段 代码转换 编码数组 为程序可读的文件。@  由于 madplay 编译后 本身会只会生成 madplay这个

RICH_BABA的专栏 5260

madplay的使用方法嵌入式

madplay的使用方法嵌入式(重要),MP3解码器的命令操作模式

基于mini2440的嵌入式madplay mp3播放器

包含按键驱动代码,应用程序代码,madplay的源代码,在linux 2.6.18上测试通过,前提是内核已有uda1341音频驱动。

移植Madplay到Mini2440-1

内核配置模块正确的话,可直接用madplay *.MP3

安装Tailscale

如果返回 /usr/bin/tailscale 或类似路径,说明已安装但 sudo 可能找不到它。如果 which tailscale 没有输出,说明安装失败,重新执行安装步骤。Tailscale 的后台服务 tailscaled 必须运行。检查 tailscaled 服务是否运行。检查 tailscale 命令是否存在。

FairLikeSnow的博客 1470

攻防世界-Reverse-Game

攻防世界,game,逆向

wuh2333的博客 775

粒子滤波在基于误差状态量的INS/GNSS组合导航中的使用技巧-On Particle Filter based Error-State INS/GNSS Intergrated Navigation

本文面向以15维惯导(INS)误差为状态量,3维位置误差为量测量的INS/GNSS组合导航系统,​在西工大严恭敏老师的开源工具箱中PF相关库函数基础上实现基于粒子滤波(PF)的惯导误差状态量的递推估计,设计了粒子重置环节并强调了其在本特定场景下的重要性。

I33D33I的博客 1742

基于立创·庐山派K230的红色激光点识别和锁定追踪

本文介绍了一种基于立创・庐山派K230开发板的红色激光点识别与追踪系统。该系统通过摄像头采集图像,采用RGB565格式和Gamma校正进行预处理,利用颜色阈值筛选实现红色激光点检测。核心追踪算法采用状态机设计,包含未锁定和已锁定两种状态,通过计算欧氏距离判断目标连续性,并具有丢失计数机制确保稳定性。系统通过UART接口以自定义二进制协议输出坐标数据,同时提供可视化反馈。该方案在800×480分辨率下实现了实时、稳定的单目标追踪,具有检测精度高、响应速度快的特点,适用于工业定位和机器人导航等嵌入式视觉应用场景

m0_73738367的博客 1652

告别底噪和发热:TPA3255的PCB布局与散热设计保姆级教程(附嘉立创EDA文件)

本文详细解析TPA3255 Class D音频功放的PCB布局与散热设计,提供从电源系统分层架构到热管理系统的全流程优化方案。通过实战案例展示如何消除底噪、降低发热,并附嘉立创EDA文件,助力工程师快速设计高性能音频功放。

weixin_29208077的博客 376

SAP-MM-PR分配货源并转PO

SAP-MM-PR分配货源并转PO

yanzibing99的博客 5472

【新华三】通过路由复制实现Public与VRF路由互通

如上图所示,S6900设备里有两张表,一张是public路由表,默认所有的路由都存放在public路由表里;除此之外还创建了VRF test,因此此设备还有VRF test路由表。通过路由复制实现Public路由和VRF路由互通,默认情况下VRF里的路由单独一张路由表,默认情况下与public路由表相互隔离,两张表之间不可互访。此时的public路由表里面并没有test的路由表。public路由表与VRF路由表之间相互隔离。此时VRF test里的路由也没有其他VRF或Public里的路由,相互隔离。

五大连池的镜子 5278

【数据集总结】不透水面积ISA:GAIA、CLUD-Urban、GISA

【数据集总结】不透水面积ISA:GAIA、CLUD-Urban、GISA

WW、forever的博客 2155

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

上一篇: pwm控制蜂鸣器驱动移植及初步认识Kconfig
下一篇: 写程序熟悉read()、write()、stat()、open()、access()等函数
fml1997
博客等级 码龄10年 30粉丝 56原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值