MQX3.7版本的RTCS移植后发现PING时通时不通,求解

2020-02-11 09:51发布

以下是代码,按照官方的流程并且参照了苏大MQX书籍进行一步步的编写,PHY芯片是KZS8041和MQX默认的PHY芯片匹配,使用的硬件是某鸦开发板
关键代码是这样的:
  1. int_32            error;
  2.    _enet_address     address;//mac 地址 等同于char[6]
  3.    IPCFG_IP_ADDRESS_DATA ip_data;
  4.    ip_data.ip = ENET_IPADDR;
  5.    ip_data.mask = ENET_MASKADDR;
  6.    ip_data.gateway = ENET_GATEWAYADDR;
  7.    //step1:创建RTCS组件
  8.    error = RTCS_create();// 备注:内部已经包含IP_init() ICMP_init()等组件
  9.    if(error == RTCS_OK)
  10.    {
  11.         printf("RTCS_create is OK ");
  12.    }
  13.    else
  14.    {
  15.         printf("Failed!!");
  16.         _task_block();
  17.    }
  18.    
  19.    //step2:获得mac地址存在address中
  20.    if(1 == ENET_get_mac_address(DEMOCFG_DEFAULT_DEVICE, ip_data.ip, address))//第一个参数是 1 ,第二个参数是IP地址,第三个是char[6]待更新的数组
  21.    {
  22.      printf("ENET_get_mac_address is OK ");
  23.    }
  24.    else
  25.    {
  26.         printf("Failed!!");
  27.         _task_block();
  28.    }
  29.    
  30.    //step3:物理层设备初始化
  31.    error = ipcfg_init_device(DEMOCFG_DEFAULT_DEVICE,address);
  32.    if (error == 0)
  33.    {
  34.        printf (" init ethernet device OK ");
  35.    }
  36.    else
  37.    {
  38.        printf("Failed!!");
  39.        _task_block();
  40.    }
  41.    
  42.    //step4:绑定IP地址
  43.    error = ipcfg_bind_staticip(DEMOCFG_DEFAULT_DEVICE,&ip_data);
  44.    if(error == IPCFG_OK )
  45.    {
  46.        printf("Bind OK ");
  47.       
  48.    }
  49.    else
  50.    {
  51.        printf("Failed!!");
  52.        _task_block();
  53.    }

  54.   while(1)
  55.   {
  56.     /* 闪烁小灯 */
  57.     GPIO_ToggleBit(HW_GPIOE, 6);
  58.     _time_delay(200);
  59.   }
复制代码
出现的问题:
1、和公司电脑直连。PING和UDP全都正常
2、和公司电脑通过交换机连,PING不稳定,经常连接超时
3、回家和自家电脑PING,不稳定,经常超时。
这个问题疑惑了好几天了一直没找到原因,真是不甘心呀,工程已经在附件上传了,开发环境是IAR 6.30
最小工程_MQX20170307ping不稳定.rar (4.71 MB, 下载次数: 2) 2017-3-7 22:06 上传 点击文件名下载附件
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。