在音频传输场景中,传统以太网难以满足 “低时延、同步传输” 需求,而 AVB(Audio Video Bridging,音频视频桥接)技术通过 IEEE 802.1Qav(带宽预留)、IEEE 1588(精确时钟同步)等标准,实现多点音频的实时传输。本文基于 NXP RT1170(Endpoint)与 RT1180 / 第三方 MOTU(AVB Switch),详细讲解从硬件选型、软件配置到数据包分析的完整平台构建流程,适用于工业音频、智能家居、车载娱乐等多点音频传输场景。
1.平台核心架构与价值
AVB 平台的核心需求是 “1 个音频源(Talker)向多个接收端(Listener)同步传输音频”,需通过 AVB Switch 实现数据转发。本文构建的平台包含 3 类核心组件,具体架构如下:
1.1 平台组成与功能定位
| 组件类型 | 硬件型号 | 数量 | 核心功能 | 备注 |
| AVB Endpoint(Talker) | MIMXRT1170-EVK | 1 | 采集麦克风音频,封装为 AVB 数据包发送 | 需配置时钟同步(gPTP)、MAC 地址 |
| AVB Endpoint(Listener) | MIMXRT1170-EVK | 2 | 接收 AVB 数据包,解析后通过音箱播放 | 需绑定 Talker ID,配置音频输出通道 |
| AVB Switch | 选项 1:MIMXRT1180-EVK
选项 2:MOTU AVB Switch |
1 | 转发 AVB 数据包,实现多点通信 | RT1180 需用 CM33 内核的 TSN Bridge 固件 |
| 辅助工具 | NETGEAR GS105E(端口镜像)、Wireshark | 1 | 抓取 AVB 数据包,分析传输结构 | 用于调试与验证 |
1.2 应用场景
- 工业音频监控:工厂多个区域的麦克风(Talker)通过 AVB 传输到中控室多个音箱(Listener);
- 智能家居音频:客厅音箱(Talker)向卧室、厨房的接收端(Listener)同步传输音乐;
- 车载娱乐:车载主机(Talker)向多个座椅的音频模块(Listener)传输语音或音乐。
2.软硬件准备(必选配置)
需严格匹配硬件型号与软件版本,避免兼容性问题,核心资源清单如下:
2.1 硬件清单与接线要求
| 硬件名称 | 关键参数 | 接线说明 |
| MIMXRT1170-EVK | 含 1G ENET 网口、UART(调试)、音频接口 | Talker:ENET 接 Switch,音频接口接麦克风;Listener:ENET 接 Switch,音频接口接音箱 |
| MIMXRT1180-EVK | 含 5 个 1G ENET 网口(ENET0-ENET4) | 仅用 ENET0-ENET3 作为 Switch 端口,ENET4 为独立 Endpoint 端口 |
| MOTU AVB Switch | 4 个 1G AVB 专用网口 | 无需配置,直接接入 Talker/Listener 的 ENET 网口 |
| NETGEAR GS105E | 支持端口镜像功能 | 将 Switch 的 AVB 数据端口(2、3)镜像到端口 1(接 PC 抓包) |
| 辅助配件 | USB-C 线(供电 / 调试)、网线(CAT5e 及以上) | 确保网线长度≤100m,避免信号衰减 |
2.2 软件与固件资源
| 软件 / 固件名称 | 版本要求 | 获取路径 |
| RT1170 AVB/TSN Stack | genavb_tsn-mcuxpresso-SDK_2_13_0-5_6_1 | NXP 官网下载 |
| RT1180 AVB/TSN Stack | genavb_tsn-mcuxpresso-SDK_2_15_0-6_0_0 | NXP 官网下载 |
| 烧录工具 | MCUBootUtility v6.2.0 | GitHub 下载 |
| 抓包工具 | Wireshark v4.0+ | Wireshark 官网 |
| 串口工具 | PuTTY/SSCOM | 用于 RT1170 的 shell 配置 |
3.Step 1:配置 RT1170 AVB Endpoint(Talker/Listener)
RT1170 作为 Endpoint,需先烧录 AVB 固件,再通过串口配置角色(Talker/Listener),核心步骤如下:
3.1 固件烧录(RT1170)
- 进入 Serial Download 模式:调整 RT1170-EVK 的拨码开关(SW5):1-OFF、2-OFF、3-OFF、4-ON,连接 USB-C 线(J33)到 PC。
- 烧录avb_app.bin:从 RT1170 Stack 的以下路径获取固件:genavb_tsn-mcuxpresso-SDK_2_13_0-5_6_1binariesgenavb-avb_audio_app-evaluation-freertos_rt1176-5_6_1.targenavb-avb_audio_app-evaluation-freertos_rt1176-5_6_1releaseavb_app.bin 使用 MCUBootUtility 选择 “MIMXRT1176” 型号,加载固件,点击 “Download”。
- 切换到 Internal Boot 模式:烧录完成后,调整拨码开关:1-OFF、2-ON、3-OFF、4-OFF,重启开发板。
3.2 进入 Shell 配置界面
- 打开串口工具:连接 RT1170 的 UART(J28)到 PC,配置波特率 115200、8N1,重启开发板。
- 进入 Shell:开发板串口会持续打印日志,按下键盘INSERT 键,进入 shell 命令行(提示符为#)。
3.3 Talker 配置(1 块 RT1170)
在 shell 中执行以下命令(配置时钟角色、MAC 地址等):
cd .. # 返回根目录
ls # 确认目录存在
mkdir avb_app # 创建AVB配置目录
write avb_app/mclock_role 0 # 0=Talker(时钟主设备)
mkdir avdecc # 创建AVDECC配置目录
write avdecc/btb_mode 0 # 0=非回环模式
mkdir fgptp # 创建gPTP配置目录
write fgptp/gmCapable 1 # 1=支持作为时钟主设备(GM)
mkdir port0 # 创建网口0配置目录
write port0/hw_addr 00:22:33:44:55:66 # 设置Talker的MAC地址
3.4 Listener 配置(2 块 RT1170)
每块 Listener 执行以下命令(需绑定 Talker 的 MAC 地址):
cd .. # 返回根目录
mkdir avb_app # 创建AVB配置目录
write avb_app/mclock_role 1 # 1=Listener(时钟从设备)
mkdir avdecc # 创建AVDECC配置目录
write avdecc/btb_mode 1 # 1=回环模式(接收Talker数据)
write avdecc/talker_id 0x00049f4455660000 # Talker ID(格式:0x00049f + Talker MAC的倒序,即4455660000)
4.Step 2:配置 AVB Switch(两种方案)
AVB Switch 是平台的核心转发组件,本文提供两种方案:第三方 MOTU(即插即用)和 NXP RT1180(需配置固件),用户可根据需求选择。
4.1 方案 1:MOTU AVB Switch(推荐新手)
MOTU 是 AVB 专用交换机,无需软件配置,仅需接线:
- 接线步骤:
- 将 Talker 的 ENET 网口(RT1170 的 ENET0)用网线接入 MOTU 的任意网口;
- 将 2 个 Listener 的 ENET 网口(RT1170 的 ENET0)分别接入 MOTU 的其他网口;
- 确保 MOTU 通电,网口指示灯亮(绿色为连接正常,闪烁为数据传输)。
- 优势:无需配置固件,适合快速验证 Endpoint 功能,避免 Switch 端的配置错误。
4.2 方案 2:RT1180-EVK 作为 AVB Switch(需固件配置)
RT1180 的 CM33 内核支持 TSN Bridge 功能(即 AVB Switch),需烧录专用固件并配置启动模式:
4.2.1 固件准备与修改
- 获取 RT1180 的 TSN 固件:从 RT1180 Stack 的以下路径获取tsn_app.bin(CM33 内核,支持 Switch 功能):genavb_tsn-mcuxpresso-SDK_2_15_0-6_0_0binariesgenavb-tsn_app-evaluation-freertos_rt1189_cm33-6_0_0releasetsn_app.bin
- 修改 MCUBootUtility 配置:打开NXP-MCUBootUtility-6.2.0srctargetsMIMXRT1189bltargetconfig.py,修改内存地址(关键!避免烧录错误):
# 注释原配置
# flexspiNorMemBase0 = 0x38000000 # CM33 Secure
# flexspiNorMemBase0Ns = 0x28000000 # CM33 Non-Secure
# 新配置
flexspiNorMemBase0 = 0x28000000 # CM33 Non-Secure(Switch固件用非安全地址)
flexspiNorMemBase0Ns = 0x38000000 # CM33 Secure
4.2.2 烧录与启动模式配置
- 进入 Serial Download 模式:调整 RT1180-EVK 的拨码开关(SW5):1-OFF、2-OFF、3-OFF、4-ON,连接 USB-C 线(J33)到 PC。
- 烧录tsn_app.bin:用 MCUBootUtility 选择 “MIMXRT1189” 型号,加载tsn_app.bin,烧录地址设为0x2800b000,点击 “Download”。
- 切换到 QSPI 启动模式:烧录完成后,调整拨码开关:1-OFF、2-ON、3-OFF、4-OFF,重启 RT1180。
4.2.3 网口接线(RT1180 Switch)
RT1180 的 Logical Port 与物理端口对应关系如下,需使用 ENET0-ENET3 作为 Switch 端口:
| Logical Port | 功能描述 | 物理端口(RT1180-EVK) | 接线用途 |
| 2 | Switch 第 1 个端口 | ENET0 | 接 Talker 的 ENET0 |
| 3 | Switch 第 2 个端口 | ENET1 | 接 Listener 1 的 ENET0 |
| 4 | Switch 第 3 个端口 | ENET2 | 接 Listener 2 的 ENET0 |
| 5 | Switch 第 4 个端口 | ENET3 | 预留(可扩展更多 Listener) |
接线步骤:
- Talker 的 ENET0 → RT1180 的 ENET0;
- Listener 1 的 ENET0 → RT1180 的 ENET1;
- Listener 2 的 ENET0 → RT1180 的 ENET2。
5.Step 3:AVB 数据包分析(Wireshark 抓包)
为验证 AVB 数据传输,需通过端口镜像抓取数据包,分析 AVTP(AVB Transport Protocol)结构,步骤如下:
5.1 配置 NETGEAR 交换机(端口镜像)
- 登录交换机管理界面:用网线连接 PC 到 NETGEAR GS105E 的端口 1,在浏览器输入交换机 IP(默认 192.168.0.239),登录后进入 “Port Mirroring Configuration”。
- 设置镜像规则:
- 选择 “Mirroring Source Ports”:端口 2、3(接 Talker 和 Listener);
- 选择 “Mirroring Destination Port”:端口 1(接 PC);
- 点击 “Apply” 保存配置。
5.2 抓取与分析 AVB 数据包
- 连接抓包链路:
- Talker → NETGEAR 端口 2;
- Listener 1 → NETGEAR 端口 3;
- PC(抓包) → NETGEAR 端口 1;
- NETGEAR 端口 4 → AVB Switch(MOTU/RT1180)。
- 启动 Wireshark 抓包:
- 选择 PC 的有线网卡,设置过滤条件 “avtp”(仅显示 AVB 传输协议数据包);
- 启动 Talker 的音频采集(接麦克风),Listener 的音箱应输出音频,此时 Wireshark 开始抓取 AVTP 数据包。
5.3 数据包结构解读
标准 AVTP 数据包遵循 IEEE 1722 协议,结构如下:
| 字段 | 长度 | 功能 | 抓包验证 |
| Ethernet 头部 | 14 字节 | 包含目的 MAC(Listener MAC)、源 MAC(Talker MAC) | 可见 Talker MAC 为 00:22:33:44:55:66,目的 MAC 为 Listener 的 MAC |
| VLAN 标签 | 4 字节 | 标记 AVB 优先级(通常为高优先级) | 普通交换机可能不显示,因不支持 AVB 物理层 |
| AVTP 头部 | 8 字节 | 包含时间戳、数据类型(音频) | 可见 “AVTP Audio Format” 字段 |
| IEC 61883 音频头部 | 8 字节 | 音频通道数、采样率 | 本文中为单通道(stack 默认配置) |
| 音频采样数据 | 可变 | 双通道音频采样(左 / 右声道) | 仅单通道有数据,故 Listener 仅单音箱发声 |
常见现象解释:若 Listener 的双音箱仅单声道发声,是因 RT1170 AVB Stack 默认仅采集单通道麦克风数据,需修改 stack 源码中的音频采集配置(如启用双通道)。
6.常见问题与避坑指南
| 问题现象 | 根本原因 | 解决方案 |
| RT1170 无法进入 shell | 未按 INSERT 键,或串口波特率错误 | 1. 重启 RT1170,在日志打印时快速按 INSERT;2. 确认串口波特率 115200 8N1 |
| RT1180 烧录后无 Switch 功能 | 1. 固件用错内核(CM7 而非 CM33);2. 内存地址配置错误 | 1. 使用 CM33 的tsn_app.bin;2. 按步骤 4.2.1 修改bltargetconfig.py |
| Listener 无音频输出 | 1. Talker ID 配置错误;2. 网线未接好 | 1. 确认talker_id为 0x00049f + Talker MAC 倒序;2. 检查网口指示灯是否闪烁 |
| Wireshark 抓不到 AVTP 包 | 端口镜像规则配置错误 | 重新配置 NETGEAR,确保源端口为 Talker/Listener 的连接端口 |
7.总结
本文基于 NXP RT1170(Endpoint)与 RT1180/MOTU(AVB Switch),实现了 “1 个 Talker→2 个 Listener” 的 AVB 音频传输平台。核心要点包括:
- RT1170 的角色配置(Talker 需设时钟主设备,Listener 需绑定 Talker ID);
- RT1180 作为 Switch 需用 CM33 内核固件,且修改烧录内存地址;
- 数据包分析需通过端口镜像,理解 AVTP 协议结构与单通道音频的原因。
该平台可扩展至更多 Listener(如 4 个),仅需增加 RT1170 并接入 AVB Switch,适用于各类多点音频同步传输场景。
2193