器件型号: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 上