提示:作为Espressif(乐鑫科技)大中华区合作伙伴及sigmastar(厦门星宸)VAD合作伙伴,我们不仅用心整理了你在开发过程中可能会遇到的问题以及快速上手的简明教程供开发小伙伴参考。同时也用心整理了乐鑫及星宸科技的新产品、新方案的主要特点及应用!希望你能第一时间了解并快速用上好的方案和产品!
SSD201 / SSD202D核心板在应用时适配ALSA需要更新使用我们提供的3个ko模块,分别是mi_ai.ko、mi_ao.ko和mi_alsa.ko。
mi_ai.ko和mi_ao.ko覆盖sdk 的project/release/nvr/i2m/common/glibc/8.2.1/modules/4.9.84/目录对应的文件。
tinyalsa 是 ALSA 的简化版,请根据需求选择其中之一。
ALSA
rootfs.mk的配置
- echo pcm.* 0:0 0660 =snd/ >> ${OUTPUTDIR}/rootfs/etc/mdev.conf
- echo control.* 0:0 0660 =snd/ >> ${OUTPUTDIR}/rootfs/etc/mdev.conf
- echo timer 0:0 0660 =snd/ >> ${OUTPUTDIR}/rootfs/etc/mdev.conf
- echo ‘$$DEVNAME=bus/usb/([0-9]+)/([0-9]+) 0:0 0660 =bus/usb/%1/%2’>> ${OUTPUTDIR}/rootfs/etc/mdev.conf
Kernel config配置
# cd kernel
# ARCH=arm make menuconfig
Power management options --->
[*] Device power management core functionality
Device Drivers --->
<M> Sound card support --->
<M> Advanced Linux Sound Architecture --->
<M> OSS PCM (digital audio) API
重新编译固件:
./Release_to_customer.sh -f nand -p ssd201 -o 2D07
将生成:
kernel/sound/soundcore.ko
kernel/sound/core/snd.ko
kernel/sound/core/snd-timer.ko
kernel/sound/core/snd-pcm.ko
注:如果你用的是开发板更新固件,系统起来后,记得将以上4个ko文件拷贝到开发板上
验证
通过buildroot移植ALSA:
# cd buildroot-2020.05/
# ARCH=arm make menuconfig
Target packages --->
Libraries --->
Audio/Sound --->
[*] alsa-lib --->
Audio and video applications --->
[*] alsa-utils --->
[*] aplay/arecord
# make BR2_JLEVEL=4
将output/images/rootfs.tar替换../project/image/rootfs/rootfs.tar.gz
# mkdir ../project/image/rootfs/rootfs
# tar -xvf output/images/rootfs.tar -C ../project/image/rootfs/rootfs
# tar -cvf ../project/image/rootfs/rootfs.tar.gz ../project/image/rootfs/rootfs
重新编译并更新固件:
# cd ..
# ./Release_to_customer.sh -f nand -p ssd201 -o 2D07
把mi_ai.ko拷贝并覆盖开发板/config/modules/4.9.84/mi_ai.ko,把mi_alsa.ko拷贝到开发板根目录下:
然后重启开发板,并加载我们刚才拷贝的ko:
insmod soundcore.ko
insmod snd.ko
insmod snd-timer.ko
insmod snd-pcm.ko
insmod mi_alsa.ko
运行alsamixer调节音量:
# alsamixer
运行aplay播放wav音频:
# aplay /media/48k16bpsMono.wav
Tiny ALSA
kernel和rootfs.mk保持和alsa同样的配置。
验证
通过buildroot移植TinyALSA:
# cd buildroot-2020.05/
# ARCH=arm make menuconfig
Target packages --->
Libraries --->
Audio/Sound --->
[*] tinyalsa
# make BR2_JLEVEL=4
将output/images/rootfs.tar替换../project/image/rootfs/rootfs.tar.gz
# mkdir ../project/image/rootfs/rootfs
# tar -xvf output/images/rootfs.tar -C ../project/image/rootfs/rootfs
# tar -cvf ../project/image/rootfs/rootfs.tar.gz ../project/image/rootfs/rootfs
重新编译并更新固件:
# cd ..
# ./Release_to_customer.sh -f nand -p ssd201 -o 2D07
系统起来后,同样地,先加载模块驱动:
insmod soundcore.ko
insmod snd.ko
insmod snd-timer.ko
insmod snd-pcm.ko
insmod mi_alsa.ko
tinymix set 11 0
运行tinyplay播放音频:
# tinyplay /media/48k16bpsMono.wav
wifi驱动更新
由于kernel开启了Device power management core functionality功能,因此以前的wifi驱动不能正常使用(这个wifi驱动在编译时,kernel的Device power management core functionality是关闭的),需要同时更新wifi驱动ssw101b_wifi_HT40_usb.ko,对应SDK目录下project/release/nvr/i2m/common/glibc/8.2.1/wifi/modules/ssw101b_wifi_HT40_usb.ko。