原因
官方SDK里的ETH接口是RGMII的,而本硬件是RMII的,需修改uboot和kernel的配置
解决方法
参考文章
- uboot配置方法13519v101的uboot的RTL8201百兆网卡配置
- uboot配置方法2:Hi3519AV100 调试系列
——网络RGMII改为RMII - 修改kernel方法:Hi3519V101(之) 烧写uboo kernel rootfs
跑起来之后网络网卡问题
解决步骤
1. 修改uboot
1.1 配置复用寄存器
打开osdrv/tools/pc/uboot_tools/Hi3519V101-DMEB-uboot-DDR3_1866M_32bit_1GB-A7_792M-A17_930M-BUS_200M.xlsm
并开启宏功能,配置后生成reg bin
1.2 合并reg bin和uboot
cd osdrv/tools/pc/uboot_tools
cp osdrv/pub/image_glibc_big-little/u-boot-hi3519v101.bin ./u-boot.bin
chmod u+x mkboot.sh
#修改复用寄存器并生成"reg bin"
./mkboot.sh reg_info.bin u-boot-hi3519v101-rmii.bin
1.3 烧录uboot
1.4 进入uboot后进行一定操作
setenv ipaddr '192.168.1.2'
setenv serverip '192.168.1.3'
setenv gatewayip '192.168.1.1'
saveenv
#此时无法ping成功,但需执行ping,方可执行mii命令
ping 192.168.1.3
mii wirte 0 0 0x8000
mii read 0 0
mii dump 0 0
mii dump 0 1
#此时将可联网成功
tftp
2 修改kernel
2.1 修改dts
修改osdrv\opensource\kernel\linux-3.18.y\arch\arm\boot\dts\hisi-hi3519v101-hmp-demb.dts
文件(可由上层目录的Makefile看出使用的是hmp-demb.dts)
-- phy-mode = "rgmii";
++ phy-mode = "rmii";
原理分析
打开Hi3519V101_PINOUT_CN.xlsx
中的3.管脚复用寄存器
页,搜索rmii
,找到rmii和rgmii的冲突管脚80,于是需修改muxctrl_reg80
寄存器为3,让该引脚的功能为RMII_CLK
排查过程
ifconfig
无任何信息,ifconfig -a
显示没有ip
ifconfig
ifconfig -a
eth0 Link encap:Ethernet HWaddr FE:96:46:59:24:09
BROADCAST MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Interrupt:57
lo Link encap:Local Loopback
LOOPBACK MTU:65536 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
设置网卡配置提示: link is not ready
ifconfig eth0 192.168.1.10 netmask 255.255.255.0 up
IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
查询网卡信息
dmesg | grep -i eth
得到网卡信息
hi_gmac_v200 10050000.ethernet (unnamed net_device) (uninitialized): using random MAC address fe:96:46:59:24:09
higmac: ETH MAC supporte CCI.
ETH: rgmii, phy_addr=1
说明默认的ETH接口是RGMII的,而本硬件是RMII的,需修改uboot和kernel的配置