OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2221|回复: 4

[XILINX] zynq长时间运行后,网卡ping不通

[复制链接]

9

主题

13

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2021-12-8
在线时间
11 小时
发表于 2023-8-11 10:58:24 | 显示全部楼层 |阅读模式
30金钱
本帖最后由 cnpirate 于 2023-8-12 17:47 编辑

问题现象是:
1. zynq长时间运行后,网口无法ping通;
2. 系统没有死掉,因为自己写的应用程序还在正常运行(通过串口终端观察到的);
3. 通过串口终端,将网卡ifconfig down后,再ifconfg up后,串口打印信息显示,已经建立连接,但是依然ping通;
4. 将zynq系统reboot以后,网卡就可以ping通了;
网卡的phy芯片型号为:RTL8211FI-CG

下面是Vivado的工程:


下面是:
system-user.dts文件
  1. include/ "system-conf.dtsi"
  2. / {
  3.         leds {
  4.                 compatible = "gpio-leds";

  5.                 gpio-led3 {
  6.                         label = "ps_led0";
  7.                         gpios = <&gpio0 0 1>;
  8.                         default-state = "on";
  9.                 };

  10.                 gpio-led4 {
  11.                         label = "ps_led1";
  12.                         gpios = <&gpio0 9 1>;
  13.                         default-state = "on";
  14.                 };

  15.         };

  16.           usb_phy0: phy0 {
  17.             compatible = "ulpi-phy";
  18.             #phy-cells = <0>;
  19.             reg = <0xe0002000 0x1000>;
  20.             view-port = <0x170>;
  21.             drv-vbus;
  22.         };

  23.          usb_phy1: phy1 {
  24.                 compatible = "ulpi-phy";
  25.             #phy-cells = <0>;
  26.             reg = <0xe0003000 0x1000>;
  27.             view-port = <0x170>;
  28.             drv-vbus;
  29.         };
  30. };

  31. &axi_ethernet_0 {
  32.     local-mac-address = [00 0a 35 00 22 01];
  33.      xlnx,phy-type = <0x8>;
  34.      phy-handle = <&phy1>;
  35.      xlnx,has-mdio = <0x1>;  
  36.      phy-mode = "rgmii";  
  37.      mdio {  
  38.         phy1: phy@1 {  
  39.             device_type = "ethernet-phy";  
  40.             reg = <1>;  
  41.         };
  42.     };        
  43. };

  44. &axi_ethernet_1 {
  45.     local-mac-address = [00 0a 35 00 22 02];
  46.      xlnx,phy-type = <0x8>;  
  47.      phy-handle = <&phy2>;
  48.      xlnx,has-mdio = <0x1>;  
  49.      phy-mode = "rgmii";  
  50.      mdio {  
  51.         phy2: phy@1 {  
  52.             device_type = "ethernet-phy";  
  53.             reg = <1>;  
  54.         };
  55.     };        
  56. };

  57. &i2c0 {
  58.         rtc@68 {
  59.                 compatible = "dallas,ds3232";
  60.                 reg = <0x68>;
  61.                 status = "ok";
  62.         };
  63. };

  64. &usb0 {
  65.         dr_mode = "otg";
  66.         usb-phy = <&usb_phy0>;
  67. };
  68. &usb1 {
  69.         dr_mode = "host";
  70.         usb-phy = <&usb_phy1>;
  71. };&#65279;
复制代码
pl.dtsi如下所示
  1. /*

  2. * CAUTION: This file is automatically generated by Xilinx.

  3. * Version:  

  4. * Today is: Tue Jul 25 08:38:26 2023

  5. */







  6. / {

  7.     amba_pl: amba_pl {

  8.         #address-cells = <1>;

  9.         #size-cells = <1>;

  10.         compatible = "simple-bus";

  11.         ranges ;

  12.         axi_chip2chip_0: axi_chip2chip@50000000 {

  13.             clock-names = "s_aclk", "idelay_ref_clk", "axi_c2c_phy_clk", "axi_c2c_selio_rx_clk_in";

  14.             clocks = <&clkc 15>, <&clkc 17>, <&clkc 15>, <&misc_clk_0>;

  15.             compatible = "xlnx,axi-chip2chip-5.0";

  16.             reg = <0x50000000 0x10000000>;

  17.             xlnx,aurora-width = <0x1000>;

  18.             xlnx,axi-addr-width = <0x20>;

  19.             xlnx,axi-brst-width = <0x2>;

  20.             xlnx,axi-bus-type = <0x0>;

  21.             xlnx,axi-data-width = <0x20>;

  22.             xlnx,axi-id-width = <0x1>;

  23.             xlnx,axi-len-width = <0x8>;

  24.             xlnx,axi-lite-addr-width = <0x20>;

  25.             xlnx,axi-lite-data-width = <0x20>;

  26.             xlnx,axi-lite-prot-width = <0x2>;

  27.             xlnx,axi-lite-resp-width = <0x2>;

  28.             xlnx,axi-lite-stb-width = <0x4>;

  29.             xlnx,axi-resp-width = <0x2>;

  30.             xlnx,axi-size-width = <0x3>;

  31.             xlnx,axi-stb-width = <0x4>;

  32.             xlnx,axi-wuser-width = <0x1>;

  33.             xlnx,common-clk = <0x0>;

  34.             xlnx,disable-clk-shift = <0x0>;

  35.             xlnx,disable-deskew = <0x0>;

  36.             xlnx,ecc-enable = <0x1>;

  37.             xlnx,en-axi-link-hndlr = <0x1>;

  38.             xlnx,en-legacy-mode = <0x0>;

  39.             xlnx,include-axilite = <0x0>;

  40.             xlnx,interface-mode = <0x2>;

  41.             xlnx,interface-type = <0x1>;

  42.             xlnx,interrupt-width = <0x4>;

  43.             xlnx,master-fpga = <0x1>;

  44.             xlnx,num-of-io = <0x14>;

  45.             xlnx,selectio-phy-clk = <0x64>;

  46.             xlnx,simulation = <0x0>;

  47.             xlnx,support-narrowburst = "axi_c2c";

  48.             xlnx,use-diff-clk = <0x0>;

  49.             xlnx,use-diff-io = <0x0>;

  50.         };

  51.         misc_clk_0: misc_clk_0 {

  52.             #clock-cells = <0>;

  53.             clock-frequency = <100000000>;

  54.             compatible = "fixed-clock";

  55.         };

  56.         axi_dma_0: dma@40410000 {

  57.             #dma-cells = <1>;

  58.             axistream-connected = <&axi_ethernet_0>;

  59.             axistream-control-connected = <&axi_ethernet_0>;

  60.             clock-names = "s_axi_lite_aclk", "m_axi_sg_aclk", "m_axi_mm2s_aclk", "m_axi_s2mm_aclk";

  61.             clocks = <&clkc 15>, <&clkc 15>, <&clkc 15>, <&clkc 15>;

  62.             compatible = "xlnx,eth-dma";

  63.             interrupt-names = "mm2s_introut", "s2mm_introut";

  64.             interrupt-parent = <&intc>;

  65.             interrupts = <0 31 4 0 32 4>;

  66.             reg = <0x40410000 0x10000>;

  67.         };

  68.         axi_ethernet_0: ethernet@41000000 {

  69.             axistream-connected = <&axi_dma_0>;

  70.             axistream-control-connected = <&axi_dma_0>;

  71.             clock-frequency = <100000000>;

  72.             clock-names = "s_axi_lite_clk", "axis_clk", "gtx_clk", "ref_clk";

  73.             clocks = <&clkc 15>, <&clkc 15>, <&clkc 16>, <&clkc 17>;

  74.             compatible = "xlnx,axi-ethernet-7.1", "xlnx,axi-ethernet-1.00.a";

  75.             device_type = "network";

  76.             interrupt-names = "mac_irq", "interrupt";

  77.             interrupt-parent = <&intc>;

  78.             interrupts = <0 29 1 0 30 4>;

  79.             local-mac-address = [00 0a 35 00 00 00];

  80.             phy-mode = "rgmii";

  81.             reg = <0x41000000 0x10000>;

  82.             xlnx = <0x0>;

  83.             xlnx,axiliteclkrate = <0x0>;

  84.             xlnx,axisclkrate = <0x0>;

  85.             xlnx,clockselection = <0x0>;

  86.             xlnx,enableasyncsgmii = <0x0>;

  87.             xlnx,gt-type = <0x0>;

  88.             xlnx,gtinex = <0x0>;

  89.             xlnx,gtlocation = <0x0>;

  90.             xlnx,gtrefclksrc = <0x0>;

  91.             xlnx,instantiatebitslice0 = <0x0>;

  92.             xlnx,phy-type = <0x3>;

  93.             xlnx,phyaddr = <0x1>;

  94.             xlnx,phyrst-board-interface-dummy-port = <0x0>;

  95.             xlnx,rable = <0x0>;

  96.             xlnx,rxcsum = <0x0>;

  97.             xlnx,rxlane0-placement = <0x0>;

  98.             xlnx,rxlane1-placement = <0x0>;

  99.             xlnx,rxmem = <0x1000>;

  100.             xlnx,rxnibblebitslice0used = <0x0>;

  101.             xlnx,tx-in-upper-nibble = <0x1>;

  102.             xlnx,txcsum = <0x0>;

  103.             xlnx,txlane0-placement = <0x0>;

  104.             xlnx,txlane1-placement = <0x0>;

  105.             axi_ethernet_0_mdio: mdio {

  106.                 #address-cells = <1>;

  107.                 #size-cells = <0>;

  108.             };

  109.         };

  110.         axi_ethernet_1: ethernet@41010000 {

  111.             axistream-connected = <&axi_ethernet_1_dma>;

  112.             axistream-control-connected = <&axi_ethernet_1_dma>;

  113.             clock-frequency = <100000000>;

  114.             clock-names = "s_axi_lite_clk", "axis_clk", "gtx_clk", "gtx_clk90";

  115.             clocks = <&clkc 15>, <&clkc 15>, <&misc_clk_1>, <&misc_clk_1>;

  116.             compatible = "xlnx,axi-ethernet-7.1", "xlnx,axi-ethernet-1.00.a";

  117.             device_type = "network";

  118.             interrupt-names = "mac_irq", "interrupt";

  119.             interrupt-parent = <&intc>;

  120.             interrupts = <0 33 1 0 34 4>;

  121.             local-mac-address = [00 0a 35 00 00 01];

  122.             phy-mode = "rgmii";

  123.             reg = <0x41010000 0x10000>;

  124.             xlnx = <0x0>;

  125.             xlnx,axiliteclkrate = <0x0>;

  126.             xlnx,axisclkrate = <0x0>;

  127.             xlnx,clockselection = <0x0>;

  128.             xlnx,enableasyncsgmii = <0x0>;

  129.             xlnx,gt-type = <0x0>;

  130.             xlnx,gtinex = <0x0>;

  131.             xlnx,gtlocation = <0x0>;

  132.             xlnx,gtrefclksrc = <0x0>;

  133.             xlnx,include-dre ;

  134.             xlnx,instantiatebitslice0 = <0x0>;

  135.             xlnx,phy-type = <0x3>;

  136.             xlnx,phyaddr = <0x1>;

  137.             xlnx,phyrst-board-interface-dummy-port = <0x0>;

  138.             xlnx,rable = <0x0>;

  139.             xlnx,rxcsum = <0x0>;

  140.             xlnx,rxlane0-placement = <0x0>;

  141.             xlnx,rxlane1-placement = <0x0>;

  142.             xlnx,rxmem = <0x1000>;

  143.             xlnx,rxnibblebitslice0used = <0x0>;

  144.             xlnx,tx-in-upper-nibble = <0x1>;

  145.             xlnx,txcsum = <0x0>;

  146.             xlnx,txlane0-placement = <0x0>;

  147.             xlnx,txlane1-placement = <0x0>;

  148.             axi_ethernet_1_mdio: mdio {

  149.                 #address-cells = <1>;

  150.                 #size-cells = <0>;

  151.             };

  152.         };

  153.         misc_clk_1: misc_clk_1 {

  154.             #clock-cells = <0>;

  155.             clock-frequency = <125000000>;

  156.             compatible = "fixed-clock";

  157.         };

  158.         axi_ethernet_1_dma: dma@40400000 {

  159.             #dma-cells = <1>;

  160.             axistream-connected = <&axi_ethernet_1>;

  161.             axistream-control-connected = <&axi_ethernet_1>;

  162.             clock-names = "s_axi_lite_aclk", "m_axi_sg_aclk", "m_axi_mm2s_aclk", "m_axi_s2mm_aclk";

  163.             clocks = <&clkc 15>, <&clkc 15>, <&clkc 15>, <&clkc 15>;

  164.             compatible = "xlnx,eth-dma";

  165.             interrupt-names = "mm2s_introut", "s2mm_introut";

  166.             interrupt-parent = <&intc>;

  167.             interrupts = <0 35 4 0 36 4>;

  168.             reg = <0x40400000 0x10000>;

  169.             xlnx,include-dre ;

  170.         };

  171.         axi_gpio_0: gpio@41200000 {

  172.             #gpio-cells = <3>;

  173.             clock-names = "s_axi_aclk";

  174.             clocks = <&clkc 15>;

  175.             compatible = "xlnx,axi-gpio-2.0", "xlnx,xps-gpio-1.00.a";

  176.             gpio-controller ;

  177.             reg = <0x41200000 0x10000>;

  178.             xlnx,all-inputs = <0x1>;

  179.             xlnx,all-inputs-2 = <0x0>;

  180.             xlnx,all-outputs = <0x0>;

  181.             xlnx,all-outputs-2 = <0x0>;

  182.             xlnx,dout-default = <0x00000000>;

  183.             xlnx,dout-default-2 = <0x00000000>;

  184.             xlnx,gpio-width = <0x3>;

  185.             xlnx,gpio2-width = <0x20>;

  186.             xlnx,interrupt-present = <0x0>;

  187.             xlnx,is-dual = <0x0>;

  188.             xlnx,tri-default = <0xFFFFFFFF>;

  189.             xlnx,tri-default-2 = <0xFFFFFFFF>;

  190.         };

  191.     };

  192. };
复制代码



QQ浏览器截图20230811105700.png

最佳答案

查看完整内容[请看2#楼]

解决方法找到了,将axi_ethernet这个IP TX Memory Size和RX Memory Size由4K改成16K TX Checksum offload和RX Checksum offload改成Full checksum offload 然后用iperf测试了5*24小时,没有出现网卡断开的情况
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

9

主题

13

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2021-12-8
在线时间
11 小时
 楼主| 发表于 2023-8-11 10:58:25 | 显示全部楼层
解决方法找到了,将axi_ethernet这个IP
TX Memory Size和RX Memory Size由4K改成16K
TX Checksum offload和RX Checksum offload改成Full checksum offload
然后用iperf测试了5*24小时,没有出现网卡断开的情况
QQ浏览器截图20230821095717.png
回复

使用道具 举报

3

主题

1979

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5520
金钱
5520
注册时间
2018-10-21
在线时间
1561 小时
发表于 2023-8-12 08:54:18 | 显示全部楼层
是上电后,刚开始可以ping通,运行时间比较久后,ping不通吗
回复

使用道具 举报

9

主题

13

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2021-12-8
在线时间
11 小时
 楼主| 发表于 2023-8-12 17:45:17 | 显示全部楼层
QinQZ 发表于 2023-8-12 08:54
是上电后,刚开始可以ping通,运行时间比较久后,ping不通吗

是的,刚上电后,可以ping通
运行大概7到8个小时候,就ping不通了
回复

使用道具 举报

3

主题

1979

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5520
金钱
5520
注册时间
2018-10-21
在线时间
1561 小时
发表于 2023-8-14 13:46:24 | 显示全部楼层
cnpirate 发表于 2023-8-12 17:45
是的,刚上电后,可以ping通
运行大概7到8个小时候,就ping不通了

是不是温度太高了,可以贴上散热片或者散热风扇等再试试
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-10-4 08:17

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表