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:两个 tda4与 rgmii6 (Mac 到 Mac)通信

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1079543/tda4vm-two-pcs-tda4-communicate-with-rgmii6-mac-to-mac

部件号:TDA4VM
“线程:TDA4测试”中讨论的其它部件

您好,

我希望通过 RGMII6实现两个 TDA4的直接 MAC2MAC 连接。 我根据 此常见问题解答中的配置进行了配置,但无法使用两个 TDA4相互 ping 通。

SDK 是 Linux + RTOS 7.1。

参考许多 E2E 线程,代码修改如下:

1. PINMUX 设置,J721E_PINMUX_DATA_GeSI_cpsw9g.c.

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
static pinmuxPerCfg_t gRgmii6PinCfg[] =
{
/* MyRGMII6 -> RGMII6_RD0 */
{
PIN_RGMII6_RD0, PIN_MODE(0) | \
((PIN_PULL_DISABLE | PIN_INPUT_ENABLE) & (~PIN_PULL_DIRECTION))
},
/* MyRGMII6 -> RGMII6_RD1 */
{
PIN_RGMII6_RD1, PIN_MODE(0) | \
((PIN_PULL_DISABLE | PIN_INPUT_ENABLE) & (~PIN_PULL_DIRECTION))
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

2.set RGMII 模式, board_Ethernet_config.c.

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Board_STATUS Board_ethConfigCpsw9g(void)
{
Board_STATUS status = BOARD_SOK;
uint8_t portNum;
/* On J721E EVM to use all 8 ports simultaneously, we use below configuration
RGMII Ports - 1,3,4,5,6. QSGMII ports - 2 (main),7,8 (sub)*/
/* Configures the CPSW9G RGMII ports */
for(portNum=0; portNum < BOARD_CPSW9G_PORT_MAX; portNum++)
{
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

3.端口链路配置,ethfw.c.

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
static void EthFw_initLinkArgs(EnetPer_PortLinkCfg *linkArgs,
Enet_MacPort macPort)
{
appLogPrintf("Call EthFw_initLinkArgs, macPort = %d \n", macPort);
EnetPhy_Cfg *phyCfg = &linkArgs->phyCfg;
CpswMacPort_Cfg *macCfg = (CpswMacPort_Cfg *)linkArgs->macCfg;
EnetMacPort_LinkCfg *linkCfg = &linkArgs->linkCfg;
EnetMacPort_Interface *mii = &linkArgs->mii;
uint32_t i;
CpswMacPort_initCfg(macCfg);
EnetPhy_initCfg(phyCfg);
/* PHY parameters from board specific code */
// EnetBoard_setPhyConfig(gEthFwObj.enetType,
// macPort,
// macCfg,
// mii,
// phyCfg);
if (ENET_MAC_PORT_6 == macPort)
{
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

4.no phy cfg,enet_apputils.c.

Fullscreen
1
2
3
4
5
6
7
8
void EnetAppUtils_setNoPhyCfgRgmii(EnetMacPort_Interface *interface,
EnetPhy_Cfg *phyCfg)
{
phyCfg->phyAddr = ENETPHY_INVALID_PHYADDR;
interface->layerType = ENET_MAC_LAYER_GMII;
interface->sublayerType = ENET_MAC_SUBLAYER_REDUCED;
interface->variantType = ENET_MAC_VARIANT_FORCED;
}
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

5. app_ethfw.c.

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
static EthFw_Port gEthAppPorts[] =
{
// {
// .portNum = ENET_MAC_PORT_2, /* QSGMII main */
// .vlanCfg = { .portPri = 0U, .portCfi = 0U, .portVID = 0U }
// },
{
.portNum = ENET_MAC_PORT_5, /* RGMII */
.vlanCfg = { .portPri = 0U, .portCfi = 0U, .portVID = 0U }
},
{
.portNum = ENET_MAC_PORT_6, /* RGMII */
.vlanCfg = { .portPri = 0U, .portCfi = 0U, .portVID = 0U }
},
};
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

6.打开端口6,Enet_mcm.c.

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
static int32_t EnetMcm_enablePorts(EnetMcm_Handle hMcm)
{
int32_t status = ENET_SOK;
Enet_IoctlPrms prms;
CpswAle_SetPortStateInArgs setPortStateInArgs;
Enet_Handle hEnet = hMcm->hEnet;
uint32_t coreId = hMcm->selfCoreId;
uint8_t i;
for (i = 0U; i < hMcm->numMacPorts; i++)
{
EnetPer_PortLinkCfg linkArgs;
CpswMacPort_Cfg macCfg;
linkArgs.macCfg = &macCfg;
linkArgs.macPort = hMcm->macPortList[i];
hMcm->setPortLinkCfg(&linkArgs, hMcm->macPortList[i]);
hMcm->print("EnetMcm_enablePorts() macPort: %d\n", linkArgs.macPort);
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

7.log 消息

Fullscreen
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
[MCU2_0] 4.075600 s: CIO: Init ... Done !!!
[MCU2_0] 4.075678 s: ### CPU Frequency <ORG = 1000000000 Hz>, <NEW = 1000000000 Hz>
[MCU2_0] 4.075718 s: APP: Init ... !!!
[MCU2_0] 4.075736 s: SCICLIENT: Init ... !!!
[MCU2_0] 4.076869 s: SCICLIENT: DMSC FW version [20.8.5--v2020.08b (Terrific Lla]
[MCU2_0] 4.076916 s: SCICLIENT: DMSC FW revision 0x14
[MCU2_0] 4.076941 s: SCICLIENT: DMSC FW ABI revision 3.1
[MCU2_0] 4.076965 s: SCICLIENT: Init ... Done !!!
[MCU2_0] 4.076985 s: UDMA: Init ... !!!
[MCU2_0] 4.086658 s: UDMA: Init ... Done !!!
[MCU2_0] 4.086730 s: MEM: Init ... !!!
[MCU2_0] 4.086769 s: MEM: Created heap (DDR_SHARED_MEM, id=0, flags=0x00000004) @ d2400000 of size 8388608 bytes !!!
[MCU2_0] 4.086826 s: MEM: Created heap (L3_MEM, id=1, flags=0x00000000) @ 3600000 of size 131072 bytes !!!
[MCU2_0] 4.086874 s: MEM: Created heap (DDR_NON_CACHE_ME, id=5, flags=0x00000000) @ ce000000 of size 65536 bytes !!!
[MCU2_0] 4.086919 s: MEM: Init ... Done !!!
[MCU2_0] 4.086938 s: FVID2: Init ... !!!
[MCU2_0] 4.086988 s: FVID2: Init ... Done !!!
[MCU2_0] 4.087013 s: VHWA: VPAC Init ... !!!
[MCU2_0] 4.087032 s: SCICLIENT: Sciclient_pmSetModuleState module=290 state=2
[MCU2_0] 4.087833 s: SCICLIENT: Sciclient_pmSetModuleState success
[MCU2_0] 4.087869 s: VHWA: LDC Init ... !!!
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

我无法用两个 TDA4互相 ping 通。

Fullscreen
1
2
3
4
5
6
7
8
9
root@ti-j72xx:~# ping 172.22.0.24
PING 172.22.0.24 (172.22.0.24) 56(84) bytes of data.
From 172.22.0.25 icmp_seq=1 Destination Host Unreachable
From 172.22.0.25 icmp_seq=2 Destination Host Unreachable
From 172.22.0.25 icmp_seq=3 Destination Host Unreachable
^C
--- 172.22.0.24 ping statistics ---
5 packets transmitted, 0 received, +3 errors, 100% packet loss, time 4091ms
pipe 3
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

下一步该怎么办? 谢谢。

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

    TDA4_A 现在通过 RGMII5连接 phy 并通过 RGMII6连接 TDA4_B 。