Uda驱动-音频

原文地址 http://blog.csdn.net/west_609/archive/2007/10/17/1828437.aspx

由原文修改而来

FS2410平台samsu2410

内核2.6.35.9

交叉编译器 arm-none-linux-gnueabi-gcc-4.3.2

Uda驱动:

修改平台代码

修改arch/arm/mach-s3c2410/mach-smdk2410.c添加如下内容

#include <sound/s3c24xx_uda134x.h>

#include <mach/regs-gpio.h>

 

//audio UDA1341

static struct s3c24xx_uda134x_platform_data smdk2410_audio_pins = {

.l3_clk = S3C2410_GPB(4),

.l3_mode = S3C2410_GPB(2),

.l3_data = S3C2410_GPB(3),

.model = UDA134X_UDA1341

};

 

static struct platform_device s3c_device_audio = {

.name                = "s3c24xx_uda134x",

.id                = 0,

.dev                = {

.platform_data        = &smdk2410_audio_pins,

},

};

static struct platform_device *smdk2410_devices[] __initdata = {

&s3c_device_ohci,

&s3c_device_lcd,

&s3c_device_wdt,

&s3c_device_i2c0,

&s3c_device_iis,

&s3c_device_adc,

&s3c_device_ts,

&s3c_device_audio, //添加内容

};

配置内核

$ make menuconfig

Device Drivers  --->

<*> Sound card support  --->

  <*>   Advanced Linux Sound Architecture  --->     

<*>   OSS Mixer API

<*>   OSS PCM (digital audio) API 

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

[*]   Support old ALSA API

[*]   Verbose procfs contents

[*]   Verbose printk

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

<*>   SoC Audio for the Samsung S3CXXXX chips

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

重新编译内核

$ make  zImage

$ cp arch/arm/boot/zImage  /tftpboot

测试

系统启动以后会在dev目录下产生dsp设备节点

文件系统没有支持udevmdev的话就必须进行下面步骤

建立块专用或字符专用文件

mknod /dev/dsp c 14 3

mknod /dev/mixer c 14 0

注:

/dev/dsp 数字信号处理(DSP)DSP是指声卡中专门处理效果的芯片,称为效果器,对提高声卡性能很有用

/dev/mixer 混音器混音器是一台控制音频信号的提升,并将音频信号导向所指目的地的设备

cat test.wav>/dev/dsp 如果驱动移植成功,这时可以听到杂音

复制一个madplay音频播放程序,可以用来播放mp3

 

 播放器的移植
 现在有很多的播放器可以移植到arm9上,你mplayer,madplay等。但发现移植mplayer时 遇到了一个很致命的文件错误,怎么也解决不了,<<mplayer2410上的移植.pdf>>中也没有相关的方法,我只好暂时耽下,换了 另外一个播放器madplay.
 1. 移植madplay前的准备。
 madplay的移植需要以下的几个包:madplay-0.15.2b.tar.gzlibmad-0.15.1b.tar.gz
libid3tag-0.15.1b.tar.gz 和 zlib-1.1.4.tar.gz。其中前面的三个包可以在http://sourceforge.net/project/showfiles.php?group_id=12349下载,后一个包可以在http://www.gzip.org/zlib/zlib-1.1.4.tar.gz中找到。
  为了编译这个播放器,还需要一个交叉编译器,gcc version 4.3.2 (crosstool-NG-1.8.1-none)

 2. 开始编译
    2.1. 用交叉编译工具编译zlib,并且把库生成到交叉编译环境的库目录下,我把它放到/home/toolchain/arm-none-linux-gnueabi目录 下。--prefix=/home/toolchain/arm-none-linux-gnueabi
   再修改(不能跟上面的步骤调转)makefile文件:
   CC=arm-none-linux-gnueabi-gcc
   AR=arm-none-linux-gnueabi-ar rcs
   RANLIB=arm-none-linux-gnueabi-ranlib
 make ,make install ,编译好之后就可以在上面prefix指定的目录下的lib目录下找到libz.a这个库。

   2.2. 编译libid3tag
  ../configure CC=arm-none-linux-gnueabi-gcc --prefix=/home/toolchain/arm-none-linux-gnueabi --host=arm-none-linux-gnueabi --disable-debugging --disable-shared --enable-static CPPFLAGS=-I/home/toolchain/arm-none-linux-gnueabi/include  LDFLAGS=-L/home/toolchain/arm-none-linux-gnueabi/lib

  其中,--disable-shared --enable-static是指定为静态编译。不过我发现这样并不能够进行编译。至于如何进行表态编译,我将在下面中进行介绍。
  make, make install

 2.3. 编译libmad
 ./configure CC=arm-none-linux-gnueabi-gcc --prefix=/home/toolchain/arm-none-linux-gnueabi --host=arm-none-linux-gnueabi --disable-debugging --disable-shared --enable-static CPPFLAGS=-I/home/toolchain/arm-none-linux-gnueabi/include  LDFLAGS=-L/home/toolchain/arm-none-linux-gnueabi/lib

  然后,make ,make install

报错:cc1: error: unrecognized command line option “-fforce-mem” 

解决方式找到libmad configure之后的Makefile,
vi Makefile
找到包含"-fforce-mem"字符串,将其删除,就ok 

 2.4. 编译madplay
  ./configure ./configure CC=arm-none-linux-gnueabi-gcc --prefix=/home/toolchain/arm-none-linux-gnueabi --host=arm-none-linux-gnueabi --disable-debugging --disable-shared --enable-static CPPFLAGS=-I/home/toolchain/arm-none-linux-gnueabi/include  LDFLAGS=-L/home/toolchain/arm-none-linux-gnueabi/lib

  然后,make 
 
 编译完成后,查看了一下madplay这个可执行文件就把它下载到板子中,敲入:
 $> ./madplay pig.mp3

你可能感兴趣的:(c,IIS,平台,makefile,audio,编译器)