OpenEdv-开源电子网

标题: enc28j60+lwip的例程有时ping一段时间后延时很大,需要复位才能正常ping [打印本页]

作者: Jundodo    时间: 2017-11-29 12:02
标题: enc28j60+lwip的例程有时ping一段时间后延时很大,需要复位才能正常ping
enc28j60+lwip的例程有时ping一段时间后延时会变很大,需要重新复位板子后才能正常回复正常的Ping延时,请问是什么原因?在网上找到这个答案http://blog.sina.com.cn/s/blog_a4e2465a0102ws39.html    不知道是不是这个问题?但是我更改之后程序会移植在中断中,不切换任务,请问要怎么更改才能正常?@zuozhongkai @正点原子

作者: Jundodo    时间: 2017-11-29 12:02
正点原子 发表于 2017-11-30 00:51
根据你那个帖子去修改下,看看吧

在ENC28J60中断处理函数中的接收中断部分改成下面这样就好了[mw_shl_code=c,true]if(status&EIR_PKTIF)                //接收到数据,处理数据
        {
               
                while((packetnum=ENC28J60_Read(EPKTCNT))!=0)
                {
                        lwip_pkt_handle();
                        //printf("%d\r\n",packetnum);
                }
                ENC28J60_Write_Op(ENC28J60_BIT_FIELD_CLR,EIR,EIR_PKTIF);        //清除ENC28J60的接收中断标志位
        }[/mw_shl_code]
作者: Jundodo    时间: 2017-11-29 12:03
使用了UCOSIII操作系统
作者: FreeRTOS    时间: 2017-11-29 14:37
如果enc28j60的驱动优化不好,在数据量比较大的网络下很容易出现丢包的,不管有没有OS结果都一样
作者: Jundodo    时间: 2017-11-29 19:56
FreeRTOS 发表于 2017-11-29 14:37
如果enc28j60的驱动优化不好,在数据量比较大的网络下很容易出现丢包的,不管有没有OS结果都一样

ping一段时间之后就会进入接收错误中断,是接收缓冲不足的原因吗?我ping的指令是一个数据包1500字节。
ping 192.168.10.30 -t -l 1500
作者: 正点原子    时间: 2017-11-30 00:51
根据你那个帖子去修改下,看看吧
作者: FreeRTOS    时间: 2017-11-30 17:39
Jundodo 发表于 2017-11-29 19:56
ping一段时间之后就会进入接收错误中断,是接收缓冲不足的原因吗?我ping的指令是一个数据包1500字节。
...

ping包1500字节确实太大了,如果这时候网卡接收了其他数据包,那就极有可能出现丢包
我都是按照windows的ping包内容填充32字节,而且程序必须不断的检查接收错误中断,一发现错误就立刻修正接收的读写指针
下面提供我自己的ping包数据
[mw_shl_code=applescript,true]static const uint8_t pingMsg[32] =
{
    0x61, 0x62, 0x63, 0x64,
    0x65, 0x66, 0x67, 0x68,
    0x69, 0x6A, 0x6B, 0x6C,
    0x6D, 0x6E, 0x6F, 0x70,
    0x71, 0x72, 0x73, 0x74,
    0x75, 0x76, 0x77, 0x61,
    0x62, 0x63, 0x64, 0x65,
    0x66, 0x67, 0x68, 0x69,
};[/mw_shl_code]
作者: steaven    时间: 2018-1-13 14:52
本帖最后由 steaven 于 2018-1-13 14:55 编辑
Jundodo 发表于 2017-11-29 12:02
在ENC28J60中断处理函数中的接收中断部分改成下面这样就好了[mw_shl_code=c,true]if(status&EIR_PKTIF)                 ...

  牛,我之前这么用就是出问题,改成你这样,测试好一点,现在让它测试1天看看!file:///C:\Users\Administrator\AppData\Roaming\Tencent\Users\924401092\QQ\WinTemp\RichOle\3ZL}AOD_X%7CSFFM`75(JOY.png





欢迎光临 OpenEdv-开源电子网 (http://openedv.com/) Powered by Discuz! X3.4