準備工作
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,添加如下幾行
- #alsa_init
- mkdir /dev/snd
- ln -s /dev/controlC0 /dev/snd/controlC0
- ln -s /dev/pcmC0D0c /dev/snd/pcmC0D0c
- ln -s /dev/pcmC0D0p /dev/snd/pcmC0D0p
- ln -s /dev/timer /dev/snd/timer
- amixer cset numid=86 2
- amixer cset numid=87 2
Tips:amixer的兩句指令,是将amixer的預設設定'Left Capture Source'和'Right Capture Source'的值改為'Line‘,否則會出現alsa錄音沒有聲音的問題
5.編輯$rootfs/etc/profile,添加如下兩行
- #alsa_init
- 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