导航

    全志在线开发者论坛

    • 注册
    • 登录
    • 搜索
    • 版块
    • 话题
    • 在线文档
    • 社区主页

    A40i应用笔记 | 3种常见的网卡软件问题以及排查思路

    飞凌嵌入式专区
    1
    1
    1141
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • Forlinx
      Forlinx LV 5 最后由 编辑

      在飞凌嵌入式OKA40i-C开发板上虽然只有一个网口,但全志A40i-H处理器本身是有两个网络控制器的,因此在飞凌嵌入式提供的产品资料中提供了双网口解决方案。有的工程师小伙伴在开发过程中会遇见一些网卡的设计问题,今天小编为大家分享3种在使用OKA40i-C开发板时容易遇到的网卡软件问题以及排查思路。

      一、问题分析:

      问题描述1——
      以太网初始化报错 No phy found

      在执行ifconfig eth0 up命令时,出现"No phy found"异常log。
      c3c33840-09c8-4b87-85b3-646f74b63b15-image.png

      问题分析:
      出现"No phy found",常见原因是供给phy使用的25M时钟异常,导致phy工作不正常,gmac驱动通过mdio接门也读不到phy的设备信息。

      或者MDIO引脚配置不正确或者phy地址不正确;再就是MDIO没做上拉电阻,GMAC读取不到phy设备信息,用示波器量一下MDIO波形是否正确;再或是phy芯片复位失败,需要更换phy芯片复位上拉电阻。
      a7130211-53fb-44f4-8243-37d59977fdb6-image.png

      排查步骤:
      (1) 检查phy供电是否正常;
      (2) 检查phy使用的25M时钟(Soc ephy25M或外部晶振)是否正常;
      (3) 检查phy-mode是否按板级实际情况配置(mii/rmii/rgmii);
      (4) 检查MDIO是否有上拉电阻;
      (5) 检查MDIO引脚配置是否正确;
      (6) eMAC phy地址是否和硬件一致;
      (7) 检查复位上拉电阻是否和原理参考方案一致。

      MDIO通讯正常验证:
      使用phytool工具读取0x02 0x03寄存器 是否正确读取PHY芯片ID,读取成功,代表MDIO通讯正常。

      问题描述2——
      以太网初始化报错NO SUCN DEVICE

      执行ifconfig -a/ifconfig eth0/ifconfig eth0 up命令,找不到eth0设备。
      11bbc6c9-3025-4559-93c9-3db2e1d5ffef-image.png

      问题分析:
      以太网模块配置未生效或存在GPIO冲突。

      排查步骤:
      步骤1:抓取内核启动log,搜索"gmac"关键字段,检查gmac驱动是否probe成功;
      步骤2:若内核启动log显示mac控制器probe失败,常见原因是GPIO资源冲突导致。

      解决方法:
      GPIO冲突会有报错信息,根据报错信息,查看GPIO冲突引脚。

      查看以太网模块是否配置。
      b7c4d305-0cc9-4420-bc04-434d9a102b09-image.png

      问题描述3——
      以太网初始化报错Initialize hardware error
      执行ifconfig eth0 up命令,出现"Initialize hardware error"异常log。

      问题分析:
      出现"Initialize hardware error",一般是由于phy没有输出RX CLK至MAC控制器,导致MAC控制器内部soft reset失败,常见原因是phy供电异常或25M时钟异常;或者是检查数据引脚的时钟是否正确,RMILL RX CLK TX CLK 是否是正确时钟。
      5857b373-1a05-4594-b192-a129d5085173-image.png
      8fdf023e-ade2-457a-bd56-18a5a01a1d7e-image.png

      排查步骤:
      用示波器抓取rx_clk时钟波形,查看是否保持25M时钟稳定,如果出现25M/2.5M 来回跳动。即MAC与phy未link成功。

      解决方法:
      软件上可通过在phy复位之后,设置寄存器0 固定为100M全双工,可link成功。目前可这样解决问题:
      在drivers/net/ethernet/allwinner/sunxi-gmac.c 中 geth_phy_init函数中 phy_connect_direct 之前加入phy_write(phydev, 0x0, 0x2100)。

      以上是我们在OKA40i-C开发板的使用过程中常见网卡设计问题,有些可能是因为大家在参考方案时出现了配置问题,或者是因为芯片输出的信号不正常导致。大家在参考OKA40i-C开发板的双网口方案时,可以查看本文章整理的问题点,说不定就是您现在项目中遇见的bug。

      接下来,小编将给大家介绍一些常用的网卡软件问题对应的排查手段。

      二、排查手段:

      这些排查手段可以帮助您在调试phy时有一个基本的调试思路,提到的一些工具可以帮助您快速定位并且解决网卡问题。

      (1) 检查menuconfig及dts以太网配置是否打开;
      (2) 检查phy-mode配置是否与PHY和GMAC之间的物理接口匹配,如rgmii、rmii等;
      (3) 检查GPIO配置是否正确,如IO复用功能、驱动能力等;
      (4) 使用phytool工具读取phy ID 验证MDIO是否正确。

      如下图示例,能够正常读取JL11x1的phy ID则代表MDIO通讯正常。
      4cd65fb3-cbae-4a42-96b8-c4469215584e-image.png

      使用phytool工具读取phy状态寄存器,查看phy芯片状态。以JL11x1为例,如0x01状态寄存器读取值为0x786d,说明link成功并且工作正常。
      d294160c-43c0-4151-a797-7f7b504130ad-image.png

      以上就是小编为大家整理的关于OKA40i-C开发板双网口方案的网卡软件问题分析以及排查方向,希望能够为您的项目开发有所帮助。

      1 条回复 最后回复 回复 引用 分享 1
      • 1 / 1
      • First post
        Last post

      Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号

      行为准则 | 用户协议 | 隐私权政策