linux系统 RTL8152B网卡驱动移植-USB转网卡

本文描述了在imx6q上对百兆网卡RTL8152B进行移植的过程,有相关的疑惑的可参考本文进行移植。

感谢国芯科技的范工 y_fan
的耐心指点,RTL8152B相关移植的资料比较少,范工给予重要调试指导。在此表示非常感谢!他写了很多不错的文章:比如
<华为海思3518EV300工作笔记二:开发板支持USB 网络适配器> 这个也非常有参考价值

1.移植环境:

系统:Linux4.1.15 (其它版本也一样的)
板子:imx6q USB:在板子的usb-otg+rtl8152芯片+RG45
驱动:内核里自带r8152.c,如果出现其它问题,可换最新的驱动,目前可能是r8152-2.14.0,建议换,避免出现没MAC的情况。

RTL8152最新驱动我已上传,没有积分的可私信或留下邮箱
https://download.csdn.net/download/u013921164/13084041

2.内核的配置

RTL8152驱动的勾选

make menuconfig

在配置界面中搜索 ;

/8152

勾选相应的选项;

Symbol: USB_RTL8152 [=y]      
   │     -> Device Drivers                                               
   │       -> Network device support (NETDEVICES [=y])                │ 
   │          -> USB Network Adapters (USB_NET_DRIVERS [=y])   

linux系统 RTL8152B网卡驱动移植-USB转网卡_第1张图片

USB2.0 或者3.0驱动的配置

这块参考范工的博文修改的 https://blog.csdn.net/qq_22182835/article/details/89457512

→ Device Drivers → USB support →<*> EHCI HCD (USB 2.0) support 

可选 EHCI HCD (USB 2.0) support 或 EHCI HCD (USB 3.0) support3.0是向下兼容的;然后

DesignWare USB2 DRD Core Support
	DWC2 Mode Selection ->host only mode

usb配置成host模式,不然后面肯定调试不通;
linux系统 RTL8152B网卡驱动移植-USB转网卡_第2张图片

3.设备树的修改

手里得板子,8152接的usb-otg,开始得时候lsusb不显示usb设备;
我担心是硬件得问题(板子自己做的)为此,我去某宝,买了8152的usb转网卡测试,插到usb-hub接口可以用,接到usb-otg接口无法使用,这样就确定了驱动没问题,可能是usb-otg这块设备树文件没有配置好,或者压根就是硬件板子有问题。

imx6q设备树中的部分描述为:

&usbotg {
     vbus-supply = <®_usb_otg_vbus>;
     pinctrl-names = "default";
     pinctrl-0 = <&pinctrl_usbotg>; or pinctrl-0 = <&pinctrl_enet1>;
     disable-over-current;
     srp-disable;
     hnp-disable;
     adp-disable;
     status = "okay";
 };
 .....
         reg_usb_otg_vbus: regulator@0 {
             compatible = "regulator-fixed";
             reg = <0>;
             regulator-name = "usb_otg_vbus";
             regulator-min-microvolt = <5000000>;
             regulator-max-microvolt = <5000000>;
             gpio = <&gpio3 22 0>;
             enable-active-high;
             vin-supply = <&swbst_reg>;
         };
 .........
         pinctrl_usbotg: usbotggrp {
             fsl,pins = <
                 MX6QDL_PAD_GPIO_1__USB_OTG_ID       0x17059
             >;
         };

​设备树的修改跟硬件图是相关的;
usbotg+8152驱动移植,设备这块只需要考虑usb_otg_vbus引脚和usb_otg_id引脚usb_otg_vbus 这个引脚看图纸怎么接的,如果我的板子就是给从设备供电;那正点原子的usb-otg供电部分就是直接外部电源5v提供;usb_otg_id:该引脚需要复用,该引脚控制usbotg的模式,是host模式的话,usb_otg_id需拉低

  dmesg |grep usb
 我记得会提示:usb_otg_vbus is disabing

我移植过程的问题:

lsusb 一直找不到8152的usb;原因在于MX6QDL_PAD_GPIO_1__USB_OTG_ID 0x17059其中 0x17059 的第14位 15位 描述的是100K上拉
linux系统 RTL8152B网卡驱动移植-USB转网卡_第3张图片
linux系统 RTL8152B网卡驱动移植-USB转网卡_第4张图片

问题就在这,把usb_otg_id引脚拉低 即设置为usb host模式即可

    pinctrl_usbotg: usbotggrp {
             fsl,pins = <
                 MX6QDL_PAD_GPIO_1__USB_OTG_ID       0x13059
             >;
         };

4.测试

然后lsusb 即出现相关设备
linux系统 RTL8152B网卡驱动移植-USB转网卡_第5张图片

ifconfig 即出现eth1
linux系统 RTL8152B网卡驱动移植-USB转网卡_第6张图片

ifconfig eth1 xxx.xxx.xxx.xx设置下IP,即可ping通。

你可能感兴趣的:(驱动移植,linux,内核,嵌入式,驱动程序)