• 正文
  • 相关推荐
申请入驻 产业图谱

基于NXP RT系列构建AVB Switch&Endpoint平台指南

09/30 10:25
2193
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

在音频传输场景中,传统以太网难以满足 “低时延、同步传输” 需求,而 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)

  1. 进入 Serial Download 模式:调整 RT1170-EVK 的拨码开关(SW5):1-OFF、2-OFF、3-OFF、4-ON,连接 USB-C 线(J33)到 PC。
  2. 烧录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”。
  3. 切换到 Internal Boot 模式:烧录完成后,调整拨码开关:1-OFF、2-ON、3-OFF、4-OFF,重启开发板

3.2 进入 Shell 配置界面

  1. 打开串口工具:连接 RT1170 的 UART(J28)到 PC,配置波特率 115200、8N1,重启开发板。
  2. 进入 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 专用交换机,无需软件配置,仅需接线:

  1. 接线步骤:
    • 将 Talker 的 ENET 网口(RT1170 的 ENET0)用网线接入 MOTU 的任意网口;
    • 将 2 个 Listener 的 ENET 网口(RT1170 的 ENET0)分别接入 MOTU 的其他网口;
    • 确保 MOTU 通电,网口指示灯亮(绿色为连接正常,闪烁为数据传输)。
  2. 优势:无需配置固件,适合快速验证 Endpoint 功能,避免 Switch 端的配置错误。

4.2 方案 2:RT1180-EVK 作为 AVB Switch(需固件配置)

RT1180 的 CM33 内核支持 TSN Bridge 功能(即 AVB Switch),需烧录专用固件并配置启动模式:

4.2.1 固件准备与修改

  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
  2. 修改 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 烧录与启动模式配置

  1. 进入 Serial Download 模式:调整 RT1180-EVK 的拨码开关(SW5):1-OFF、2-OFF、3-OFF、4-ON,连接 USB-C 线(J33)到 PC。
  2. 烧录tsn_app.bin:用 MCUBootUtility 选择 “MIMXRT1189” 型号,加载tsn_app.bin,烧录地址设为0x2800b000,点击 “Download”。
  3. 切换到 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 交换机(端口镜像)

  1. 登录交换机管理界面:用网线连接 PC 到 NETGEAR GS105E 的端口 1,在浏览器输入交换机 IP(默认 192.168.0.239),登录后进入 “Port Mirroring Configuration”。
  2. 设置镜像规则:
    • 选择 “Mirroring Source Ports”:端口 2、3(接 Talker 和 Listener);
    • 选择 “Mirroring Destination Port”:端口 1(接 PC);
    • 点击 “Apply” 保存配置。

5.2 抓取与分析 AVB 数据包

  1. 连接抓包链路:
    • Talker → NETGEAR 端口 2;
    • Listener 1 → NETGEAR 端口 3;
    • PC(抓包) → NETGEAR 端口 1;
    • NETGEAR 端口 4 → AVB Switch(MOTU/RT1180)。
  2. 启动 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 音频传输平台。核心要点包括:

  1. RT1170 的角色配置(Talker 需设时钟主设备,Listener 需绑定 Talker ID);
  2. RT1180 作为 Switch 需用 CM33 内核固件,且修改烧录内存地址;
  3. 数据包分析需通过端口镜像,理解 AVTP 协议结构与单通道音频的原因。

该平台可扩展至更多 Listener(如 4 个),仅需增加 RT1170 并接入 AVB Switch,适用于各类多点音频同步传输场景。

《如何构建RT AVB switch&endpoint平台》资料获取:https://www.nxpic.org.cn/document/id-18072

相关推荐