一、设备简介
我采用的是AX88772B USB 2.0转10/100M百兆以太网设备;
AX88772B是一款高集成度且性能卓越的低功耗USB 2.0转10/100M百兆以太网控制芯片,可为各类应用增加低成本、小封装、即插即用的百兆以太网连网特性,可用于台式电脑、笔记本电脑、超便携电脑、托架/端口复制器/扩展坞、游戏机、智能家居及任何有USB接口的嵌入式设备。
AX88772B提供用于连接USB主机侧并符合USB 1.1/2.0规范的USB端口,支持基于IEEE802.3 和IEEE802.3u规范的10/100M以太网功能并内置网络封包缓存SRAM,另外集成10/100M以太网PHY,从而简化了系统设计。
更多信息请参照官网:https://www.asix.com.tw/cn/product/USBEthernet/High-Speed_USB_Ethernet/AX88772B
二、设备适配
将设备插入主机,可以获取到VID和PID:
一般这些有名的厂商的设备都会在linux中支持的,我们直接进内核源码目录搜索以下:
果然找到了这样的设备,这就说明内核已经支持,我们现在只需要将这个接口的驱动编译进内核或者以模块的方式加载进内核就可以了,
继续查看Makefile:只需要将这个宏定义CONFIG_USB_NET_AX8817X打开即可 ,至于为什么asix.o,这是因为上文搜索出来的device信息就是在asix_device*()
打开make menuconfig
注意这两个信息,symbol(USB_NET_AX8817X) ,location和depend ,进入location将这些宏定义打开
→ Device Drivers
→ Network device support
→ USB Network Adapters
然后按住shit+?来查看这一行的信息
那就打开这个,我这里把他编译成了M
之后会到内核顶层执行模块编译make modules ,后续将asix.ko靠近板子
三、加载测试
执行insmod asix.ko 注册这个接口驱动,
插入设备到usb口之后:
好像可以了,将其枚举上来吧,然后再看看能不能ping通电脑主机