通过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” 。
转载于:https://www.cnblogs.com/okshall/p/9951469.html
相关资源:垃圾分类数据集及代码