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

news2024/7/6 19:23:08

【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.coloradmin.cn/o/1891123.html

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

相关文章

【鸿蒙学习笔记】@Prop装饰器:父子单向同步

官方文档:Prop装饰器:父子单向同步 [Q&A] Prop装饰器作用 Prop装饰的变量可以和父组件建立单向的同步关系。Prop装饰的变量是可变的,但是变化不会同步回其父组件。 [Q&A] Prop装饰器特点 1・Prop装饰器不能在Entry装饰的…

关于ant design vue 使用Modal无法关闭弹窗的解决思路

文章目录 1: 出现问题的版本2.出现问题(1)ant design 的问题(2)poina的提示报错 3.正确版本总结 1: 出现问题的版本 "ant-design-vue": "^3.2.20", "pinia": "^2.1.7", "vue"…

Mybatis Plus 自动填充注解 @TableField(fill = FieldFill.INSERT_UPDATE)

第一步:在需要自动填充的位置加上注解 通过在创建时间和修改时间上添加 fill 填充字段 进行自动填充 第二步:要想实现自动填充还需要实现MetaObjectHandler接口,在这里实现自动填充的逻辑 Component public class MyMetaObjectHandler …

python sklearn机械学习-数据预处理

🌈所属专栏:【机械学习】✨作者主页: Mr.Zwq✔️个人简介:一个正在努力学技术的Python领域创作者,擅长爬虫,逆向,全栈方向,专注基础和实战分享,欢迎咨询! 您…

filex文件系统功能预研

filex资源 filex的源码路径有两个: 一个是azure-rtos下的filex:azure-rtos/filex (github.com)一个是eclipse-threadx下的filex:eclipse-threadx/filex filex的文档地址:rtos-docs/rtos-docs/filex 第三方文档:Thre…

搭建知识付费系统的技术框架与实现路径

知识付费系统已经成为内容创作者和企业变现的重要工具。要成功搭建一个高效、稳定、用户体验良好的知识付费系统,明确技术框架和实现路径至关重要。本文将详细解析搭建知识付费系统的技术框架,并提供具体的实现路径和相关技术代码示例。 一、知识付费系…

大陆ARS548使用记录

一、Windows连接上位机 雷达是在深圳路达买的,商家给的资料中首先让配置网口,但我在使用过程中一直出现无法连接上位机的情况。接下来说说我的见解和理解。 1.1遇到的问题 按要求配置好端口后上位机无连接不到雷达,但wireshark可以正常抓到数…

基于改进YOLOv5s的跌倒行为检测 | 引入SKAttention注意机制 + 引入空间金字塔池化结构SPPFCSPC + 结合ASFF自适应空间融合

前言:Hello大家好,我是小哥谈。为了实现电厂人员跌倒行为的实时检测,防止跌倒昏迷而无法及时发现并救援的事件发生,针对跌倒行为检测实时性以及特征提取能力不足的问题,提出了一种改进YOLOv5s的跌倒行为检测算法网络&a…

公网IP变更自动微信通知与远程执行命令的C++开源软件

基本功能 智能公网IP变更监测与微信通知 一旦检测到公网IP地址发生变更,系统将自动通过预设的QQ邮箱(该邮箱与微信绑定,实现微信通知)发送新IP地址通知。同时,软件会即时更新本地配置文件中的IP地址及变更时间&#…

MySQL Server使用

MySQL Server MySQL Server基本操作查看数据库服务命令行连接(这些操作都可以在workbench中进行) MySQL Server基本操作 MySQL基础:安装卸载与配置 查看数据库服务 电脑–管理–管理和应用程序–服务–MySQL80 命令行连接(这…

Linux线程:编织并发的梦幻世界

目录 🚩引言 🚩听故事,引概念 🚩生产者消费者模型 🚀再次理解生产消费模型 🚀挖掘特点 🚩条件变量 🚀条件变量常用接口 🚀条件变量的原理 🚩引言 上一篇…

HQChart报价列表高级应用教程7-走势列数据对接

HQChart报价列表高级应用教程7-走势列数据对接 走势列小程序效果图PC效果图HQChart代码地址走势列类型配置走势列数据格式示例走势列 单独使用一列显示每个股票的走势图 小程序效果图 PC效果图 HQChart代码地址 地址:github.com/jones2000/HQChart

医院挂号系统:基于JSP和MySQL的现代化医疗预约平台

开头语:您好,我是专注于医疗系统开发的IT学长。如果您对医院挂号系统感兴趣,欢迎联系我。 开发语言:Java 数据库:MySQL 技术:JSP技术,B/S架构 工具:Eclipse,MyEclips…

大模型对汽车行业意味着什么?_汽车企业大模型

引 言 大模型是一种利用海量数据进行训练的深度神经网络模型,其特点是拥有庞大的参数规模和复杂的计算结构。通过在大规模数据集上进行训练,大模型能够学习到丰富的模式和特征,从而具备强大的泛化能力,可以对未知数据做出准确的预…

10 - matlab m_map地学绘图工具基础函数 - 绘制多边形区域、流线图、散点图和添加注释的有关函数

10 - matlab m_map地学绘图工具基础函数 - 绘制多边形区域、流线图、散点图和添加注释的有关函数 0. 引言1. 关于m_patch2. 关于m_streamline3. 关于m_scatter4. 关于m_annotation5. 结语 0. 引言 本篇介绍下m_map中绘制多边形区域函数(m_patch)、绘制流…

Landsat数据从Collection1更改为Collection2

目录 问题解决 问题 需要注意!您使用的是废弃的陆地卫星数据集。为确保功能持续,请在2024年7月1日前更新。 在使用一些以前的代码时会遇到报错,因为代码里面用的是老的数据集 解决 对于地表反射率SR,需要在name中,将C01换为C02&…

Mysql-基础-DDL操作

1、数据库操作 查询 查询所有数据库 show databases; 创建 创建数据库 create database [if not exists] 数据库名 使用及查询 use 数据库名 select database() 查询当前所处数据库 删除 drop database [if not exists] 数据库名 2、表操作 查询当前库中的所…

SpringBoot源码阅读3-启动原理

SpringBootApplication public class DistApplication {public static void main(String[] args) {// 启动入口SpringApplication.run()SpringApplication.run(DistApplication.class, args);} }1、服务构建 这里"服务"指的是SpringApplication对象,服务…

安防视频监控/视频汇聚EasyCVR平台国标GB28181级联上级平台,视频无法播放是什么原因?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,EasyCVR基于云边端一体化架构,具有强大的数据接入、处理及分发能力,可提供7*24小时实时高清视频监控、云端录像、云存储、录像检索与回看、智能告警…

24位DAC转换的FPGA设计及将其封装成自定义IP核的方法

在vivado设计中,为了方便的使用Block Desgin进行设计,可以使用vivado软件把自己编写的代码封装成IP核,封装后的IP核和原来的代码具有相同的功能。本文以实现24位DA转换(含并串转换,使用的数模转换器为CL4660)为例,介绍VIVADO封装IP核的方法及调用方法,以及DAC转换的详细…