【RT摩拳擦掌】如何构建RT AVB switchendpoint平台

【RT摩拳擦掌】如何构建RT AVB switch&endpoint平台

  • 一,文档简介
  • 二,平台构建
    • 2.1 软硬件情况
    • 2.2 配置RT1170 AVB端点
      • 2.2.1 1块MIMXRT1170开发板做talker配置
      • 2.2.2 2块MIMXRT1170开发板做listener配置
    • 2.3 AVB Switch 配置
      • 2.3.1 MOTU AVB Switch
      • 2.3.2 RT1180 AVB switch
  • 三,AVB网络数据包分析

一,文档简介

之前讲过一篇文章是如何使用单点的RT1170作为talker,单点的RT1170作为listener,两块板子直连实现AVB的端点测试。但是实际使用中,很多是多点对多点的应用,不过需要使用到AVB switch。所以本篇文章在之前文章的基础上,多加了一个listener端点和AVB switch,去实现一个talker,两个listener的AVB 平台情况。
在这里插入图片描述

图 1

AVB switch可以是第三方的成品AVB switch,当然也可以考虑使用NXP的RT即将推出的新产品RT1180,这款芯片是带有AVB/TSN switch功能的,并且我们的RT1180 配套的stack也已经发布。

二,平台构建

本文将会使用两种AVB switch去做AVB测试:一种使用NXP官方的MIMXRT1180-EVK作为AVB switch,另外一种使用第三方产品MOTU的AVB switch。端点使用的是3块NXP MIMXRT1170-EVK板子,一块做talker配置,另外两块做listener配置。
对于RT1170作为端点,也就是talker和listener的配置,可以参考之前的文章:

【经验分享】RT1170 AVB初体验
这里可以直接快速启动,拿stack里面做好的avb_app.bin直接烧录到MIMXRT1170-EVK做talker和listener配置,当然,如果有自定义的一些功能修改了源码,也可以参考上面的文章重新做编译,生成avb_app.bin文件再烧录。

2.1 软硬件情况

硬件:
MOTU AVB SWITCH(switch)
MIMXRT1180-EVK1(switch)
MIMXRT1170-EVK
3(1: talker, 2: listener),硬件需要改动,参考初体验文章。
软件:
RT1170 AVB/TSN stack:
genavb_tsn-mcuxpresso-SDK_2_13_0-5_6_1: https://mcuxpresso.nxp.com/download/52643189c4d74a7b26b8e096ab28df0e
RT1180 AVB/TSN stack:
genavb_tsn-mcuxpresso-SDK_2_15_0-6_0_0 :
https://mcuxpresso.nxp.com/download/c584c33a8d4f55c29b5505b9be8f537a

2.2 配置RT1170 AVB端点

直接烧录avbstack里面的文件:
genavb_tsn-mcuxpresso-SDK_2_13_0-5_6_1\binaries\genavb-avb_audio_app-evaluation-freertos_rt1176-5_6_1.tar\genavb-avb_audio_app-evaluation-freertos_rt1176-5_6_1\release\avb_app.bin
到3块MIMXRT1170-EVK开发板中,可以进入serial download模式烧录:

在这里插入图片描述

图 2

三块板子做同样的代码烧录,烧录之后,进入internal boot模式,通过串口进行talker和listener的配置,代码烧录成功后,板载的串口会一直发log信息,只需要键盘输入INSERT就可以进入到shell命令行状态。

2.2.1 1块MIMXRT1170开发板做talker配置

cd .. 
ls 
mkdir avb_app 
write avb_app/mclock_role 0 
mkdir avdecc 
write avdecc/btb_mode 0 
mkdir fgptp 
write fgptp/gmCapable 1 
mkdir port0 
write port0/hw_addr 00:22:33:44:55:66 

2.2.2 2块MIMXRT1170开发板做listener配置

cd .. 
ls 
mkdir avb_app 
write avb_app/mclock_role 1 
mkdir avdecc 
write avdecc/btb_mode 1 
write avdecc/talker_id 0x00049f4455660000 

2.3 AVB Switch 配置

下面分别给出两种SWITCH的配置连接情况:

2.3.1 MOTU AVB Switch

使用MOTU AVB switch的连接框图如下:
在这里插入图片描述

图3

实物连接情况如下:
在这里插入图片描述

图 4

对于专用的AVB switch,无需具体配置,因为你可以把它理解为一个带有AVB功能的交换机,可以实现AVB数据的转发功能。只需要把1个talker的1G网口,和2个listener的1G网口分别接入到MOTU AVB SWITCH的网口中皆可。然后只要talker,和listener的功能能够正常,整个音频传输就可以正常,talker负责收集麦克风的音频数据信息,然后转发到两个listener实现播放。当然,两个listener需要分别接音箱。

2.3.2 RT1180 AVB switch

对于RT1180 AVB switch的配置,也分为快速上手和自行编译两种方法。如果源码没有任何改动的情况下,可以直接使用stack自带的bin文件,这里需要注意,选择正确的bin文件。RT1180有两个内核:CM33和CM7内核。CM33的image是支持TSN/AVB bridge功能的,也就是switch,CM7 image是支持TSN endpoint功能的。
MIMXRT1180-EVK带有多个网口,具体情况如下:
在这里插入图片描述

图 5

在这里插入图片描述

图 6

所以在使用AVB switch网口的时候,需要注意使用ENET0,1,2,3口。
使用MIMXRT1180-EVK做AVB switch网口的连接示意图如下:

在这里插入图片描述

图 7

实际连接图下:

在这里插入图片描述

图 8

要想实现RT1180的代码工作,需要下载RT1180 M33的TSN bridge代码到MIMXRT1180-EVK板子中,如果本身的AVB/TSN stack带的源码不需要改动,可以使用现成的bin文件测试:
genavb_tsn-mcuxpresso-SDK_2_15_0-6_0_0\binaries\genavb-tsn_app-evaluation-freertos_rt1189_cm33-6_0_0\release\tsn_app.bin
烧录方法有很多,可以使用工具,或者命令行方式。工具可以是MCUBootutility或者官方的SEC工具,这里选择使用MCUBootutility工具,下载连接:
https://github.com/JayHeng/NXP-MCUBootUtility/releases/tag/v6.2.0
如果使用SEC工具下载,可以参考stack的文档:
genavb_tsn-mcuxpresso-SDK_2_15_0-6_0_0\doc\ NXP_GenAVB_TSN_MCUXpresso_User_s_Guide_6_0_rev0.pdf, chapter 11 Flash Image booting.
使用MCUBootutility工具需要做一个改动:
\NXP-MCUBootUtility-6.2.0\src\targets\MIMXRT1189 \MIMXRT1189\bltargetconfig.py
修改:

#flexspiNorMemBase0   = 0x38000000 # CM33 Secure
#flexspiNorMemBase0Ns = 0x28000000 # CM33 Non-Secure

为:

flexspiNorMemBase0   = 0x28000000 # CM33 Non-Secure
flexspiNorMemBase0Ns = 0x38000000 # CM33 Secure

在这里插入图片描述

图 9

把tsn_app.bin烧录到0x2800b000。
MIMXRT1180-EVK进入serial download mode,SW5:1-OFF,2-OFF,3-OFF,4-ON.然后找一根USB线连接J33实现烧录。烧录完成后,需要进入internal boot 模式QSPI启动,即:SW5:1-OFF,2-ON,3-OFF,4-OFF.
这样就完成了带有AVB switch功能的app烧录,这个代码不需要像RT1170那样,还需要进入shell配置filesystem,对于RT1180 bridge代码,烧录之后,重新启动就自带switch功能了。
当然如果需要重新编译自己的工程,可以直接参考stack的文档NXP_GenAVB_TSN_MCUXpresso_User_s_Guide_6_0_rev0.pdf, 如果使用linux系统编译,方法和RT1170一样,三步走:
(1) 给RT1180 SDK打位于AVB stack的patch
(2) 给RT1180 AVB stack加上两个软链接,一个是板子SDK的,还有一个是AVB SDK源码链接,构架是这样的:
在这里插入图片描述

图 10

(3) 最后,直接编译./ build_release.sh
\genavb_tsn-mcuxpresso-SDK_2_15_0-6_0_0\genavb-apps-freertos-6_0_0.tar\genavb-apps-freertos-6_0_0\boards\evkmimxrt1180\demo_apps\avb_tsn\tsn_app\cm33\armgcc\ build_release.sh
这样就可以生成对应的tsn_app.bin文件。

三,AVB网络数据包分析

一直都想查看AVB网络数据包,于是想了如下的办法去做,又找了一个通用的网络交换机,可以把其中的某些网口打包到具体网口的方法,这里使用这种方法也只是想查看下基本包,从原理上讲,通用交换器是不带有AVB物理层功能的,所以应该是会对同步功能有所影响,不过本文在此,由于设备的限制,也只是基本了解下AVB数据包结构情况。
准备带有端口mirror功能的交换器:NETGERA plus switch ProSAFE GS105E。
然后对交换器做一个配置,把端口2,3的数据mirror到端口1:
在这里插入图片描述

图 11

然后整个AVB系统连接框图如下:
在这里插入图片描述

图 12

实物连接图这样的:
在这里插入图片描述

图 13

打开整个系统平台,让系统功能跑起来,也就是talker端点声音输入,2个listener端点的功放有输出的情况,在PC端打开wireshark软件,抓包,抓出来的情况是这样的:
在这里插入图片描述

图 14

可以看到,有很多的AVTP数据包,而且目标地址也有两个。
要想分析AVTP数据包,首先得知道标准的AVTP数据包情况是怎么样的,标准数据包是这样的结构:
在这里插入图片描述

图 15

下面打开wireshark软件,配置好要抓的网口,抓到数据包情况来对比一下:
在这里插入图片描述

图 16

可以看到,整个包的情况,基本还是抓出来了,但是对于细节部分,比如VLAN tag,IEC 61883 header,这些没有体现出来,应该是和普通交换机物理层无法支持AVB的原因有关,但是可以看到,上面的音频数据还是能看到的,而且确实是双通道,但是数据只传了一个通道,所以对于RT1170 listener这边,虽然接了双通道的扬声器,两个喇叭对应左右声道,但是听下来,只有一个喇叭通道有声音,另一个没有声音,这点和抓到的数据包是吻合的,这点的源头是stack代码麦采集就用了一个通道,然后虽然音频配置了2个通道,但是实际只有一个通道有数据。
到目前为止,实现了AVB switch&endpoint平台的构架与测试。
测试效果查看视频情况。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/38944.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

未来的钥匙在于过去:学历史的真正意义,震惊!历史竟然是偶然的?从历史中寻找未来的方向!

我们自幼接受的教育是,学历史是为了相信历史是必然的。中国人民必然战胜日寇的侵略,解放思想和改革开放必定会发生,和平和发展必定是世界的主题,中国经济必定是高速增长…… 然而,在真正的历史学家眼中,历史…

linux应用开发基础知识(八)——内存共享(mmap和system V)

mmap内存映射 内存共享定义 内存映射,简而言之就是将用户空间的一段内存区域映射到内核空间,映射成功后,用户对这段内存区域的修改可以直接反映到内核空间,同样,内核空间对这段区域的修改也直接反映用户空间。那么对…

海外注册 | 欧盟医疗器械法规下免除临床试验的条件与要求

在欧盟医疗器械法规(MDR)的严格监管下,植入性医疗器械和III类医疗器械通常需要进行临床试验来证明其安全性和性能。 然而,MDR也规定了一些特定情况下免除临床试验的可能性。以下是免除临床试验的条件和要求的详细说明&#xff1a…

人口萎缩,韩国釜山“进入消失阶段”

KlipC报道:调查显示,随着低生育率和人口老化,釜山人口逐渐萎缩,韩国第二大城市釜山显现出“进入消失阶段”的迹象。 据悉,“消失风险指数”是将20岁至39岁女性人口总数除以65岁及以上人口得到的数值。当该指数大于1.5…

自然语言处理学习(2)基本知识 文本预处理+文本数据分析+文本增强

conda activate DL conda deactivate课程链接 一 一些包的安装 1 stanfordcorenlp 在anoconda prompt 里面:进入自己的conda环境,pip install stanfordcorenlp 进入方式 相关包下载,Jar包我没有下载下来,太慢了,这个…

掌握Go语言邮件发送:net/smtp实用教程与最佳实践

掌握Go语言邮件发送:net/smtp实用教程与最佳实践 概述基本配置与初始化导入net/smtp包设置SMTP服务器基本信息创建SMTP客户端实例身份验证 发送简单文本邮件配置发件人信息构建邮件头部信息编写邮件正文使用SendMail方法发送邮件示例代码 发送带附件的邮件邮件多部分…

Study--Oracle-06-Oracler网络管理

一、ORACLE的监听管理 1、ORACLE网络监听配置文件 cd /u01/app/oracle/product/12.2.0/db_1/network/admin 2、在Oracle数据库中,监听器(Listener)是一个独立的进程,它监听数据库服务器上的特定端口上的网络连接请求&#xff0c…

Vitis AI - 量化流程详解

目录 1. 简介 2. 具体流程 2.1 校准激活 2.2 量化感知训练 2.3 量化校准配置 2.4 quantization 函数 3. 总结 1. 简介 想象一下,你有一个非常聪明的机器人朋友,它可以帮你做很多事情,比如预测天气。但是,这个机器人的大脑…

01 数据采集层 流量分发第一步规范采集海量数据

《易经》:“初九:潜龙勿用”。潜龙的意思是隐藏,阳气潜藏,阳爻位于最下方称为“初九”,龙潜于渊,是学而未成的阶段,此时需要打好基础。 而模块一我们就是讲解推荐系统有关的概念、基础数据体系…

基于SpringBoot+Vue商户点评管理与数据分析系统设计和实现(源码+LW+调试文档+讲解等)

💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 Java精品实战案例《1000套》 2025-2026年最值得选择的Java毕业设计选题大全&#xff…

使用 Vanna 生成准确的 SQL 查询:工作原理和性能分析

Vanna工作原理 从本质上讲,Vanna 是一个 Python 包,它使用检索增强功能来帮助您使用 LLM 为数据库生成准确的 SQL 查询。 Vanna 的工作分为两个简单的步骤 - 在您的数据上训练 RAG“模型”,然后提出问题,这些问题将返回可设置为在您的数据库上自动运行的 SQL 查询。 vn.t…

【后端面试题】【中间件】【NoSQL】MongoDB提高可用性的方案(主从结构、仲裁节点、分片、写入语义)

主从结构 MongoDB的高可用和别的中间件的高可用方案基本类似。比如在MySQL里,接触了分库分表和主从同步;在Redis里,Redis也有主从结构;在Kafka里,分区也是有主从结构的。 所以先介绍启用了主从同步 我们的系统有一个关…

你想活出怎样的人生?

hi~好久不见,距离上次发文隔了有段时间了,这段时间,我是裸辞去感受了一下前端市场的水深火热,那么这次咱们不聊技术,就说一说最近这段时间的经历和一些感触吧。 先说一下自己的个人情况,目前做前端四年&am…

深圳技术大学oj C : 生成r子集

Description 输出给定序列按字典序的 � 组合,按照所有 � 个元素出现与否的 01 标记串 ����−1,...,�1 的字典序输出. 此处01串的字典序指:先输入的数字对应低位&#x…

移动智能终端数据安全管理方案

随着信息技术的飞速发展,移动设备已成为企业日常运营不可或缺的工具。特别是随着智能手机和平板电脑等移动设备的普及,这些设备存储了大量的个人和敏感数据,如银行信息、电子邮件等。员工通过智能手机和平板电脑访问企业资源,提高…

【机器学习】Datawhale-AI夏令营分子性质AI预测挑战赛

参赛链接:零基础入门 Ai 数据挖掘竞赛-速通 Baseline - 飞桨AI Studio星河社区 一、赛事背景 在当今科技日新月异的时代,人工智能(AI)技术正以前所未有的深度和广度渗透到科研领域,特别是在化学及药物研发中展现出了巨…

SpringBoot+Vue集成AOP系统日志

新建logs表 添加aop依赖 <!-- aop依赖--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-aop</artifactId> </dependency> 新建获取ip地址工具类 import javax.servlet.http.H…

React Native V0.74 — 稳定版已发布

嗨,React Native开发者们, React Native 世界中令人兴奋的消息是,V0.74刚刚在几天前发布,有超过 1600 次提交。亮点如下: Yoga 3.0New Architecture: Bridgeless by DefaultNew Architecture: Batched onLayout UpdatesYarn 3 for New Projects让我们深入了解每一个新亮点…

Docker精华篇 - 常用命令大全,入门到精通!

大家好,我是CodeQi! 我们都知道 Docker 的重要性,以及 Docker 如何在软件开发生命周期中发挥重要作用 。 说实话,学习 Docker 很有趣,至少在我看来是这样。 一旦掌握了基础知识,这并不难。 困难的是记住所有这些命令。 因此,在这篇文章中,我收集了所有命令,或者更…

四十篇:内存巨擘对决:Redis与Memcached的深度剖析与多维对比

内存巨擘对决&#xff1a;Redis与Memcached的深度剖析与多维对比 1. 引言 在现代的系统架构中&#xff0c;内存数据库已经成为了信息处理的核心技术之一。这类数据库系统的高效性主要来源于其对数据的即时访问能力&#xff0c;这是因为数据直接存储在RAM中&#xff0c;而非传统…