【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平台的构架与测试。
测试效果查看视频情况。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Ansys Zemax|场曲跟畸变图的前世今生

实现 OpticStudio通过在X和Y方向(弧矢和子午方向)的傍轴光线追踪确定近轴图像平面的Z坐标,并测量该近轴焦平面与系统图像平面的Z坐标之间的距离。 切向数据是沿Z轴从图像平面到近轴图像平面在切向(YZ)平面测量的距离…

【LeetCode刷题】3099.哈沙德数

题目链接 3099. 哈沙德数 - 力扣(LeetCode) 实现代码 int sumOfTheDigitsOfHarshadNumber(int x) {int sum 0;for(int temp x; temp; temp / 10)sum temp % 10;return x%sum ? -1 : sum; }

魔行观察-AI数据分析>>勒泰中心购物中心

摘要 本报告基于 魔行观察 搜集整理的数据,对勒泰中心购物中心的营业状态、商户构成、业态分布以及消费者评价进行了详细分析。 商场概览 勒泰中心是一个正常营业的购物中心,自2013年开业以来,已成为当地居民和游客的重要购物和休闲场所。…

3D一览通优化供应链协同,加速产品设计研发和上市

在现代企业管理中,供应链管理无疑占据着举足轻重的地位。它不仅是企业资源优化配置的基石,更是企业降低成本、提高效率、满足客户需求、保持市场竞争力的关键环节。对于工业企业来说,供应链的高效运作尤其重要。 然而,在实际操作…

一篇文章用python GUI构建学生管理系统

引言 通过使用Python,我们可以利用其简洁和功能强大的特性,结合Tkinter提供的GUI开发能力,快速构建一个直观且易于使用的学生管理系统。 准备工作 在开始之前,确保你的开发环境中已经安装了 PythonTkinter库 安装完成后&…

SQLServer:从数据类型 varchar 转换为 numeric 时出错。

1.工作要求 计算某两个经纬度距离 2.遇到问题 从数据类型 varchar 转换为 numeric 时出错。 3.解决问题 项目版本较老,使用SQLServer 2012 计算距离需执行视图,如下: SET QUOTED_IDENTIFIER ON SET ANSI_NULLS ON GO ALTER view vi_ord…

2024年迄今最热门的10款网络安全工具和产品

今年上半年,利用生成式人工智能(GenAI)的网络安全工具继续激增。许多供应商正在利用GenAI的功能来自动化安全运营中心(SOC)的工作,特别是在自动化日常活动方面,如收集威胁信息和自动创建查询。 …

Elasticsearch (1):ES基本概念和原理简单介绍

Elasticsearch(简称 ES)是一款基于 Apache Lucene 的分布式搜索和分析引擎。随着业务的发展,系统中的数据量不断增长,传统的关系型数据库在处理大量模糊查询时效率低下。因此,ES 作为一种高效、灵活和可扩展的全文检索…

Profibus DP主站转Modbus网关连接伺服与电机通讯

在工业自动化领域,将Profibus DP主站转Modbus网关(XD-MDPBM20)用于连接伺服与电机通讯是一种常见且重要的应用方式。当使用Profibus DP主站转Modbus网关(XD-MDPBM20)连接伺服与电机进行通讯时,可以参考以下…

强连通分量

强连通分量 强连通定义 有向图 G G G 的强连通是指 G G G 中任意两个节点都可以直接或间接到达。 下方两幅图都是强连通。一个特殊一点,任意两点都可以直接到达;一个则是最常见的强连通图。 特殊强连通图,任意两点都可以直接到达 常见的…

虚拟机启动失败 请进行修复 关闭hyper-v

场景 win11开启夜神模拟器时弹出此提示。点击关闭hyper-v并重启电脑后仍然不行。 解决方法 关闭 Windows安全中心 的 内存完整性 后重启电脑恢复正常。 补充 由于我这里除了会用到夜神模拟器,还会用到docker,而docker又依赖hyper-v,不…

YOLOv5初学者问题——用自己的模型预测图片不画框

如题,我在用自己的数据集训练权重模型的时候,在训练完成输出的yolov5-v5.0\runs\train\exp2目录下可以看到,在训练测试的时候是有输出描框的。 但是当我引用训练好的best.fangpt去进行预测的时候, 程序输出的图片并没有描框。根据…

【小白教学】-- 安装Ubuntu-20.04系统

下载 Ubuntu-20.04 镜像 具体如何下载镜像,请移驾我上一篇文章。使用清华大学开源镜像站下载。https://zhuanlan.zhihu.com/p/706444837 制作 Ubuntu-20.04 系统盘 安装软件 UltralSO 开始制作系统盘 第一步,插入一个 u 盘,启动软件&#x…

PO模式登录测试

项目实践 登陆项目测试 get_driver import page from selenium import webdriverclass GetDriver:driver Noneclassmethoddef get_driver(cls):if cls.driver is None:cls.driver webdriver.Edge()cls.driver.maximize_window()cls.driver.get(page.url)return cls.drivercl…

关于批量采集1688商品主图及链接的方式:软件采集/1688官方API接口数据采集

关于批量采集,我们通常用到的是软件 采集,或者通过1688官方API数据采集的形式:用户输入一组1688商品ID,一行一个,流程会自动逐个打开对应的1688商品详情页,采集主图的所有链接。 结果保存为表格的一行&…

Linux运维之管道符、重定向与环境变量

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 目录 一、输入输出重定向 二、管道命令符 三、命令行的通配符 四、常用的转义字符 五、重要的环境变量 致谢 一、输入输出重定向 输入重定向是…

【Python+微信小程序】学生考勤签到系统(已开源)

1. 简介 😝 这个项目是一款基于微信小程序和Flask框架开发的应用,旨在帮助学校管理学生的考勤和课程信息。系统通过集成数据库管理、API开发以及前后端交互,实现了便捷的学生考勤记录、课程表管理和教师交互功能。其主要特点包括&#xff1a…

程序化交易广告及其应用

什么是程序化交易广告? 程序化交易广告是以实时竞价技术即RTB(real-time bidding)为核心的广告交易方式。说到这里,你可能会有疑问:像百度搜索关键词广告还有百度网盟的广告,不也是CPC实时竞价的吗&#x…

Python学习笔记22:进阶篇(十一)常见标准库使用之访问互联网功能urllib模块的学习使用,requests库和aiohttp库了解

前言 本文是根据python官方教程中标准库模块的介绍,自己查询资料并整理,编写代码示例做出的学习笔记。 根据模块知识,一次讲解单个或者多个模块的内容。 教程链接:https://docs.python.org/zh-cn/3/tutorial/index.html 互联网访…

【基于R语言群体遗传学】-5-扩展到两个以上等位基因及多基因位点

我们现在继续对于群体遗传学进行统计建模,书接上回,我们讨论了孤雌生殖的物种违反哈代温伯格遗传比例的例子,那我们现在来看多于两个等位基因的情况的计算。 如果没有看过之前文章的同学,可以先去看一下之前的文章: …