目录
一、配置内核支持UDA1341
1、主要目录
linux-3.4.2\sound\soc\samsung
linux-3.4.2\sound\soc\codecs
2、主要.c文件
在linux-3.4.2\sound\soc\samsung中查看Makefile通过文件找到以下配置宏
CONFIG_SND_S3C24XX_I2S // s3c24xx-i2s.c
CONFIG_SND_SOC_SAMSUNG // dma.c
在linux-3.4.2\sound\soc\codecs中查看Makefile通过文件找到以下配置宏
CONFIG_SND_SOC_UDA134X // uda134x.c
CONFIG_SND_SOC_SAMSUNG_S3C24XX_UDA134X // s3c24xx_uda134x.c
二、make menuconfig
通过make menuconfig搜索以上的宏,并配置
配置
CONFIG_SND_SOC_SAMSUNG
CONFIG_SND_SOC_SAMSUNG_S3C24XX_UDA134X
后会自动配置CONFIG_SND_S3C24XX_I2S
-> Device Drivers
-> Sound card support
-> Advanced Linux Sound Architecture
-> ALSA for SoC audio support
<*> ASoC support for Samsung // CONFIG_SND_SOC_SAMSUNG
<*> SoC I2S Audio support UDA134X wired to a S3C24XX // CONFIG_SND_SOC_SAMSUNG_S3C24XX_UDA134X // s3c24xx_uda134x.c
配置DMA
-> System Type
[*] S3C2410 DMA support
三、添加平台设备
修改linux-3.4.2\arch\arm\mach-s3c24xx\mach-smdk2440.c
1、 修改mach-smdk2440.c 添加"s3c24xx_uda134x"平台设备
需要在mach-smdk2440.c用起来就行
2、 修改mach-smdk2440.c添加"s3c24xx-iis"平台设备
在devs.c中定义,直接在mach-smdk2440.c用起来就行
3、 修改mach-smdk2440.c 添加"samsung-audio"平台设备
在devs.c中定义,直接在mach-smdk2440.c用起来就行
4、修改mach-smdk2440.c 添加"uda134x-codec"平台设备
四、 修改bug
sound\soc\samsung\dma.c
pos += prtd->dma_period;
改为
pos += prtd->dma_period*limit;
五、移植应用程序
1、编译alsa-lib :
sudo mv /usr /usr_bak //因为必须要和arm板的路径保持一致
export PATH=/usr_bak/local/sbin:/usr_bak/local/bin:/usr_bak/sbin:/usr_bak/bin:/sbin:/bin:/usr_bak/games:/usr_bak/local/arm/4.3.2/bin
./configure --host=arm-linux //默认安装到/usr下
make
sudo mkdir /usr
sudo chown book:book /usr
make install
sudo cp -rf /usr /work/projects/alsa/
sudo rm -rf /usr
sudo mv /usr_bak /usr
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin
把头文件和库复制进交叉工具链里
cd /work/projects/alsa/usr/include
sudo cp * -rfd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include
cd /work/projects/alsa/usr/lib
sudo cp * -rfd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
把库复制到根文件系统的lib目录下
cd /work/projects/alsa
sudo -rfd usr /work/nfs_root/fs_mini_mdev_new
2、编译alsa-util的依赖
先编译依赖:ncurses-5.9.tar.gz
./configure --host=arm-linux --prefix=$PWD/tmp --with-shared
make && make install
//安装报错不理会
把头文件和库复制进交叉工具链里
cd /work/projects/alsa/ncurses-5.9/tmp/include/ncurses
sudo cp * -rfd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include
cd /work/projects/alsa/ncurses-5.9/tmp/include/
sudo cp * -rfd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/usr/include
cd /work/projects/alsa/ncurses-5.9/tmp/lib
sudo cp * -rfd /usr/local/arm/4.3.2/arm-none-linux-gnueabi/libc/armv4t/lib
把库复制到根文件系统的lib目录下
cd /work/projects/alsa/ncurses-5.9/tmp/lib
sudo cp *so* -rfd /work/nfs_root/fs_mini_mdev_new/lib
3、编译alsa-util
./configure --host=arm-linux --prefix=$PWD/tmp --with-curses=ncurses --disable-xmlto --disable-nls
make
sudo make install
cd tmp
cp * -rfd /work/nfs_root/fs_mini_mdev_new/usr
六、测试
mkdir /dev/snd
cd /dev/snd/
ln -s /dev/controlC0
ln -s /dev/pcmC0D0p
ln -s /dev/pcmC0D0c
播放:
aplay Windows.wav
调音量:
amixer controls
amixer cget numid=1
amixer cset numid=1 30