fl2440内核linux 3.0移植-----UDA1341音频驱动和mp3播放

1,编译编译环境:arm-linux-gcc v4.4.3

2,开发板:FL2440,256M nand flash。

3,u-boot版本:u-boot-2011.09

4,linux 版本:linux-3.0


1】在初始化文件中加入UDA1341 , samsung_asoc_dma结构。(红色为添加内容)

#include <linux/dm9000.h>
//添加SD 卡设备结构所需的头文件
#include <linux/mmc/host.h>
#include <plat/mci.h>

//添加声卡头文件
#include <sound/s3c24xx_uda134x.h>

 

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,
};

 

static struct platform_device *smdk2440_devices[] __initdata = {
        &s3c_device_ohci,
        &s3c_device_lcd,
        &s3c_device_rtc,
        &s3c_device_wdt,
        &s3c_device_i2c0,
        &s3c_device_adc,
        &s3c_device_ts,
        &s3c_device_adcdev,
        &s3c_device_iis,
        &s3c_device_dm9000,
       &uda1340_codec,
        &s3c24xx_uda134x,
        &samsung_asoc_dma,

};

这样,我们基本就添加好了 UDA1341 音频设备的驱动。

【2】在内核中配置UDA1341 设备驱动

在终端中进入到内核源码根目录下执行make menuconfig

Device Drivers --->
<*> Sound card support --->

[*] Preclaim OSS device numbers

<*> Advanced Linux Sound Architecture ---> 

< > Sequencer support

<*> OSS Mixer API

<*> OSS PCM (digital audio) API

[*] OSS PCM (digital audio) API - Include plugin system

[*] Dynamic device file minor numbers

[ ] Support old ALSA API

[*] Verbose procfs contents

<*> ALSA for SoC audio support --->

-*- SoC I2S Audio support UDA134X wired to a S3C24XX

【3】重新编译内核并测试

烧到fl2440板子上启动内核打印如何下说明UDA1341音频驱动添加成功了:

s3c-sdi s3c2440-sdi: mmc0 - using pio, sw SDIO IRQ
usbcore: registered new interface driver usbhid
usbhid: USB HID core driver
S3C24XX_UDA134X SoC Audio driver
UDA134X SoC Audio Codec
asoc: uda134x-hifi <-> s3c24xx-iis mapping ok
ALSA device list:
  #0: S3C24XX_UDA134X
Netfilter messages via NETLINK v0.30.
nf_conntrack version 0.5.0 (928 buckets, 3712 max)

执行如下命令显示:

->cat /proc/devices

Character devices:
... ...

10 misc
13 input
14 sound
29 fb

3]madplay 移植播放mp3音乐

所需源码包:madplay-0.15.2b.tar.gz,libmad-0.15.1b.tar.gz,libid3tag-0.15.1b.tar.gz 和 zlib-1.1.4.tar.gz

1新建目录并上传源码包到madplay 目录并解压

[liuchengdeng@centos6 ~]$  mkdir madplay 
[liuchengdeng@centos6 ~]$  mkdir madplay/mad 

[liuchengdeng@centos6 madplay]$ ls

mad  [liuchengdeng@centos6 madplay]$ ls
mad madplay-0.15.2b.tar.gz,libmad-0.15.1b.tar.gz,libid3tag-0.15.1b.tar.gz 和 zlib-1.1.4.tar.gz

2.编译zlib-1.1.
进入到zlib-1.1.4路径
[liuchengdeng@centos6 madplay]$ cd zlib-1.1.4
(1)首先配置configure 文件,生成Makefile,命令(--prefix=/madplay/mad/为指定最终生成的库文件的安装路径)
sudo ./configure --prefix=home/liuchengdeng/madplay/mad
(2)修改Makefile
vim Makefile

            修改以下三项:
                     CC=gcc 修改为CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc
                    AR=ar rc 修改为AR=a/opt/buildroot-2012.08/arm920t/usr/bin/rm-linux-ar rc
                    RANLIB=ranlib 修改为RANLIB=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-ranlib

(3)编译make

 (4)安装make install

3: 编译libid3tag-0.15.1b 

进入到libid3tag-0.15.1b

1)运行以下命令

 ./configure CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc AR=arm-linux-ar RANLIB=arm-linux-ranlib --host=arm-linux --prefix=/home/liuchengdeng/madplay/mad --disable-shared CPPFLAGS=-I/home/liuchengdeng/madplay/mad/include/  LDFLAGS=-L/home/liuchengdeng/madplay/mad/lib

2)编译:make

3)安装:make install

4: 编译libmad-0.15.1b

进入到libmad-0.15.1b 路径:

1)运行以下命令

 ./configure CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc AR=arm-linux-ar RANLIB=arm-linux-ranlib --host=arm-linux --prefix=/home/liuchengdeng/madplay/mad --disable-shared CPPFLAGS=-I/home/liuchengdeng/madplay/mad/include/  LDFLAGS=-L/home/liuchengdeng/madplay/mad/lib

2)编译:make

3)安装:make install

5。编译madplay:
       进入madplay-0.15.2b

1)执行如下命令:

/configure CC=/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc AR=arm-linux-ar RANLIB=arm-linux-ranlib --host=arm-linux --prefix=/home/liuchengdeng/madplay/mad --disable-shared --enable-static --disable-nls CPPFLAGS=-I/home/liuchengdeng/madplay/mad/include/ LDFLAGS=-L/home/zhao/madplay/mad/lib

2)编译:make

3)安装:make install

如此就会看到当前目录有个madplay,这样生成的madplay最终是动态编译的.

注意了:为了静态编译,make之后输出的最后的编译命令复制一下,最后加上-static,执行如下命令:


/opt/buildroot-2012.08/arm920t/usr/bin/arm-linux-gcc -Wall -g -O2 -o madplay madplay.o getopt.o getopt1.o version.o resample.o filter.o tag.o crc.o rgain.o player.o audio.o audio_aiff.o audio_cdda.o audio_hex.o audio_null.o audio_raw.o audio_snd.o audio_wave.o audio_oss.o -L/home/liuchengdeng/madplay/mad/lib /home/liuchengdeng/madplay/mad/lib/libmad.a /madplay/mad/lib/libid3tag.a -lz -lm -static

(如果此命令不能编译成功,就把madplay下载到开发板上,然后在把所有需要的动态库下载到文件系统的lib目录下  。arm-linux-readelf -d madplay可以查看madplay需要哪些动态库

在将当前目录下的madplay通过TFTP下载到开发板上,然后下载一个mp3格式的音频文件到开发板,执行:

./madplay xxx.mp3

记得插上耳机就可以通到音乐了:











 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值