Qualcomm Robotics RB5 平台软件用户指南(4)
3.5 配置音频设置
下表列出了配置音频设置所需的音频内核和其他模块的源位置。
模块 | 源位置 |
---|---|
音频内核 | /src/vendor/qcom/opensource/audio-kernel |
混音器配置 | /src/hardware/qcom/audio/configs/kona/mixer_path.xml |
音频哈尔 | /src/hardware/qcom/audio |
3.5.1 验证声卡注册
映射 DAI 链接后,执行以下操作以枚举声卡:
-
验证声卡注册:
adb root adb shell cat /proc/asound/cards
-
找到声卡名称:kona-iot-snd-card。
3.5.2 验证编解码器注册
-
使用以下命令验证编解码器注册:
adb root adb shell cd /proc/asound/card0/codecs
-
找到以下编解码器。
bolero wsa881x.21170213 wsa881x.21170214
3.5.3 验证音频路径
确保 SoundWire 接口满足以下条件:
- SoundWire 时钟以正确的频率运行
- 数据线包含数据
- 主时钟 (MCLK) 以配置的频率运行
3.5.3.1 通过 WSA 立体声扬声器播放
开始音频播放
-
启用 Rx 路径(WSA 立体声扬声器设备)。
tinymix set 'WSA_CDC_DMA_RX_0 Channels' 'Two' tinymix set 'WSA RX0 MUX' 'AIF1_PB' tinymix set 'WSA RX1 MUX' 'AIF1_PB' tinymix set 'WSA_RX0 INP0' 'RX0' tinymix set 'WSA_RX1 INP0' 'RX1' tinymix set 'WSA_COMP1 Switch' 1 tinymix set 'WSA_COMP2 Switch' 1 tinymix set 'SpkrLeft COMP Switch' 1 tinymix set 'SpkrLeft BOOST Switch' 1 tinymix set 'SpkrLeft VISENSE Switch' 1 tinymix set 'SpkrLeft SWR DAC_Port Switch' 1 tinymix set 'SpkrRight COMP Switch' 1 tinymix set 'SpkrRight BOOST Switch' 1 tinymix set 'SpkrRight VISENSE Switch' 1 tinymix set 'SpkrRight SWR DAC_Port Switch' 1
-
启用 DSP 音频前端 (AFE),以便通过 SoundWire 接口进行播放。
tinymix set 'WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia1' 1
-
播放脉冲编码调制 (PCM) 音频。
tinyplay <filename.wav >
停止音频播放
-
禁用 Rx 路径。
tinymix set 'WSA RX0 MUX' 'ZERO' tinymix set 'WSA RX1 MUX' 'ZERO' tinymix set 'WSA_RX0 INP0' 'ZERO' tinymix set 'WSA_RX1 INP0' 'ZERO' tinymix set 'WSA_COMP1 Switch' 0 tinymix set 'WSA_COMP2 Switch' 0 tinymix set 'SpkrLeft COMP Switch' 0 tinymix set 'SpkrLeft BOOST Switch' 0 tinymix set 'SpkrLeft VISENSE Switch' 0 tinymix set 'SpkrLeft SWR DAC_Port Switch' 0 tinymix set 'SpkrRight COMP Switch' 0 tinymix set 'SpkrRight BOOST Switch' 0 tinymix set 'SpkrRight VISENSE Switch' 0 tinymix set 'SpkrRight SWR DAC_Port Switch' 0
-
禁用 DSP AFE 以通过 SoundWire 接口播放音频。
tinymix set 'WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia1' 0
3.5.3.2 通过主 MIC(数字 MIC)录音
-
运行以下命令:
adb root adb remount adb shell mount -o rw,remount / adb shell tinymix set 'MultiMedia1 Mixer TX_CDC_DMA_TX_3' 1 tinymix set 'TX_CDC_DMA_TX_3 Channels' 'One' tinymix set 'TX_AIF1_CAP Mixer DEC0' 1 tinymix set 'TX DMIC MUX0' 'DMIC2'
-
开始录音。
tinycap /data/rec.wav
-
禁用序列。
tinymix set 'MultiMedia1 Mixer TX_CDC_DMA_TX_3' 0 tinymix set 'TX_CDC_DMA_TX_3 Channels' 0 tinymix set 'TX_AIF1_CAP Mixer DEC0' 0 tinymix set 'TX DMIC MUX0' 'ZERO'
3.5.4 在ALSA接口中配置设备节点
QRB5165 器件已实现 ALSA 驱动程序,为用户空间提供音频硬件功能。在主板启动期间,init_audio.service系统服务会启动 ALSA 模块。
启动后, /dev/snd目录下有以下设备节点。
设备节点和DAI名称之间的部分映射关系如下表所示。 DAI 名称位于Mixer_paths_iot.xml文件中。
3.5.5 配置音频捕获的混音器设置
配置音频音量和通道数是启用音频采集或播放的前提。这些设置是通过/dev/sndcontrolC0下 设置的。该节点称为 ALSA 混音器控制,设置称为混音器设置。controlC0
根据要求设置QRB5165板上第三个数字MIC(DMIC)中的混音器参数。下表显示了示例设置:
有关如何选择正确设置的详细信息,请参阅 QRB5165 设备上 /etc目录中的Mixer_paths_iot.xml文件。设置混音器设置后,访问正确的音频设备节点以开始流式传输。
3.5.6 将音频 HAL 用例转换为 ALSA 混音器控件
音频硬件抽象层 (HAL) 利用 Qualcomm Android 平台。使用音频HAL使用QRB5165平台的完整音频功能。
有关音频 HAL 用例的完整列表,请检查音频 HAL 中的audio_hw.c文件。通过执行以下操作,将音频 HAL 用例转换为 ALSA 混音器控件:
USECASE_AUDIO_PLAYBACK_LOW_LATENCY 用例的示例设置如下:
- 在audio_hw.c文件中找到use_case_table ,获取混音器路径名low-latency-playback
- 在Mixer_paths_iot.xml中找到低延迟播放,
- 音频 PCM 数据从 MultiMedia5 发送到 WSA 宏 DMA。混频器控制序列为amixer cset “WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia5” 1。
有关音频设备的完整列表,请检查音频 HAL 中的platform.h文件。以SND_DEVICE_OUT_SPEAKER为音频播放设备的示例设置如下:
-
检查platform.c中的 device_table 。
-
speaker在 mixer_paths_iot.xml文件中找到混频器路径名。Mixer_paths_iot.xml文件中存在以下混频器控制序列。
- 对于 Linux Ubuntu:
amixer cset "WSA_CDC_DMA_RX_0 Channels" "Two" amixer cset "WSA RX0 MUX" "AIF1_PB" amixer cset "WSA RX1 MUX" "AIF1_PB" amixer cset "WSA_RX0 INP0" "RX0" amixer cset "WSA_RX1 INP0" "RX1" amixer cset "WSA_COMP1 Switch" "1" amixer cset "WSA_COMP2 Switch" "1" amixer cset "SpkrLeft COMP Switch" "1" amixer cset "SpkrLeft BOOST Switch" "1" amixer cset "SpkrLeft VISENSE Switch" "1" amixer cset "SpkrLeft SWR DAC_Port Switch" "1" amixer cset "SpkrRight COMP Switch" "1" amixer cset "SpkrRight BOOST Switch" "1" amixer cset "SpkrRight VISENSE Switch" "1" amixer cset "SpkrRight SWR DAC_Port Switch" "1"
- 对于 Linux 嵌入式,请参阅通过 WSA 立体声扬声器播放。
-
输入上述命令序列以选择音频路径。
要决定选择哪个设备节点来/dev/snd代表 MultiMedia5,请执行以下操作:
- 检查pcm_ids.xml标签下的audio_platform_info_iot.xml文件中的USECASE_AUDIO_PLAYBACK_LOW_LATENCY 。
- 选择代表 MultiMedia5 的/dev/snd/pcmC0D9p设备节点。