内核:Linux 4.14.98 Modem:展锐UDX710 驱动:LAN78XX PHY驱动 USB PHY:LAN7800
将展锐UDX710 Type A(USB3.0)配置为主模式,确保可以识别从设备LAN7800 PHY:
将LAN7800 USB口连接到UDX710的Type A(USB3.0)口,然后将RJ45连接到PC的网口供PC上网使用。
在内核中按照如下打开编译选项开启内核LAN78XX驱动支持,在kernel目录下执行make menuconfg,然后依次选中Devices_Drivers:
-> Network device support:
-> USB Network Adapters :
-> Microchip LAN78XX Based USB Ethernet Adapters:
将Microchip LAN78XX Based USB Ethernet Adapters设置为< M >后退出并保存会生成.config,将现在的.config与修改menuconfig之前生成的.config进行比较,把差异项合入kernel4.14_orca/arch/arm64/configs/sprd_orca_defconfig,然后编译内核即可,会生成.ko文件。(在menuconfig修改后,需执行make mrproper,方可重新编译kernel) 差异项:
CONFIG_USB_NET_DRIVERS=y
CONFIG_USB_LAN78XX=m
将LAN7800 USB端插入UDX710的Type A(USB3.0)口,UDX710将可以识别设备LAN7800,我们可以通过如下方式去验证设备识别和驱动加载:
并可以通过lsusb查询到模块usb总线上已识别到LAN78XX PHY芯片:
注:为什么是eth0网卡?因为驱动在加载到LAN7800时会有如下log打印,代表LAN7800枚举出的网卡名是eth0:
可以通过如下命令创建网桥bridge0:
brctl addbr bridge0
创建成功后可以通过brctl show查看:
ifconfig bridge0 192.168.255.1
dnsmasq --conf-file=/etc/dnsmasq.conf --dhcp-leasefile=/var/run/dnsmasq.leases --pid-file=/var/run/dnsmasq.pid --resolv-file=/etc/resolv.conf -i bridge0 -I lo -z --dhcp-range=bridge0,192.168.255.20,192.168.255.60,255.255.255.0,43200 --dhcp-option-force=6,192.168.255.1 --dhcp-script=/bin/dnsmasq_script.sh
可以看到从UDX710到LAN7800数据是通路的,反过来亦然,目标达成。完结撒花。
从上面的测试结果来看,我们的LAN7800已经调试成功,整个数据通路是没有问题的。暂时不做外网测试,如果小伙伴们有需要的话,只需要将UDX710的拨号网卡加入到网桥再拨号,LAN7800也可以访问外网。