相關命令使用:
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得通本地。