LineOut

LineOut用于播放音频。根据原理图,GPIO14控制了功放开关,当GPIO14输出低电平,功放将关闭,将听不到任何声音;当GPIO14输出高电平,功放打开。

  • DTS的配置

DTS默认已经能配置好LineOut功能,我们不需要修改任何东西。

# cd kernel/arch/arm/boot/dts
# vi infinity2m.dtsi

# vi infinity2m-ssc011a-s01a-display.dtsi

# cd -

由于没有提供源码,只提供ko模块:project/release/nvr/i2m/common/glibc/8.2.1/modules/4.9.84/mi_ao.ko,所以只需要配置DTS即可。

  • 验证

使用音频播放程序sdk/verify/mi_demo/geonosis/audio_all_test_case可以验证LineOut功能:

# cd sdk/verify/mi_demo/geonosis/
# vi Makefile

可以看到,audio_all_test_cas默认是编译的,因此直接make即可:

# make 

编译完成后,将在../out/demo/app/下生产可执行程序:

# ls ../out/demo/app/

我们把prog_audio_all_test_case拷贝到rootfs中,还记得我们在调试WIFI的时候,把要添加到rootfs中的文件都存放到project/image/rootfs_add_files/中,同样地,把prog_audio_all_test_case也放在这个文件夹下:

# mkdir -p ../../../../project/image/rootfs_add_files/usr/bin/
# cp ../out/demo/app/prog_audio_all_test_case ../../../../project/image/rootfs_add_files/usr/bin/

对了,我们还需要一个音频文件,格式为wav的,把它放到rootfs_add_files/midea下:

# mkdir ../../../../project/image/rootfs_add_files/media
# mv ~/ssd20x/pizzicato.wav ../../../../project/image/rootfs_add_files/media/

重新编译并更新系统:

# cd ../../../../
# ./Release_to_customer.sh -f nand -p ssd201

将适配的喇叭接到开发板上:

系统起来后,执行prog_audio_all_test_case(参考sdk/verify/mi_demo/geonosis/audio_all_test_case/README.txt)测试:

# export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/config/lib
# ./prog_audio_all_test_case -t 10 -O -i /media/pizzicato.wav -D 0 -V 3

没有听到声音,对了,根据原理图,应该先把MUTE(GPIO14)拉高:

# echo 14 > /sys/class/gpio/export
# echo out > /sys/class/gpio/gpio14/direction
# echo 1 > /sys/class/gpio/gpio14/value
# prog_audio_all_test_case -t 10 -O -i /media/pizzicato.wav -D 0 -V 3 

此时,可以听到声音了。我把测试demo和测试音频文件保存在IDO_SSD20X/开发板/IDO-SBC2D07/开发文档/test/lineout/下。
至此,LineOut调试完成。

文档更新时间: 2021-08-17 14:45   作者:Aeeditor