色yeye在线视频观看_亚洲人亚洲精品成人网站_一级毛片免费播放_91精品一区二区中文字幕_一区二区三区日本视频_成人性生交大免费看

當(dāng)前位置: > 華清遠(yuǎn)見教育科技集團(tuán) > 嵌入式學(xué)習(xí) > 講師博文 > FS_S5PC100之madplay移植
FS_S5PC100之madplay移植
時間:2016-12-12作者:華清遠(yuǎn)見

FS_S5PC100平臺
        內(nèi)核2.6.35
        交叉編譯器 arm-none-linux-gnueabi-gcc-4.5.1

一.驅(qū)動的添加

1.FS_S5PC100平臺上WM9714 ALSA 移植:

這個驅(qū)動在內(nèi)核中支持,我們只需要進(jìn)行簡單的配置就行了,配置如下:

修改 sound/soc/s3c24xx/Kconfig,使其支持FS_S5PC100平臺

2.修改平臺代碼

(1)修改sound/soc/s3c24xx/s3c-ac97.c

添加如下內(nèi)容:

static int s3c_ac97_hifi_prepare(struct snd_pcm_substream *substream,struct snd_soc_dai *dai)
        {
        printk("%s %s: %d\n",__FILE__, __func__, __LINE__);
        s3c_ac97_write(0,0x26,0x0);
        s3c_ac97_write(0, 0x0c, 0x0808);
        s3c_ac97_write(0,0x3c, 0xf803);
        s3c_ac97_write(0,0x3e,0xb990);
        if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
                {
                        s3c_ac97_write(0,0x02, 0x0404);
                        s3c_ac97_write(0, 0x04, 0x0606);
                        s3c_ac97_write(0,0x1c, 0x12aa);
                }
        else
                {
                        s3c_ac97_write(0, 0x12, 0x0f0f);
                        #ifdef CONFIG_SOUND_WM9713_INPUT_STREAM_MIC
                        s3c_ac97_write(0,0x5c,0x2);
                        s3c_ac97_write(0,0x10,0x68);
                        s3c_ac97_write(0,0x14,0xfe00);
                        #else /* Input Stream is LINE-IN */
                        s3c_ac97_write(0, 0x14, 0xd612);
                        #endif
                }
        return 0;
        }

(2)修改

static struct snd_soc_dai_ops s3c_ac97_dai_ops = {
        .hw_params = s3c_ac97_hw_params,
        .trigger = s3c_ac97_trigger,
        };
        為:
        static struct snd_soc_dai_ops s3c_ac97_dai_ops = {
        .hw_params = s3c_ac97_hw_params,
        .trigger = s3c_ac97_trigger,
        .prepare = s3c_ac97_hifi_prepare,
};

(3)修改arch/arm/plat-samsung/s3c-pl330.c

添加頭文件

#include < linux/clk.h>
        #include < linux/err.h>

(4)在1037行添加
        struct clk *clk;

在1079行添加
        clk = clk_get(&pdev->dev, "pdma");
        if (IS_ERR(clk))
                {
                        printk("cannot get adc clock source\n");
                }
        clk_enable(clk);

(5)修改arch/arm/mach-s5pc100/dma.c

修改 static struct platform_device s5pc100_device_pdma0 中
        .id = 1,
        為:
        .id = 0,

修改static struct platform_device s5pc100_device_pdma1 中
        .id = 2,
        為
        .id = 1,

(6)配置內(nèi)核

$ 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 AC97 Audio support for SMDK with WM9713
        <*> Build all ASoC CODEC drivers
                重新編譯內(nèi)核
        $ make zImage
        $ cp arch/arm/boot/zImage /tftpboot

測試

系統(tǒng)啟動以后會在dev目錄下產(chǎn)生dsp設(shè)備節(jié)點

文件系統(tǒng)沒有支持udev或mdev的話就必須進(jìn)行下面步驟

建立塊專用或字符專用文件

mknod /dev/dsp c 14 3
        mknod /dev/mixer c 14 0

注:

/dev/dsp 數(shù)字信號處理(DSP):DSP是指聲卡中專門處理效果的芯片,稱為效果器,對提高聲卡性能很有用

/dev/mixer 混音器混音器是一臺控制音頻信號的提升,并將音頻信號導(dǎo)向所指目的地的設(shè)備

cat test.wav>/dev/dsp 如果驅(qū)動移植成功,這時可以聽到雜音

復(fù)制一個madplay音頻播放程序,可以用來播放mp3

二.播放器的移植

1. 移植madplay前的準(zhǔn)備。

madplay的移植需要以下的幾個包:madplay-0.15.2b.tar.gz,libmad-0.15.1b.tar.gz, libid3tag-0.15.1b.tar.gz 和 zlib-1.1.4.tar.gz。其中前面的三個包可以在//sourceforge.net/project/showfiles.php?group_id=12349下載,后一個包可以在//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,并且把庫生成到交叉編譯環(huán)境的庫目錄下,我把它放到/home/toolchain/arm-none-linux-gnueabi目錄 下。

--prefix=/home/toolchain/arm-none-linux-gnueabi。
        再修改(不能跟上面的步驟調(diào)轉(zhuǎn))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是指定為靜態(tài)編譯。不過我發(fā)現(xiàn)這樣并不能夠進(jìn)行編譯。至于如何進(jìn)行表態(tài)編譯,我將在下面中進(jìn)行介紹。
        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這個可執(zhí)行文件就把它下載到板子中,敲入: $> ./madplay pig.mp3

Setsid madplay sun.mp3 后臺執(zhí)行

發(fā)表評論
評論列表(網(wǎng)友評論僅供網(wǎng)友表達(dá)個人看法,并不表明本站同意其觀點或證實其描述)
主站蜘蛛池模板: 欧美在线观看19 | 大战丰满人妻性色Av偷偷 | 中文字幕人妻系列人妻有码 | 办公室揉弄高潮嗯啊免费视频 | 人妻系列无码专区按摩 | 在线中文字幕国产 | 国产麻豆放荡AV剧情演绎 | 特级小箩利无码毛片 | 亚洲午夜久久久久妓女影院 | 一二三四在线社区观看社区7 | 欧美熟妇丰满肥白大屁股免费视频 | 麻豆传媒影院 | 国产伦精品一区二区三区视频1 | 亚洲区激情区无码区日韩区 | 日韩av中文无码影院 | 97久久综合区小说区图片区 | 岳好紧好湿夹太紧了好爽矜持 | 国产精品自产拍在线观看55 | 亚洲成av人片在www鸭子 | 日本大乳高潮视频在线观看 | 欧美日韩一区二区在线视频 | 白嫩少妇高潮喷水 | 精品人妻无码一区二区三区毛片 | 亚洲欧洲精品成人久久av18 | 男人猛躁进女人免费播放 | 西瓜视频高清在线观看免费 | 欧美极品videos粗暴 | 蜜臀亚洲av永久无码精品老司机 | 午夜无码区在线观看 | 欧美成人免费全部 | 和小三爽到喷水h | 性一交一乱一乱一视频 | japan白嫩丰满少妇videoshd | 亚洲欧洲日产国码综合在线 | 亚洲龙腾成小说人网 | 色屁屁WWW影院免费观看 | 无套内谢孕妇毛片免费看看 | 五月天婷婷丁香综合 | 亚洲av国产av综合av | 亚洲VA999成人A片在线观看 | 久久99精品久久久久久HB亚瑟 |