《海思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

  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得通本地。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM