> 技术文档 > openvela之音频驱动测试工具指南

openvela之音频驱动测试工具指南

音频驱动配置完成后,需要通过专业工具验证其功能完整性和稳定性。openvela 提供了一套完整的测试工具链,涵盖播放、录音、回环测试及单元测试。本文将详细介绍这些工具的使用方法,帮助开发者快速排查问题,确保音频驱动的可靠运行。

一、播放测试工具:nxplayer

nxplayer 是一款命令行工具,专注于测试音频驱动的播放功能,支持 PCM 原始文件和 MP3 等压缩格式文件。其代码位于 apps/system/nxplayer 目录。

1. 常用命令速查表

运行 nxplayer 后,输入 help 可查看所有命令,以下是核心命令:

命令 功能描述 示例 balance d% 调节左右声道平衡(<50% 左声道更响) balance 30(左声道占优) bass d% / treble d% 调节低音 / 高音比例 bass 20(增强 20% 低音) device devfile 指定播放设备 device pcm0p play filename 播放媒体文件(如 MP3) play /data/music.mp3 playraw filename 播放 PCM 原始文件(需指定参数) playraw /data/audio.pcm 1 16 44100(1 声道、16 位、44.1kHz) pause / resume / stop 控制播放状态 - volume d% 调节音量 volume 80(音量 80%) quit / q 退出工具 -

2. 典型测试流程

  1. PCM 文件播放

PCM 是最基础的音频格式,播放时需指定声道数、采样深度(位宽)和采样率:

# 启动工具nxplayer# 指定播放设备nxplayer> device pcm0p# 播放 PCM 文件(1声道、16位、44.1kHz)nxplayer> playraw /data/test.pcm 1 16 44100# 播放结束后停止并退出nxplayer> stopnxplayer> closenxplayer> quit
  1. MP3 文件播放(需依赖库)

播放 MP3 需先安装依赖库(以 sim 平台为例):

# 安装 MP3 解码依赖sudo apt install libmad0-dev:i386# 启动工具并播放nxplayernxplayer> device pcm1pnxplayer> play /data/music.mp3# 结束操作同上

二、录音测试工具:nxrecorder

nxrecordernxplayer 对应,用于测试音频驱动的录音功能,支持录制 PCM 原始文件和压缩格式文件,代码位于 apps/system/nxrecorder 目录。

1. 常用命令速查表

运行 nxrecorder 后输入 help 可查看命令,核心命令如下:

命令 功能描述 示例 device devfile 指定录音设备 device pcm0c recordraw filename 录制 PCM 原始文件(需参数) recordraw /data/rec.pcm 1 16 44100(1 声道、16 位、44.1kHz) record filename 录制压缩格式文件(如 MP3) record /data/rec.mp3 2 16 44100(2 声道、16 位、44.1kHz) pause / resume / stop 控制录制状态 - quit / q 退出工具 -

2. 典型测试流程

  1. PCM 录音

录制 PCM 文件需指定声道数、采样深度和采样率,与播放参数对应:

# 启动工具nxrecorder# 指定录音设备nxrecorder> device pcm0c# 录制 PCM 文件(2声道、16位、48kHz)nxrecorder> recordraw /data/rec_2ch.pcm 2 16 48000# 录制完成后停止并退出nxrecorder> stopnxrecorder> closenxrecorder> quit
  1. MP3 录音(需依赖库)

录制 MP3 需安装编码依赖(以 sim 平台为例):

# 安装 MP3 编码依赖sudo apt-get install libmp3lame-dev:i386# 启动工具并录制nxrecordernxrecorder> device pcm1c# 录制 MP3 文件(2声道、16位、44.1kHz)nxrecorder> record /stream/100.mp3 2 16 44100# 结束操作同上

三、回环测试工具:nxlooper

nxlooper 用于测试音频设备的回环功能(输入实时输出),验证驱动的双向数据处理能力,代码位于 apps/system/nxlooper 目录。

1. 常用命令说明

命令 功能描述 示例 device devfile 指定播放 / 录音设备 device pcm0p(播放)+ device pcm0c(录音) loopback channels bpsamp samprate format chmap 启动回环测试(参数:声道数、采样位宽、采样率、格式等) loopback 2 16 48000(PCM 双声道) pause / resume / stop 控制回环状态 - volume d% 调节回环音量 volume 70 quit / q 退出工具 -

2. 格式参数说明

loopback 命令中的 format 参数对应音频格式,定义在 nuttx/include/nuttx/audio/audio.h 文件中,部分常用值如下:

格式 参数值 PCM 0x06 MP3 0x08 WAV 0x07 OGG Vorbis 0x0a

3. 实操示例

(1)PCM 格式回环测试

# 启动工具nxlooper# 指定播放和录音设备nxlooper> device pcm0pnxlooper> device pcm0c# 启动回环(2声道、16位、48kHz,默认PCM格式)nxlooper> loopback 2 16 48000# 测试结束后停止并退出nxlooper> stopnxlooper> closenxlooper> quit 

(2)MP3 格式回环测试

nxloopernxlooper> device pcm1pnxlooper> device pcm1c# 启动回环(2声道、16位、44.1kHz,格式参数8对应MP3)nxlooper> loopback 2 16 44100 8# 结束操作同上

四、单元测试框架:CMocka

CMocka 是轻量级 C 语言单元测试框架,用于对音频驱动进行模块化单元测试,确保核心接口的正确性。

  1. 框架特点
  • 简单易用:API 直观,适合快速编写测试用例。
  • 轻量级:代码量小,易于集成到项目中。
  • 跨平台:支持 Linux、Windows、macOS 等系统。
  1. 测试配置与使用

(1)代码位置与配置

  • 测试代码位于:apps/testing/drivertest
  • 需在 menuconfig 中启用以下配置:
CONFIG_TESTING_CMOCKA=yCONFIG_AUDIO=yCONFIG_TESTING_DRIVER_TEST=y

(2)测试程序:cmocka_driver_audio
该程序用于音频驱动的单元测试,使用说明如下:

# 基本用法cmocka_driver_audio [参数]# 必选参数-a 2 # 仅测试播放-a 1 # 仅测试录音-a 3 # 先录音后播放(完整流程)-p filename # 指定测试文件路径,如 -p /data/test.pcm# 可选参数-i devfile # 自定义录音/播放设备,如 -i /dev/audio/pcm1c-f format # 指定音频格式,如 -f mp3(默认PCM)

(3)示例

# 测试先录音后播放(PCM格式,使用默认设备)cmocka_driver_audio -a 3 -p /data/test.pcm# 测试MP3播放(自定义设备)cmocka_driver_audio -a 2 -p /data/music.mp3 -f mp3 -i /dev/audio/pcm1p

总结

openvela 提供的测试工具覆盖了音频驱动的全功能验证:nxplayer 验证播放能力,nxrecorder 验证录音功能,nxlooper 测试实时回环性能,CMocka 则从单元测试层面确保代码可靠性。

使用时需注意:工具的参数需与音频驱动的配置保持一致(如支持的格式、设备路径等),若测试失败,可优先检查驱动配置是否匹配。通过这些工具的组合使用,可全面验证音频驱动的功能,为后续应用开发提供坚实保障。