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.

[参考译文] TMS320F28388D:TCP 软件发送意外的 TCP 重传(小于 RTO)

Guru**** 2390755 points
Other Parts Discussed in Thread: TMDSHSECDOCK, TMDSCNCD28388D, C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1444062/tms320f28388d-tcp-software-sends-unexpected-tcp-retransmission-less-than-rto

器件型号:TMS320F28388D
主题中讨论的其他器件:TMDSHSECDOCKTMDSCNCD28388DC2000WARE

工具与软件:

尊敬的专家:

我将面临以下问题。 您能否告诉我们、SW 如何避免意外的重新传输。

有时、CM 上的 lwip (2.1.2)在 之前非常关闭的传输(少于)时执行"TCP 重传" 1毫秒)

电流环路  

 TI 评估板(192.168.1.100) - PC (192.168.1.11)

 TMDSCNCD28388D (CM)和 TMDSHSECDOCK - PC

软件

  它基于 C2000ware 示例(enet_lwip_tcp)

  C:\ti\c2000\C2000Ware_4_01_00_00\libraries\communications\Ethernet\third_party\lwip\examples

e2e.ti.com/.../enet_5F00_lwip_5F00_tcp.c

INTERRUPT_ENABLE (INT_EMAC_TX0);
INTERRUPT_ENABLE (INT_EMAC_RX0);
INTERRUPT_ENABLE (INT_EMAC);

lwIPTimer()在 SysTickIntHandler 上调用

tcp_write()和 tcp_output()在主级别上调用(不在中断例程上调用)

我在 tcp_write()起始和 tcp_output()结束之间禁用中断 TX、RX 和 SysTick

以避免出现如下所示的上下文切换问题

并将相关中断设置在相同的优先级、以避免出现多个中断问题。

Interrupt_setPriority (INT_EMAC_TX0、3);
Interrupt_setPriority (INT_EMAC_RX0、3);
Interrupt_setPriority (INT_EMAC、3);
Interrupt_setPriority (FAULT_SysTick、3);

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/992830/tms320f28388d-faulty-lwip-f2838x-port-tested-both-udp-and-tcp-ip-via-mqtt#pifragment-323267=1

但是、TCP 重新传输执行的间隔时间是关闭的(距离上一次传输小于1毫秒)。

我 找不到此行为的代码。

我认为以下代码用于发送重新传输数据包、但当线鲨鱼日志中发生这种行为时、不会命中 BP。

tcp_slowtmr()  

if (pcb->rtime >= pcb->RTO ){
/*重新传输的时间。 */

此致、

Hidehiko