通過A64 的I2S總線與回音消除模塊連接,在A64中需要使能並配置daudio功能。
Daudio 為A64 的數字音頻接口,可配置成i2s/pcm格式標准音頻接口。
內核配置在lichee/linux-3.10/ 下執行make ARCH=arm64 menuconfig 選中
“AsoC support for daudio platform” 和 “AsoC support daudio0 machine”.
在sys_config.fex 配置daudio的特性;
關於daudio的源碼在linux-3.10/sound/soc/sunxi/
sunxi_tdm_utils.c |
tdm 處理的公共函數 |
sunxi_daudio.c |
在asoc框架中設計的cpu_dai模型,i2s及pcm的引腳配置也在該文件中 |
sunxi_snddaudio0.c |
處理daudio0部分,在asoc框架中設計為machine模型 |
測試工具 alsa-utils 或tinyalsa , arm-linux-gcc 為aarch64-linux-gnu-gcc 的軟鏈接
編譯alsa-lib-1.1.6
./configure --host=arm-linux CC=arm-linux-gcc --disable-Python --prefix=/tmp make make install |
編譯alsa-utils-1.1.6
./configure --host=arm-linux CC=arm-linux-gcc --disable-alsamixer --disable-xmlto CPPFLAGS=-I/tmp/include LDFLAGS=-L/tmp/lib --with-alsa-prefix=/tmp/lib --with-alsa-inc-prefix=/tmp/include make |
tinyalsa 修改Makefile gcc路徑編譯即可。
拷貝alsa-lib 及alsa-utils 相關lib和share到設備上,運行aplay
#ln aplay arecord # ./aplay -l **** List of PLAYBACK Hardware Devices **** card 0: snddaudio0 [snddaudio0], device 0: SUNXI-TDM0 snd-soc-dummy-dai-0 [] Subdevices: 1/1 Subdevice #0: subdevice #0 card 1: sndhdmi [sndhdmi], device 0: SUNXI-HDMIAUDIO sndhdmi-0 [] Subdevices: 1/1 Subdevice #0: subdevice #0 #./arecord -Dhw:0,0 -d 20 -f cd -r 16000 -c 1 -t wav test.wav # ./aplay -Dhw:0,0 test.wav |
關於寄存器的具體配置可參考Allwinner_A64_User_Manual_V1.1.pdf 的”7.6. I2S/PCM” 。