xiaoshen-372360 发表于 2019-7-10 16:05:23

【STM32F407+DP83848】服务器压力测试

本帖最后由 xiaoshen-372360 于 2019-7-10 16:09 编辑

最近在做一个关于STM32F407的Modbus-TCP程序,STM32做服务器,IP固定,在做测试的时候发现了如下问题
测试时间超过2天到3天的时候会出现协议栈死掉的情况,Ping不通 也连不上。
测试环境说明:
我们是这样测试的,电脑通过交换机链接STM32,电脑端使用ModbusPULL测试,测试时间是500ms 收发一次数据,每次读取125个寄存器,每次STM32 返回258个字节,与此同时电脑端开5个Ping 窗口,同时Ping STM32,Ping的字节数为1450,测试两天后出现STM32无法通信,且无法ping通的现象,

查看寄存器后,发现在以太网的DMA寄存器出错了,DMASR寄存器数值变为:0x0066040A(正常运行的时候为:0x00660404)
查看手册后发现是jabber超时。


但是,虽然定位到问题,但是这个问题如何产生的呢?还是不清除,所以小弟请教一下大侠们,为啥会出现这个现象。出现这个问题应该怎么解决呢?



songshiqun2010 发表于 2019-7-11 09:05:25

HAL库的话加一行代码试试
while(RESET != ((heth->Instance)->DMAOMR & ETH_DMAOMR_FTF));
加在下图所示位置




xiaoshen-372360 发表于 2019-7-11 11:31:52

songshiqun2010 发表于 2019-7-11 09:05
HAL库的话加一行代码试试
while(RESET != ((heth->Instance)->DMAOMR & ETH_DMAOMR_FTF));
加在下图所示位 ...

没用hall库,用的标准库做的

songshiqun2010 发表于 2019-7-11 11:37:18

xiaoshen-372360 发表于 2019-7-11 11:31
没用hall库,用的标准库做的

标准库又如何 原理是一样的。


xiaoshen-372360 发表于 2019-7-11 11:39:59

songshiqun2010 发表于 2019-7-11 09:05
HAL库的话加一行代码试试
while(RESET != ((heth->Instance)->DMAOMR & ETH_DMAOMR_FTF));
加在下图所示位 ...

请问一下为啥要加这一句呢?我看1.4的LWIP的库也没有加这一句。

songshiqun2010 发表于 2019-7-11 11:47:42


无薪税绵 发表于 2019-7-11 12:05:25

今天来签到了。

xiaoshen-372360 发表于 2019-7-11 12:34:06

songshiqun2010 发表于 2019-7-11 11:47


谢谢了,我去试试看。你原来也遇到这个问题了?
页: [1]
查看完整版本: 【STM32F407+DP83848】服务器压力测试