当前位置:网站首页 > 技术博客 > 正文

usb转ethernet 芯片



(1)、应用背景

(2)、usb 简介

(3)、网卡 接口

(4)、usb 转net

(5)、usb 网卡驱动实现

(6)、usb 直连通信

----------author:midu

-----------------dateTime:

----------------------:

(1)、应用背景

许多项目在空间设计方面需要节省空间,可以考虑去掉网卡器件,预留usb 外接phy 转换芯片进行网络通信,或是直接usb 协议通信。

现在市面有很多基于usb 接口的链接器可以使用,比如外接usb wifi模块、usb 外接摄像头模组、usb 外接存储盘、外接USB 网络模块(厂家有某绿)等等,丰富了接口应用

(2)、usb 简介

2.1 什么事usb

直译就是通用串行总线。

2.2 usb 协议版本

  • USB 1.0/1.1(low/full speed),传输速率最大为12Mbps
  • USB 2.0(high speed),传输速率最大480Mbps
  • USB 3.0(super speed),传输速率最大5Gbps
协议版本向下兼容
2.3 usb 接口分类
  • Type A,即使我们电脑上的那种接口。
  • Type B,不太常见,比较方正的T型接口,有的嵌入式开发板会用。
  • Type C,现在开始流行起来了,最大的好处就是可以盲插,而不用区分正反。
  • Micro/mini,手机上比较常见。

不管哪种接口,用的线都是4根,只是形状不同而已。

2.4 usb 描述符
谈到USB描述符,不得不说USB最强悍的地方就在这里。一个口可以插很多的设备,可以插U盘、上网卡、音频设备、还有的是复合设备,一个设备插上后可以虚拟出多个设备出来,太强了。
主设备之所以能区分不同的从设备,靠的就是描述符。 于是USB协议里就规定了各种不同的USB描述符。让我们先看一下USB协议里四大描述符之间的关系



设备描述(device description),配置描述符(configrue description),接口描述符(interface description),端点描述符(endpoint description)

2.5 usb 累class

class用来描述设备属于哪种设备,例如音频、键盘、U盘等。设备通过class来确认和加载相应的驱动。class分为device classinterface class。具体的class值以及含义,参考define class。

  • class 包含
    1. class
    1. subclass
    1. protocol

组合在一起,用来指出设备具体功能。

2.6 usb 包packet

      • USB总线上的情形是怎样的?

      • 包是USB总线上数据传输的最小单位,不能被打断或干扰,否则会引发错误。若干个数据包组成一次事务传输,一次事务传输也不能打断,属于一次事务传输的几个包必须连续,不能跨帧完成。一次传输由一次到多次事务传输构成,可以跨帧完成。

        USB包由五部分组成,即同步字段(SYNC)、包标识符字段(PID)、数据字段、循环冗余校验字段(CRC)和包结尾字段(EOP),包的基本格式如下图:




(3)、网卡 接口

如果是转网络,可选usb转网络芯片模块,如文末附图物件;

若是直接usb通信,就无须网络转接头,直接用两头公头连接,usb协议通信

(4)、usb 转net

https://blog.csdn.net/_/article/details/

(5)、usb 网卡驱动实现

5.1 usb 驱动框架

a .主要驱动架构

b. 主机驱动架构

c. 设备端驱动架构

设备控制器驱动

5.2 usb 初始化过程

USB驱动作为一个系统,集成了众多的驱动模块,注册过程非常复杂。从USB系统的角度来说,USB主机驱动主要包含:

       1) USB核驱动

       2) 主机控制器驱动

       3) 集线器驱动

       驱动的加载执行流程如下图所示:

a. USB Core的初始化

   USB驱动从USB子系统的初始化开始,USB子系统的初始化在文件driver/usb/core/usb.c

        subsys_initcall()是一个宏,可以理解为module_init()。由于此部分代码非常重要,开发者把它看作一个子系统,而不仅仅是一个模块。USB Core这个模块代表的不是某一个设备,而是所有USB设备赖以生存的模块。在Linux中,像这样一个类别的设备驱动被归结为一个子系统。subsys_initcall(usb_init)告诉我们,usb_init才是真正的初始化函数,而usb_exit将是整个USB子系统结束时的清理函数。

b. 主机控制器的初始化及驱动执行(以EHCI为例)

c.注册集线器

(6)、usb 直连通信

鸣谢:

https://wenku.baidu.com/view/54b8f334a200a6c30c22590102020740be1ecda8.html

USB协议架构及驱动架构

https://blog.csdn.net/songze_lee/article/details/ usb 协议简介

http://www.42xz.com/soft/3238.html#xzz  usbblyzer 下载地址

https://blog.csdn.net/ZCShouCSDN/article/details/ USB 之三 常用抓包/协议分析工具(Bus Hound、USBlyzer、USBTrace、USB Monitor Pro等)

USB协议基本知识

http://bbs.ntpcb.com/read.php?tid-121943.html usb net pcb

https://www.lulian.cn/product/list-115-cn.html  绿联USB有线百兆网卡

https://www.asix.com.tw/cs/download.php?sub=driverdetail&PItemID=86 驱动代码,AX88772 驱动程序下载

https://blog.csdn.net/weixin_/article/details/

https://blog.csdn.net/u0/article/details/?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase USB网卡 AX88772C 驱动交叉编译

https://www.asix.com.tw/FrootAttach/userguide/How_to_identify_Authentic_ASIX_USB-to-LAN_Products_v100.pdf usb 驱动详解

版权声明


相关文章:

  • 公式编辑器怎么破解2025-09-28 12:01:05
  • c语言编写一个简单加密程序2025-09-28 12:01:05
  • ipopt2025-09-28 12:01:05
  • c程序括号匹配检查2025-09-28 12:01:05
  • c语言中malloc函数的用法2025-09-28 12:01:05
  • sql左外连接怎么写2025-09-28 12:01:05
  • 计算机系统的组成结构有哪些2025-09-28 12:01:05
  • rgb和rgbs2025-09-28 12:01:05
  • http协议通俗理解2025-09-28 12:01:05
  • mysql数据库入门教程2025-09-28 12:01:05