简介
CH397 是一款高集成度、低功耗的 USB 网卡芯片,内置青稞 RISC-V 处理器、符合 USB2.1 协议规 范的高速 USB 控制器及收发器 PHY、以及符合 IEEE802.3 协议规范、支持 10M/100M 网络的以太网 MAC+PHY。已适配各类台式电脑、笔记本电脑、平板电脑、游戏机等的标准USB主机接口,用于通过 USB 扩展以太网接口,实现有线网络的稳定连接通讯。为消费电子类、工业类等产品使用USB扩展有线网提供一个外围电路精简、设计简单、容易使用的有线联网解决方案。
U-BOOT可看做是嵌入式Linux系统的bootload程序,当嵌入式Linux系统板处于uboot模式下时,可通过网络工具tftp实现内核镜像下载、设备树文件下载或者使用nfs进行文件系统挂载等功能。
U-Boot中移植CH397 USB网卡的驱动代码,流程如下:
操作流程
1、拷贝 CH397 UBOOT驱动源码 ch397.c 至 drivers/usb/eth 目录下
(发邮件到:tech@wch.cn 获取)
2、在 drivers/usb/eth/Makefile 文件中添加此驱动文件编译选项
obj-$(CONFIG_USB_ETHER_CH397) += ch397.o
3、修改 drivers/usb/eth/usb_ether.c,其 prob_dev 结构体中添加CH397驱动文件的相关API
#ifdef CONFIG_USB_ETHER_CH397
{
.before_probe = ch397_eth_before_probe,
.probe = ch397_eth_probe,
.get_info = ch397_eth_get_info,
},
#endif
4、在 include/usb_ether.h 添加CH397函数功能定义,此处为编译需要,必要添加
void ch397_eth_before_probe(void);
int ch397_eth_probe(struct usb_device *dev, unsigned int ifnum,
struct ueth_data *ss);
int ch397_eth_get_info(struct usb_device *dev, struct ueth_data *ss,
struct eth_device *eth);
5、编译生成 u-boot.bin 后烧录入开发板中启动,进入 uboot 界面,插入CH397,执行 usb start 可见如下信息:
=> usb start
starting USB...
USB0: Port not available.
USB1: USB EHCI 1.00
scanning bus 1 for devices... 3 USB Device(s) found
scanning usb for storage devices... 0 Storage Device(s) found
scanning usb for ethernet devices... 1 Ethernet Device(s) found
再执行usb tree或者usb info则可见CH397 USB相关信息,接下来即可正常使用。