This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TDA4VM:端口 1 与主机之间的 VLAN 数据路由和转发

Guru**** 2546020 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1560020/tda4vm-vlan-data-routing-and-forwarding-between-port1-and-host

器件型号:TDA4VM


工具/软件:

目标:实现端口 1 与主机、SDK:9.1 之间的 VLAN 数据路由和转发

状态:PC 无法使用 VLAN 10;A72 手动启动 VLAN 虚拟网卡通过端口 1 和主机与 A72 通信

配置:

在 ethfw 之下

++ b/ethfw_build_flags.mak
@@–103,7 +103,7 @@ ETHFW_Iperf_Server_support?=yes
ETHFW_BOOT_TIME_PROFILE?=否

# Ethfw 演示支持
-ETHFW_DEMO_support?=否
+ETHFW_DEMO_support?=是

#支持随机 MAC 地址生成
ETHFW_RAND_MACADDR_GEN?=否
MM.ji@fba2ff4e2c07:~/TE/TDA4/rtos/psdk_rtos_j7/ethfw git diff utils/intervlan/eth_swintervlan.c src
diff -git a/utils/intervlan/eth_swintervlan.c src b/utils/intervlan/eth_swintervlan.c src
索引 8989390.22a69ef 100644
-- A/utils/intervlan/eth_swintervlan.c src
++ b/utils/intervlan/eth_swintervlan.c src
@@–180、7 + 180、7 @@静态 uint32_t CpswApp_receivePkts (void);

Cpsw App_Obj gCpswInterVlanAppObj =

-.hostMacAddr ={0x02、0x00、0x00、0x00、0x00、 0x02}、
+.hostMacAddr ={0x02U、0x03U、0x04U、0x05U、0xDEU、 0x96U}、
};

静态 uint8_t testDstMacAddr[]={0x00、0x11、0x02、0x00、0x00、 0x01};
@@–454,7 +454,7 @@ static int32_t CpswApp_addAleEntries (EnetCfgVlanConfig Server_Inter *pInterVlanCf
inArgs.regMcastFloodMask = CpswAppInterVlan_getIngressVlanMembershipMask (pInterVlanCfg);
inArgs.forceUntaggedEgressMask = 0;
inArgs.noLearnMask = 0U;
- inArgs.vidIngressCheck =假;
+ inArgs.vidIngressCheck = true;
inArgs.limitIPNxtHdr = false;
inArgs.disallowIPFrag = false;

@@–482、7 +482、7 @@静态 Int32_t CpswApp_addAleEntries (EnetCfgVlanConfig Server_Inter *pInterVlanCf
inArgs.regMcastFloodMask = CpswAppInterVlan_getEgressVlanMembershipMask (pInterVlanCfg);
inArgs.forceUntaggedEgressMask = 0;
inArgs.noLearnMask = 0U;
- inArgs.vidIngressCheck =假;
+ inArgs.vidIngressCheck = true;
inArgs.limitIPNxtHdr = false;
inArgs.disallowIPFrag = false;

在 Vision-apps 下:

-- A/utils/ethfw/app_ethfw_freertos.c src
++ b/utils/ethfw/app_ethfw_freertos.c src
@@–430、6 +430、22 @@μ s 静态 EthFw Trace_Cfg gEthApp_traceCfg =
.extTraceFunc = NULL、
};

+#define ETHAPP_VLAN_PORT_MASK (CPSW_ALE_HOST_PORT_MASK | CPSW_ALE_MACPORT_TO_PORTMASK (ENET_MAC_PORT_1))
+
+/* VLAN 配置*/
+static EthFw Vlan_Vlan gEthApp_vlanCfg[]=
+{
+{
+.vlanid = 10u、
+.memberMask = ETHAPP_VLAN_PORT_MASK、
+.regMcastFloodMask = ETHAPP_VLAN_PORT_MASK、
+.unregMcastFloodMask = ETHAPP_VLAN_PORT_MASK、
+.virtMemberMask = ETHAPP_DFLT_VIRT_PORT_MASK、
+.untagMask = 0U、
+}、
+};
+
+
void appEthFwEarlyInit()

APP_RTOS_SIMPERGY_PARAMS_t semParams;
@@–677、6 +693、10 @@静态 int32_t EthApp_initEthFw (void)
ethFwCfg.virtPortCfg =&gEthApp_virtPortCfg[0];
ethFwCfg.numVirtPorts = array_size (gEthApp_virtPortCfg);

+/*设置静态 VLAN 配置参数*/
+ ethFwCfg.vlanCfg =&gEthApp_vlanCfg[0];
+ ethFwCfg.numVlans = array_size (gEthApp_vlanCfg);
+
/*设置 AUTOSAR 虚拟端口配置参数*/
ethFwCfg.autosarVirtPortCfg =&gEthApp_autosarVirtPortCfg[0];
ethFwCfg.numAutosarVirtPorts = array_size (gEthApp_autosarVirtPortCfg);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    状态:PC 无法通过端口 1 和主机与 A72 通信、使用 VLAN 10;

    默认情况下、端口 1 是映射到 A72 Linux 客户端的仅 MAC 端口、 默认情况下不会将 VLAN 属性添加到仅 MAC 端口。

    如果要检查交换机端口接口是否通过 VLAN 进行通信、Linux 客户端需要向 ETHFW 注册 VLAN。 SDK9.1 中的 Linux 客户端不支持此功能。

    最新的 TI SDK 支持通过 ETHFW 从 Linux 注册 VLAN。

    此致、
    Sudheer