v3S驱动音频
文章目錄
- 一、buildroot 配置 alsa-lib 和 alsa-utils移植(測試不通過)
- 1. 使能 alsa-lib
- 2. 使能 alsa-utils
- 二、自行配置 alsa-lib 和 alsa-utils移植(麻煩但不得不用)
- 1. 將壓縮包拷貝到ubuntu下
- 2.alsa-lib移植
- 3. alsa-utils移植
- 三、聲卡設(shè)置與測試
- 1. amixer使用方法
- 1. 查看幫助信息
- 2.更多操作請看
- 2.其他配置
- 1. 查看CODEC設(shè)備
- 2. 查看設(shè)備
- 3. 調(diào)節(jié)音量
- 4. 查看控制器 amixer contents
- 3. 播放音樂
- 4. 錄音
- 1.基本配置
- 2. 錄音測試
一、buildroot 配置 alsa-lib 和 alsa-utils移植(測試不通過)
輸入 make menuconfig,打開 buildroot 配置界面,配置路徑如下:
1. 使能 alsa-lib
Target packages
-> Libraries
-> Audio/Sound
-> -*- alsa-lib —> 此配置項下的文件全部選中
2. 使能 alsa-utils
Target packages
-> Audio and video applications
-> alsa-utils 此目錄下的軟件全部選中
配置好之后保存退出,編譯,下載到開發(fā)板。
這里提示找不到
查看只有
少了好多東西,不知道怎么回事(測試了好久,百度也沒搜到解決方法,只能直接編譯了)
可能需要make clean 之后再重新編譯一下,但重新編譯花費時間很長
二、自行配置 alsa-lib 和 alsa-utils移植(麻煩但不得不用)
1. 將壓縮包拷貝到ubuntu下
2.alsa-lib移植
注意 alsa-lib 編譯過程中會生成一些配置文件,而這些配置信息的路徑都是絕對路徑,因此為了保證 ubuntu 和開發(fā)板根文件系統(tǒng)中的路徑一致!我們需要在 ubuntu 和開發(fā)板中各創(chuàng)建一個路徑和名字完全一樣的目錄,這里我們都創(chuàng)建一個/usr/share/arm-alsa 目錄,ubuntu 中創(chuàng)建命令如下
cd /usr/share //進入 ubuntu 的/usr/share 目錄 sudo mkdir arm-alsa //創(chuàng)建 arm-alsa 目錄最后在開發(fā)板根文件系統(tǒng)中也創(chuàng)建一個/usr/share/arm-alsa 目錄,命令如下:
mkdir /usr/share/arm-alsa -p //開發(fā)板根文件系統(tǒng)創(chuàng)建 arm-alsa 目錄這樣 ubuntu 和開發(fā)板根文件系統(tǒng)都有一個“/usr/share/arm-alsa”目錄,我們交叉編譯的時候就不怕存在引用絕對路徑了,因為 ubuntu 和開發(fā)板中的配置文件路徑都是一模一樣的。
由于 alsa-utils 要用到 alsa-lib 庫,因此要先編譯 alsa-lib 庫。alsa-lib 就是 ALSA 相關(guān)庫文件,應(yīng)用程序通過調(diào)用 ALSA 庫來對 ALSA 框架下的聲卡進行操作。先創(chuàng)建一個名為“alsa-lib”的目錄用來保存 alsa-lib 的編譯結(jié)果
然后將 alsa-lib-1.2.2.tar.bz2 拷貝到 ubuntu 中并解壓,命令如下:
tar -vxjf alsa-lib-1.2.2.tar.bz2解壓完成以后就會得到一個名為“alsa-lib-1.2.2”的文件夾,這個就是 alsa-lib 的源碼。進入alsa-lib-1.2.2 目錄,然后配置并編譯,命令如下:
cd alsa-lib-1.2.2/ //進入 alsa-lib 源碼目錄 ./configure --host=arm-linux-gnueabihf --prefix=/home/luatao/linux/tool/alsa-lib --with-configdir=/usr/share/arm-alsa
配置完成以后就可以編譯了,命令如下:
可能會出現(xiàn)如圖所示的錯誤提示:
圖中提示 libatopology.la 編譯失敗,這是因為 sudo 會切換到 root 用戶下,但是此時 root用戶下的環(huán)境變量中沒有交叉編譯器路徑,因此會提示找不到“arm-linux-gnueabihf-gcc”,從而導(dǎo)致 libatopology.la 編譯失敗。
解決方法就是先切換到 root 用戶,重新執(zhí)行一下/etc/profile
文件,然后直接 make install 即可,命令如下:
編譯完成以后前面創(chuàng)建的“alsa-lib”目錄就會保存相應(yīng)的編譯結(jié)果,如圖所示:
ubuntu 中/usr/share/arm-alsa 目錄下的內(nèi)容如圖所示:
將圖中 lib 目錄下的所有文件拷貝到開發(fā)板根文件系統(tǒng)的/usr/lib 目錄下,
將圖中/usr/share/arm-alsa 目錄下的所有文件拷貝到開發(fā)板的/usr/share/arm-alsa 目錄下,命令如下:
cd /usr/share/arm-alsa //進入 arm-alsa 目錄,拷貝配置文件 sudo cp * /home/luatao/linux/nfs/rootfs/usr/share/arm-alsa/ -raf3. alsa-utils移植
alsa-utils 是 ALSA 的一些小工具集合,我們可以通過這些小工具還測試我們的聲卡。將 alsa-utils-1.2.2.tar.bz2 復(fù)制到 ubuntu 中并解壓,命令如下:
tar -vxjf alsa-utils-1.2.2.tar.bz2 //解壓解壓成功以后會得到一個名為“alsa-utils-1.2.2”的文件夾,此文件夾就是 alsa-utils 源碼。重新創(chuàng)建一個名為“alsa-utils”的目錄用于存放 alsa-utils-1.2.2 的編譯結(jié)果。按照如下命令編譯alsa-utils:
cd alsa-utils-1.2.2/ //進入 ./configure --host=arm-linux-gnueabihf --prefix=/home/luatao/linux/tool/alsa-utils --with-alsa-inc-prefix=/home/luatao/linux/tool/alsa-lib/include/ --with-alsa-prefix=/home/luatao/linux/tool/alsa-lib/lib/ --disable-alsamixer --disable-xmlto出現(xiàn)下面的情況,是錯誤的,后面無法操作
需要執(zhí)行
然后成功了
make //編譯 sudo make install
譯完成以后就會在前面創(chuàng)建的“alsa-utils”目錄下生成 bin、sbin 和 share 三個文件夾,如圖所示:
將圖中 bin、sbin 和 share 這三個目錄中的所有文件分別拷貝到開發(fā)板根目錄下的/bin、/sbin 和/usr/share/alsa 目錄下,命令如下:
打開開發(fā)板根文件系統(tǒng)中的/etc/profile 文件,在里面加入如下所示內(nèi)容:
export ALSA_CONFIG_PATH=/usr/share/arm-alsa/alsa.confLSA_CONFIG_PATH 用于指定 alsa 的配置文件,這個配置文件是 alsa-lib 編譯出來的。
三、聲卡設(shè)置與測試
1. amixer使用方法
1. 查看幫助信息
聲卡相關(guān)選型默認都是關(guān)閉的,比如耳機和喇叭的左右聲道輸出等。因此我們在使用之前一定要先設(shè)置好聲卡,alsa-utils 自帶了 amixer 這個聲卡設(shè)置工具。輸入如下命令即可查看 amixer的幫助信息:
amixer --help //查看 amixer 幫助信息從圖可以看出,amixer 軟件命令分為兩組,scontrols、scontents、sset 和 sget 為一組。controls、contents、cset 和 cget 為另一組。這兩組的基本功能都是一樣的,只不過“s”開頭的是 simple(簡單)組,這一組命令是簡化版,本教程最終使用“s”開頭的命令設(shè)置聲卡,因為少輸入很多字符。
2.更多操作請看
amixer
2.其他配置
1. 查看CODEC設(shè)備
ls /dev/sndcontrolC0表示控制器
pcmC0D0c 表示capture
pcmC0D0p 表示play
timer 表示定時器
出現(xiàn)了該設(shè)備說明codec驅(qū)動被正確加載。
2. 查看設(shè)備
arecord -l3. 調(diào)節(jié)音量
alsamixer是圖形化的amixer工具,如下圖所示
從左到右是:耳機音量,耳機輸出源,Mic增益,mic1 boost, DAC增益。
可以很方便地調(diào)整音頻輸出設(shè)置
00表示當(dāng)前音量正常,MM表示此聲道是靜音.可以通過鍵盤上的M鍵來切換靜音和正常狀態(tài).
4. 查看控制器 amixer contents
[root@buildroot]:/$:amixer contents numid=13,iface=MIXER,name='Headphone Source Playback Route'; type=ENUMERATED,access=rw------,values=2,items=2; Item #0 'DAC'; Item #1 'Mixer': values=0,0 numid=3,iface=MIXER,name='Headphone Playback Switch'; type=BOOLEAN,access=rw------,values=2: values=on,on numid=2,iface=MIXER,name='Headphone Playback Volume'; type=INTEGER,access=rw---R--,values=1,min=0,max=63,step=0: values=63| dBscale-min=-63.00dB,step=1.00dB,mute=1 numid=5,iface=MIXER,name='Mic1 Boost Volume'; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0: values=4| dBrange-rangemin=0,,rangemax=0| dBscale-min=0.00dB,step=0.00dB,mute=0rangemin=1,,rangemax=7| dBscale-min=24.00dB,step=3.00dB,mute=0numid=12,iface=MIXER,name='Mic1 Capture Switch'; type=BOOLEAN,access=rw------,values=2: values=off,off numid=9,iface=MIXER,name='Mic1 Playback Switch'; type=BOOLEAN,access=rw------,values=2: values=off,off numid=4,iface=MIXER,name='Mic1 Playback Volume'; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0: values=3| dBscale-min=-4.50dB,step=1.50dB,mute=0 numid=6,iface=MIXER,name='ADC Gain Capture Volume'; type=INTEGER,access=rw---R--,values=1,min=0,max=7,step=0: values=3| dBscale-min=-4.50dB,step=1.50dB,mute=0 numid=7,iface=MIXER,name='DAC Playback Switch'; type=BOOLEAN,access=rw------,values=2: values=off,off numid=1,iface=MIXER,name='DAC Playback Volume'; type=INTEGER,access=rw---R--,values=1,min=0,max=63,step=0: values=63| dBscale-min=-73.08dB,step=1.16dB,mute=0 numid=8,iface=MIXER,name='DAC Reversed Playback Switch'; type=BOOLEAN,access=rw------,values=2: values=off,off numid=10,iface=MIXER,name='Mixer Capture Switch'; type=BOOLEAN,access=rw------,values=2: values=on,on numid=11,iface=MIXER,name='Mixer Reversed Capture Switch'; type=BOOLEAN,access=rw------,values=2: values=off,off [root@buildroot]:/$:3. 播放音樂
板子上沒有功放,但是留出了接口,我們需要外接一個功放。
我這里使用的是8002B功放芯片,用的是之前打的JQ8900的板子,然后我只焊接了功放部分,測試能用。
開機后默認狀態(tài)是靜音狀態(tài),需要取消掉靜音狀態(tài)
執(zhí)行下面取消靜音
amixer -c 0 sset 'Headphone',0 100% unmute
找一個音樂
我們可以播放liudehua.wav
然后就可以聽到美妙的音樂了。
4. 錄音
1.基本配置
耳機輸入內(nèi)置了放大器。
耳機,linein,同時只能使用1種。
使用輸入端口前需要設(shè)置mixer控制器,ADC input Mux
ADC Input Mux 和對應(yīng)的輸入端口
0 linein
1 fmin
2 mic1
3 mic2
4 mic1,mic2
5 mic1+mic2
6 output mixer
7 linein,mic1
使用amixer來設(shè)置通道
具體參數(shù)如下:
card, device的確定方法
card, device必須對應(yīng)hdmi的聲卡號和設(shè)備號,可以使用aplay -l查看對應(yīng)的hdmi設(shè)備,可能會有出現(xiàn)多個hdmi設(shè)備,確定當(dāng)前可以使用的hdmi設(shè)備的方法如下:
2. 錄音測試
使用下面命令使能耳機并錄音
amixer -c 0 cset numid=12 2 使能mic1錄音3s
arecord -D hw:0,0 -d 3 -f S16_LE -r 16000 tmp.wav 錄音測試
或執(zhí)行下面的錄音10s
-f 是設(shè)置錄音質(zhì)量,“-f cd”表示錄音質(zhì)量為 cd 級別。-d 是指定錄音時間,單位是 s,這條指令就是錄制一段 cd 級別 10s 的 wav 音頻,音頻名字為 record.wav。錄制的時候大家就可以對著開發(fā)板上的 MIC 說話,直到錄制完成。
可以自行播放測試
總結(jié)
- 上一篇: Mac 窗口管理分屏工具软件【Wins】
- 下一篇: RFID资产管理安全追溯解决方案,替代传