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.

[参考译文] RTOS/EVMK2H:PDK K2HK 4.0.7为66AK2H14配置不正确的最大以太网帧长度

Guru**** 2589300 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/642544/rtos-evmk2h-pdk-k2hk-4-0-7-configures-incorrect-maximum-ethernet-frame-length-for-66ak2h14

器件型号:EVMK2H

工具/软件:TI-RTOS

当运行   来自 ti-processor-sdk-rtos-k2hk-evm-04.01.00.06和 NDK_2_25_01_11和 pdk_k21455_4_0_sps 的 NIMU_emacExampleProject 示例时、测试程序报告的 NIMU_emk2H_emBiosExampleExampleProject 示例出现故障:

C:\ti\ti-processor-sdk-rtos-k2hk-EVM-04.01.00.06\NDK_2_25_01_11\packages/ti\NDK\winapps>testudp.exe 192.168.1.4
IPv4地址

测试目标客户端地址192.168.1.4:7
测试 UDP 封包有效载荷1到1472字节...
testudp.exe:大小为1455时失败 

从研究中可以看到、当 testudp 测试失败时、地址0x02090C18处的超大接收帧寄存器(RXOVERSIZEDFRAMES)将递增。

此问题可追溯到 ti-processor-sdk-rtos-k21514-EVM-04.01.00.06\pdk_k2hk 4_0_7\packages/ti\translation_NDK\Nimu\src\v2\Nimu_eth.c 中的 Init_MAC 函数、该函数将接收最大长度设置为1500 (不带以太网标头或 FCS、而不带以太网标头)。

对 Init_MAC 函数的以下更改可修复该问题:

$ git diff C:/ti/ti-processor-sdk-rtos-k2hk-evm-04.01.00.06/pdk_k2hk_4_0_7/packages/ti/transport/ndk/nimu/src/v2/nimu_eth.c nimu_eth.c
diff - git a/.06/pdk_k2hk _4_0_7/packages/ti/transport/NDK/nimu/src/v2/intu_mtu。c b/Nimu_zh.c
index c9d6086..0552c4d 100644-nimu/t/inu/nimu/t/nimu/nimu/nu/t/nimu/ntr.c–
1

@@、032_mu/nimu/t/nimu/nimu/nimu/t/nimu/inu/t/nimu/inu/t/nimu/inu/inu/ni206_mu/t/inu/nu/nu/nu/nv6_c/nv1/nimu/in @@
*任何错误。
*
*将 Rx Max length (Rx 最大长度)设置为针对
-配置的 MTU *接口。
+ *接口加上以太网接头和 FCS。
*/
- CSL_CPGMAC_SL_setRxMaxLen (macPortNum、MTU);
+ const uint32_t Rx_max_len = MTU + ETHDR_SIZE + 4;//* 4字节 FCS */
+
+ CSL_CPGMAC_SL_setRxMaxLen (macPortlen、rnum);

/*完成 MAC 端口的设置*/
返回; 

由于修改、testudp 程序现在通过了:

C:\ti\ti-processor-sdk-rtos-k2hk-EVM-04.01.00.06\NDK_2_25_01_11\packages/ti\NDK\winapps>testudp.exe 192.168.1.4
IPv4地址

测试目标客户端地址192.168.1.4:7
测试 UDP 封包有效载荷1到1472字节...
测试循环通过-重置
测试循环通过-重置
测试循环通过-重置
测试循环通过-重置
测试循环通过-重置测试循环通过-重置 

ping 现在可以处理3012的最大数据长度(由 NDK 中的 MMALOC_MAXSIZE 值施加):

C:\ti\ti-processor-sdk-rtos-k2hk-EVM-04.01.00.06\NDK_2_25_01_11\packages/ti\NDK\winapps>ping 192.168.1.4 -l 3012

ping 192.168.1.4,ping 192.168.1.4,ping 192.168.12字节的数据:
从192.168.1.4开始回复:bytes=3012 times=1ms=TTL =12=125.255


,从192.168.1.4字节到192.168.1.4:

从192.168.1.4,从192.168.1.4字节:从192.168.1.4,从192.168.1.4时间=12=12=12=4ms=12=12=4ms=4ms=4ms=12=4ms=125.255:从192.168.4ms
数据包:发送= 4、接收= 4、丢失= 0 (0%丢失)、
大约往返时间(以毫秒为单位):
最小值= 1ms、最大值= 1ms、平均值= 1ms 

修改后的 Nimu_eth.c 随附 在 e2e.ti.com/.../2364.nimu_5F00_eth.c 上

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


    感谢您分享。 这对社会上的其他人来说是非常有用的。

    此致、
    Yordan