准备工作

alsa-lib版本:alsa-lib-1.0.23.tar.bz2

alsa-util版本:alsa-utils-1.0.23.tar.bz2

其他版本的alsa-lib和alsa-util不能保证正常工作

arm板子:s3c2440

板子上linux内核:2.6.xx

pc虚拟机:arm-linux-gcc:4.4.3

 

首先在Ubuntu上交叉、编译alsa-lib和alsa-util

1.解压alsa-lib-1.0.23.tar.bz2,进入解压所得目录

2.使用命令

./configure --host=arm-linux --prefix=/home/guazai/alsa  --disable-python  


3.使用命令

make

编译中遇到 cannot find -lpython2.5,是configuer中没有加 --disable-python 

make install

4.解压alsa-utils-1.0.23.tar.bz2,进入解压所得目录

5.使用命令

/configure --host=arm-linux --prefix=/home/alsa CFLAGS="-I/home/alsa/include" LDFLAGS="-L/home/alsa/lib -lasound "  --disable-alsamixer --disable-xmlto  

--disable-alsamixer表示不编译生成alsamixer这个应用程序,因为该程序依赖于ncurses这个图形界面库,目前我们对于该库还不能交叉编译,故放弃

make

make install


至此Ubuntu上的工作全部结束

 8.到此还不能保证自己移植的是否成功能用,先看一下我们生成的utils是否是交叉环境上的,也就是能在arm上运行的,如何测试呢?很简单,跳到我们生成工具目录下(cd /usr/share/arm-alsa/sbin/)

# cd /usr/share/arm-alsa/bin/

# file aplay

显示 aplay: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.21, not stripped

注意:这就是我们能在arm上运行的小工具格式,最重要的是看arm那里,那里显示arm说明我们的运行环境是在arm上,这正是我们移植的目的,但是如果显示是 Intel 80386,说明我们没有移植成功,问题就是出在我们交叉工具链设置上。

接着要在2440上部署已交叉编译好的alsa-lib和alsa-util


1.将Ubuntu中/home/guazai/alsa下的lib、bin、sbin下的文件cp至2440根文件系统的目录的/lib /bin /sbin下

2.动态库需要一些配置文件,配置文件在/home/guazai/alsa下,开发板的复制路径不是随便设置,必须和主机编译时相同的路径,否则动态库无法找到某些文件

在开发板下建立/home/guazai/alsa路径,将除了lib bin sbin的文件夹拷贝进去

 

4.编辑$rootfs/etc/init.d/rcS,添加如下几行


  1. #alsa_init  
  2. mkdir /dev/snd  
  3. ln -s /dev/controlC0 /dev/snd/controlC0  
  4. ln -s /dev/pcmC0D0c /dev/snd/pcmC0D0c  
  5. ln -s /dev/pcmC0D0p /dev/snd/pcmC0D0p  
  6. ln -s /dev/timer /dev/snd/timer  
  7.   
  8. amixer cset numid=86  
  9. amixer cset numid=87  
Tips:amixer的两句命令,是将amixer的默认设置'Left Capture Source'和'Right Capture Source'的值改为'Line‘,否则会出现alsa录音没有声音的问题

5.编辑$rootfs/etc/profile,添加如下两行


  1. #alsa_init  
  2. export ALSA_CONFIG_PATH=/home/guazai/alsa/share/alsa/alsa.conf  

 

6、如果开机运行后,你输入

# amixer 
ALSA lib conf.c:3601:(snd_config_update_r) Cannot access file /usr/local/alsa/share/alsa/alsa.conf
ALSA lib control.c:902:(snd_ctl_open_noupdate) Invalid CTL default
amixer: Mixer attach default error: No such file or directory

或者和上面的信息类似,那说明我们copy的配置信息据对路径不对,根据提示信息建相应的文件夹,把我们生成相应配置信息cp进去,逐步尝试,(会有好几次错误提示,和上面的作法一样)

知道最后可以成功运行,打工造成,移植成功!~

 

 下篇文章我会根据我的情况总结一下这些小工具的具体使用方法!!

  amixer小工具具体使用方法:http://blog.sina.com.cn/s/blog_7d7e9d0f0101ltg5.html

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐