工具/软件:
目标:实现端口 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);