以太网(ethernet)的调试:
Rk默认已经添加了mac驱动。网卡分为两个层次:MAC+PHY
一般说来,MAC就是网络控制器,如果该驱动OK,就能直接看到ifconfig信息;
PHY是物理层,负责发送和传输的底层,如果PHY发生问题,ifconfig同样有信息,只有up时才会连接PHY,down时断开连接。
MAC和PHY通过MII接口传输以太网数据,通过MDIO接口访问PHY的配置寄存器。 PHY连不上第一可能是硬件问题,拿给做硬件的,首先检查一下供电是否正常(最关键),然后检查一下PHY所有信号是否都很正常(一般连接对了都没啥问题),
Adb通过 ifconfig -a命令可以查看是否注册了网卡设备eth0

rk3288:/ # ifconfig -asit0      Link encap:IPv6-in-IPv4  NOARP  MTU:1480  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:0 TX bytes:0 lo        Link encap:Local Loopback  inet addr:127.0.0.1  Mask:255.0.0.0 inet6 addr: ::1/128 Scope: HostUP LOOPBACK RUNNING  MTU:65536  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:0 TX bytes:0 eth0      Link encap:Ethernet  HWaddr 46:50:6f:9d:8c:82inet addr:192.168.2.27  Bcast:192.168.2.255  Mask:255.255.255.0 inet6 addr: fe80::4450:6fff:fe9d:8c82/64 Scope: LinkUP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1RX packets:908 errors:0 dropped:0 overruns:0 frame:0 TX packets:99 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:72432 TX bytes:12712 Interrupt:38
rk3288:/ #

我这里调试的是:Rk3288_Android7.1,kernel版本是4.4, 代码位置在drivers/net/ethernet/stmicro/stmmac/.
Dts配置:

--- a/arch/arm/boot/dts/rk3288-evb.dtsi
+++ b/arch/arm/boot/dts/rk3288-evb.dtsiext_gmac: external-gmac-clock {compatible = "fixed-clock";clock-frequency = <125000000>; //1000M网用125Mclock-output-names = "ext_gmac";#clock-cells = <0>;};&gmac {//      phy-supply = <&vcc_phy>; //原理图phy的供电PHY_PMEB直接使用pmu的ldo脚,   所以这里注掉,不需要再配置phy-mode = "rgmii"; clock_in_out = "input";snps,reset-gpio = <&gpio4 8 0>; //复位pin(参考原理图)snps,reset-active-low;snps,reset-delays-us = <0 10000 50000>;assigned-clocks = <&cru SCLK_MAC>;assigned-clock-parents = <&ext_gmac>;pinctrl-names = "default";pinctrl-0 = <&rgmii_pins>; tx_delay = <0x30>;rx_delay = <0x10>;max-speed = <1000>; //这里配置最大的限速,1000就是可以达到1000M速度,100就是100M最大限速status = "okay";};

问题点总结:

1、万用表量供电脚PHY_PME只有0.4v的供电。

分析:
Phy的供电脚使用pmu(rk808)的VSWOUT2脚(对照原理图),注意dts添加对应pin的节点配置,这样rk808驱动才能添加对应的寄存器设置,使该pin输出3.3v供电:

--- a/arch/arm/boot/dts/rk3288-evb-android-rk808-hdmi.dts
+++ b/arch/arm/boot/dts/rk3288-evb-android-rk808-hdmi.dts+                       vcc_lan: SWITCH_REG2 {+                                 regulator-always-on;+                                 regulator-boot-on;+                                 regulator-min-microvolt = <3300000>;+                                 regulator-max-microvolt = <3300000>;+                                 regulator-name = "vcc_lan";+                                 regulator-state-mem {+                                         regulator-off-in-suspend;+                                 };+                       };

2、报错rk_gmac-dwmac: probe of ff290000.ethernet failed with error -1。

分析:
dwmac-rk.c驱动的上电函数phy_power_on读取不到phy-supply的有效ldo,直接返回-1报错,就会无法正常识别到网卡设备eth0,需在驱动drivers/net/ethernet/stmicro/stmmac/dwmac-rk.c中注掉phy_power_on的上下电操作,直接返回0即可。

 static int phy_power_on(struct rk_priv_data *bsp_priv, bool enable){/*  struct regulator *ldo = bsp_priv->regulator;int ret;struct device *dev = &bsp_priv->pdev->dev;if (!ldo) {dev_err(dev, "no regulator found\n");return -1;}if (enable) {ret = regulator_enable(ldo);if (ret)dev_err(dev, "fail to enable phy-supply\n");} else {ret = regulator_disable(ldo);if (ret)dev_err(dev, "fail to disable phy-supply\n");}*/return 0;}

3、开机起来只识别到100M的速率,相关log打印:rk_gmac-dwmac ff290000.ethernet eth0: Link is Up - 100Mbps/Full - flow control off)

分析:
dts配置:

max-speed = <1000>; //这里配置最大的限速

4、如果PHY的供电脚PHY_PMEB使用GPIO控制开关的话,dts部分还需要对照原理图加上以下的GPIO的配置。

vcc_phy: vcc-phy-regulator { compatible = "regulator-fixed"; enable-active-high; gpio = <&gpio0 8 GPIO_ACTIVE_HIGH>; pinctrl-names = "default"; pinctrl-0 = <&eth_phy_pwr>; regulator-name = "vcc_phy"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-always-on; regulator-boot-on; }; & pinctrl {eth_phy { eth_phy_pwr: eth-phy-pwr { rockchip,pins = <0 8 RK_FUNC_GPIO &pcfg_pull_none>; }; };

5、PHY 初始化异常

类似如下异常打印:

stmmac_open: Cannot attach to PHY

eth0: No PHY found

PHY 正常识别会有类似如下打印:

eth0: PHY ID 01410dd1 at 1 IRQ 0 (stmmac-0:01) active

解决思路:

A. 需要先确认硬件是否有异常,对比 RK 发布的以太网 PHY 参考电路,或者找 RK 硬件同事
check 下原理图
B. 需要确认 PHY 的供电是否正常,如 VCC_LAN 等电源脚
C. 如果 PHY 有 reset 脚控制,确认是否正常控制到
D. 测量 MAC 信号脚的电平,需要工作在 3.3V
E. 还可以尝试增加以下 delay 时间试试

6、kernel出现如下报错打印

stmmac_open: DMA initialization failed

这种情况只有在“clock_in_out = "input"情况下才出现。
A) 需要确认 GMAC 工作主时钟 MAC_CLK 是否有从 PHY 供给主控:
使用 100M PHY 时,其频率是 50M
使用 1000M PHY 时,其频率是 125M
B) 如果有 clock,需要确认 clock 的幅度是否达标,一般需要 3.0V 以上
C) 需要确认 iomux 是否正确

注意:如果用的是100M PHY,MAC_CLK的频率是50M;如果用的是1000M PHY,MAC_CLK的
频率是 125M.125M clock 必须由 PHY 提供,100M clock 可由 RK 主控提供,这是因为 RK 主控分不出 125M clock 或分出的
clock 可能不精准,会造成 GMAC 丢包或无法工作。

RK3288_Android7.1调试以太网ethernet相关推荐

  1. 实时的工业以太网Ethernet Powerlink

    近十年来,随着互联网技术飞速发展,以太网成为商业通信中的主导网络技术.以太网的通信速率要比目前任何工业现场总线高很多,因它是IT界标准网络技术,成千上万的公司参与开发生产有关产品,使其成本低廉,可选择 ...

  2. Infiniband vs 以太网Ethernet 对比

    IPOIB 默认情况下,InfiniBand 不使用 IP 进行通信.但是,IP over InfiniBand(IPoIB)在 InfiniBand 远程直接访问 (RDMA)网络之上提供一个 IP ...

  3. 以太网Ethernet解码概述

    目录 1. 申明 2. 目的 3. 背景知识 3.1 Ethernet协议的作用和历史 3.2 Ethernet承载IP的例子 4. 代码demo 5. 专栏知识链接 6. 写在最后 1. 申明 本文 ...

  4. Infiniband 和 以太网Ethernet 对比

    目录 概述 对比 Ethernet infiniband 带宽 时延 可靠性 组网方式 类比 infiniband 的缺点 infiniband 的应用场景 参考 概述 以前IB特有的技术比如RDMA ...

  5. 以太网(Ethernet)技术的理解!!

    目前最流行的物理和数据链路层协议是以太网(ethernet) 以太网是如何工作的? 以太网的传输速率 10-Mbps.100-Mbps. 1000Mbps.10-Gbps 我们通常会有一个误区,大家都 ...

  6. 利用iptables对以太网ethernet进行网速限制,更好地共享网络

    iptables中有个limit模块,用它来限制packet,从面达到限制网速的目的. 什么是MTU? MTU是Maximum Transmission Unit的缩写.意思是网络上传送的最大数据包, ...

  7. 以太网(Ethernet)通信简单理解

    简单的讲,以太网就是以固定的14字节开头的,以数据包(帧)传输数据的网络,数据在局域网中传输时,采用的是广播型式,比如局域网上有3台电脑ABC,A要发数据给B,其实就是群发数据出去,C当然也是能收到的 ...

  8. ETH—Lwip以太网通信

    第39章     ETH-Lwip以太网通信 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...

  9. 【STM32】标准库-以太网外设-LAN8720A-LWIP-无操作系统

    TCP/IP模型 TCP/IP 只有四个分层,分别为应用层.传输层.网络层以及网络访问层(物理层) 实际上,还有一个 TCP/IP 混合模型,分为五个层.它实际与 TCP/IP四层模型是相通的,只是把 ...

  10. 西门子PLC 以太网通讯

    云锋 个人主页给TA发消息加TA为好友发表于:2011-03-04 14:44:55楼主 实际工程中用过的PLC 以太网通信案例,需要把PLC型号.与PLC通信的设备.通信的各种参数及情况.通信实现的 ...

最新文章

  1. VMware 虚拟机
  2. 真的有能开光追的手游了!自带实机演示的那种,OPPO这次玩“大”了
  3. 【机器学习】深度盘点:详细介绍 Python 中的 7 种交叉验证方法!
  4. python爬取的内容不是中午_大年初六中午,全国各区县哪里最冷?
  5. VGG19续读【精细】,为什么叫做VGG19?==>【每一层可以看做是很多个局部特征的提取器,可以用作局部特征提取】
  6. SpringBoot之项目启动
  7. el-option传两个值_俗话说买房看地段,买窗看K值:如何区分K值、U值和R值
  8. 匿名类型(C# 编程指南)
  9. 第八讲 拍卖的博弈分析练习题
  10. android 软件 加密方法,Android中WIFI常见的几种加密方式(详细)
  11. c 关闭html,运行node Server.js后如何关闭?
  12. 【手掌识别】基于matlab形态学手掌长宽检测【含Matlab源码 1382期】
  13. html加载gif动画效果,html – 使用CSS动画加载图像VS使用GIF图像加载
  14. 简单提高MIDI音量的方法
  15. 三、单因素方差分析例题(R语言)
  16. 北航软件工程硕士_21考研择校 | 北京航空航天大学软件工程怎么样?
  17. 前端性能优化-优化大量图片加载超大图片加载(附懒加载实现方案)
  18. oracle job remove,如何删除oracle Job命令实例
  19. ② 判断语句、循环语句
  20. uni-app 退出app操作

热门文章

  1. 美国ADP就业数据是什么?与非农有何关系
  2. AOP 你想干什么 IOC 你服务什么
  3. 美食博主整本菜譜全記錄
  4. SQL SERVER 数据库概括
  5. 文本生成系列之transformer结构扩展(三)
  6. 他曾经复读才考上三本,如今让华为开出 201 万年薪(其实还拒绝了 360 万 offer)...
  7. 北大助理教授献给「后浪」的建议:奔涌吧,深度学习!
  8. 历史文章之python
  9. ACM金牌选手算法讲解《线性表》
  10. NLP学习—20.WMD paper及代码