硬核干货!瑞芯微平台音频自动化测试套件全解析 电子说
在嵌入式音频开发中,瑞芯微(Rockchip)平台的音频编解码器(ACodec)测试一直是个“繁琐活”——手动验证播放/采集、调节增益、校验链路稳定性,不仅效率低,还容易遗漏边界场景。今天给大家分享一套基于Shell脚本实现的瑞芯微音频功能自动化测试套件,覆盖音频全链路测试场景,彻底解放双手!

一、套件核心定位:解决音频测试的三大痛点
这套脚本专为瑞芯微平台音频硬件调试、功能验证设计,核心解决传统手动测试的三大问题:
• 手动调节音量/增益,参数覆盖不全;
• 长期稳定性测试(如5小时回环)耗时耗力;
• 测试结果无标准化校验,异常定位难;
套件全部基于Shell脚本开发,轻量化、无额外依赖(仅需嵌入式Linux标配工具),支持交互式选择测试场景,开箱即用。
二、核心架构:一站式交互式测试入口
套件的核心入口是audio_functions_test.sh,运行后会弹出交互式选择界面,覆盖三大核心测试场景,新手也能快速上手:
****************************************************** Rockchip Platform Audio Functions Test ******************************************************* Loop playback: [0] * # 循环播放(多采样率/格式)* Loop capture: [1] * # 循环采集(全参数覆盖)* Test loopback: [2] * # 播放→采集回环(长期稳定性)* Exit audio test: [q] ******************************************************
只需输入数字/字母,即可一键启动对应测试,无需手动敲复杂命令!
三、核心功能模块拆解
1. 循环播放测试:全参数覆盖兼容性
Loop playback(0号选项)会自动遍历全采样率+多比特位+双声道组合,验证音频播放的兼容性:
•采样率:8k/11.025k/16k…192k(覆盖12种常用规格);
•比特位:16/24/32位;
•声道:单/双声道(脚本默认遍历验证);
•核心逻辑:通过sox生成440Hz标准正弦波,自动切换参数循环播放,无需提前准备音频文件。
2. 循环采集测试:验证采集链路完整性
Loop capture(1号选项)是播放测试的“反向验证”,先初始化麦克风采集参数(PGA多路选择、数字增益、静音关闭等),再遍历多采样率/格式采集音频,生成标准化WAV文件:
# 采集文件命名规范(自动生成)cap_fs16000_format_S16_LE_ch2.wav
测试完成后,可通过adb pull /tmp/audio_test/cap_files/导出采集文件,本地验证音质与参数正确性。
3. 回环测试:长期稳定性的“压测神器”
Test loopback(2号选项)是套件的核心功能,验证“播放→采集”全链路的长期稳定性(默认5小时):
•前置配置:初始化麦克风采集参数,确保链路畅通;
•动态增益:ADC MIC增益按3dB步长循环切换,覆盖不同增益场景;
•自动化流程:sox生成1000Hz正弦波持续播放,arecord采集并生成带增益标识的WAV文件(如loopback_fs16000_format_S16_LE_ch2_mic3db_0001.wav);
•持久化存储:测试文件默认存/tmp/cap_files,避免占用设备持久化存储。
4. 精细化音量/增益控制:适配不同硬件链路
套件内置多套音量/增益调节脚本(acodec_test/目录),覆盖音频编解码器全参数:
|
脚本名
|
功能
|
可调范围
|
|
set_hpout_volume.sh
|
耳机输出音量调节
|
0~33
|
|
set_adc_mic_volume.sh
|
麦克风增益调节
|
数字0192/PGA 08
|
|
set_adc_alc_volume.sh
|
ALC采集音量调节
|
0~15
|
以调节耳机音量为例,只需一行命令:
# 设置耳机输出音量为20bash set_hpout_volume.sh 20
5. 结果校验+异常测试:精准定位问题
•结果校验:check_wavs.sh批量解析WAV文件的左右声道峰值电平,对比阈值(默认-15dB),生成stat.log(单文件统计)、result.log(最终结果),异常文件一目了然;
•异常场景测试:test_err_agc_gain.sh直接操作音频编解码器寄存器,验证AGC增益异常场景的边界条件,适配硬件调试的“极端场景”。
6. 进程管理:避免测试残留
套件还内置stop_aplay.sh/stop_arecord.sh脚本,通过PID查找并强制终止播放/采集进程,解决测试中进程残留导致的“设备占用”问题。
四、快速上手:3步启动测试
步骤1:推送脚本到设备
adb shellcd /tmp/audiobash audio_functions_test.sh
步骤2:运行主测试脚本
adb shellcd /tmp/audiobash audio_functions_test.sh
步骤3:选择测试场景
输入数字(0/1/2)或q退出,脚本自动执行对应测试,全程无需人工干预。
五、扩展与定制:适配你的硬件场景
套件采用模块化脚本设计,可轻松适配不同瑞芯微硬件平台:
1.调整采样率/比特位:修改loop_playback()/loop_capture()中的fs_tbl/bits_tbl;
2.新增测试场景:在audio_functions_test.sh的case分支中添加自定义脚本调用;
3.调整回环测试时长:修改test_loopback.sh中的test_hours参数(默认5小时);
4.适配不同音频设备:调用脚本时传入自定义设备名(如bash audio_functions_test.sh hw:0,0 hw:0,1)。
六、总结
这套瑞芯微音频自动化测试套件,以Shell脚本为核心,覆盖“播放→采集→回环→校验”全流程,既解决了手动测试的效率问题,又保证了测试覆盖度与可追溯性。无论是音频硬件调试、功能验证,还是长期稳定性压测,都是嵌入式音频开发的“利器”!
如果你的项目也基于瑞芯微平台做音频开发,不妨试试这套脚本,欢迎在评论区交流适配经验~
审核编辑 黄宇
全部0条评论
快来发表一下你的评论吧 !