《海思3521D —— 调试PHY芯片:ifconfig:SIOCGIFFLAGS:No such device》

相关命令使用:

  ifconfig -a  检查所有的网卡参数

  ifconfig eth0 up  启动eth0

  setenv  PHY_addr  2   在uboot模式下设置phy地址

  setenv mdio_intf rmii   在uboot模式下设置phy得接口

 

问题:

  根据SDK里面的默认配置,编译出来的uImage中。

  # ifconfig  -a

  只看到lo,并没有看到eth0

  # ifconfig eth0 up

  ifconfig:SIOCGIFFLAGS:No such device

 

硬件相关:

  现在核心板PHY芯片用的是:smsc 8710A81745-A2(使用的是mii)

  但是海思SDK默认的PHY芯片是:RTL8211EG

 

海思网卡相关:

  海思网络部分物理上看一般是MAC连接PHY(就是8710)再连接网络变压器再到RJ45 从数据通路上看, MAC是海思芯片内部的模块,通过MDIO来设置PHY(读写PHY的寄存器), 通过MII/RMII/RGMII接口(3531都支持)来和PHY交换网络数据 通常情况下, 海思的linux网络驱动基本都是好的,要修改的一般就是PHY地址和使用MII/RMII/RGMII接口中的哪一种,这个在linux config时应该都可以选 另外, 要注意一下管脚复用, 一般uboot配网络时应该都把复用关系改好了,只要后面不要再改变就好了 3531有两个MAC, 两套PHY接口, 一套MDIO接口(有点像I2C, 可以读写多个PHY)。

  可以查看海思的官方手册外围设备驱动指南。里面有相关的一些网卡配置。

 

修改步骤:

  Hi3516A 的GMAC 模块支持PHY 接口模式有rgmii、rmii 和mii,发布包中默认配置rgmii,若需配置成rmii 或mii,需要在boot 和kernel 下修改配置

 

  1. U-boot 下通过环境变量设置

  setenv mdio_intf mii 或者 setenv mdio_intf rmii

  setenv  PHY_addr  2

  或者直接修改源码:

U-boot下可通过更改U-boot配置文件中宏定义HISFV_PHY_U的值来配置不同的PHY地址。Hi3516CV500的U-boot包含以下配置文件。
include/configs/hi3516cv500.h(根据不同板卡不同头文件)

 

  2.Kernel 下通过menuconfig 配置

  Device Drivers

  [*] Network device support --->

  [*] Ethernet driver support --->

  <*> hieth gmac family network device support --->

  (6) hieth-gmac phy0 interface mode

  其中,1 代表mii,5 代表rmii,6 代表rgmii,若管脚复用有变化,请重新配置管脚复用关系。管脚复用也需要注意,这里没有出现管脚复用问题也就是rx和tx的管脚是否配置正确

 

  以上是查阅相关资料得到的信息。

  根据这些信息,我进入menuconfig中尝试修改,但是我的menuconfig中并没有hieth-gmac phy0 interface mode和修改地址的选项。

  因此cd arch/arm/boot/dts/hi3521d-demb.dts。

  将phy-mode =“rgmill”这边并没有修改,因为我手中得PHY本身就是支持千兆。

  &mdio{

    ethphy: ethernet-phy@1{

      reg = <1>;  

    };

  };

  修改成

  &mdio{

    ethphy: ethernet-phy@2{    //这个具体目前不知道修改什么,反正看到1,感觉就要改成2

      reg = <2>;  //修改phy的地址

    };

  };

  之后编译,启动内核。ifconfig -a就可以看到eth0

  ifconfig eth0 up

  ifconfig eth0 192.168.100.70

  ping 192.168.100.6

  就可以ping得通本地。

 

posted @ 2019-10-18 14:54  一个不知道干嘛的小萌新  阅读(6521)  评论(0编辑  收藏  举报