Qualcomm Robotics RB5 平台软件用户指南(4)

150 篇文章 17 订阅
25 篇文章 2 订阅
本文详细介绍了QualcommRoboticsRB5平台的音频配置过程,包括声卡和编解码器的验证、音频路径设置、WSA立体声扬声器和数字MIC的使用,以及如何在ALSA接口中配置设备节点和混音器设置,以及如何将音频HAL用例转换为ALSA控制。
摘要由CSDN通过智能技术生成


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 链接后,执行以下操作以枚举声卡:

  1. 验证声卡注册:

    adb root
    adb shell
    cat /proc/asound/cards
    
  2. 找到声卡名称:kona-iot-snd-card。

3.5.2 验证编解码器注册

  1. 使用以下命令验证编解码器注册:

    adb root
    adb shell
    cd /proc/asound/card0/codecs
    
  2. 找到以下编解码器。

    bolero  
    wsa881x.21170213  
    wsa881x.21170214
    

3.5.3 验证音频路径

确保 SoundWire 接口满足以下条件:

  • SoundWire 时钟以正确的频率运行
  • 数据线包含数据
  • 主时钟 (MCLK) 以配置的频率运行
3.5.3.1 通过 WSA 立体声扬声器播放

开始音频播放

  1. 启用 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
    
  2. 启用 DSP 音频前端 (AFE),以便通过 SoundWire 接口进行播放。

    tinymix set 'WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia1' 1
    
  3. 播放脉冲编码调制 (PCM) 音频。

    tinyplay  <filename.wav > 
    

停止音频播放

  1. 禁用 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
    
  2. 禁用 DSP AFE 以通过 SoundWire 接口播放音频。

    tinymix set 'WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia1' 0
    
3.5.3.2 通过主 MIC(数字 MIC)录音
  1. 运行以下命令:

    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'
    
  2. 开始录音。

    tinycap /data/rec.wav
    
  3. 禁用序列。

    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 用例的示例设置如下:

  1. 在audio_hw.c文件中找到use_case_table ,获取混音器路径名low-latency-playback
  2. 在Mixer_paths_iot.xml中找到低延迟播放,
  3. 音频 PCM 数据从 MultiMedia5 发送到 WSA 宏 DMA。混频器控制序列为amixer cset “WSA_CDC_DMA_RX_0 Audio Mixer MultiMedia5” 1。

有关音频设备的完整列表,请检查音频 HAL 中的platform.h文件。以SND_DEVICE_OUT_SPEAKER为音频播放设备的示例设置如下:

  1. 检查platform.c中的 device_table 。

  2. 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 立体声扬声器播放。
  3. 输入上述命令序列以选择音频路径。

要决定选择哪个设备节点来/dev/snd代表 MultiMedia5,请执行以下操作:

  1. 检查pcm_ids.xml标签下的audio_platform_info_iot.xml文件中的USECASE_AUDIO_PLAYBACK_LOW_LATENCY 。
  2. 选择代表 MultiMedia5 的/dev/snd/pcmC0D9p设备节点。
  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值