可以和FPGA搭配使用的USB3.0 PHY芯片 通过之前的介绍USB3.0通信-USB3.0协议介绍>,我们大致了解到USB3.0整个协议异常复杂,就连物理层都需要SerDes(FPGA实现的情况...)才可以,所以目前使用USB3.0时,搭档FPGA的最优解就是外置USB3.0 PHY片。...USB3.0 PHY简介 首先我们需要了解PHY具体完成哪些工作以及我利用FPGA能 实现哪些工作才能实现USB通信。...在上图中还看到UTMI和PIPE,这是PHY和controller通信的接口,USB2.0PHY主要使用ULPI和UTMI,USB3.0主要使用PIPE,对于ULPI和UTMI的区别如下: UTMI...区别大概为USB PHY的位置:如果芯片的usb phy封装在芯片内,采用UTMI+的接口。不封装到芯片内的采用ULPI接口,这样可以降低pin的数量。
Vivado工具 在Vivado里,可以指定外部USB Phy的复位信号的来源和极性。 ? 3. USB Phy的复位信号 USB Phy是否需要复位信号,由外部的Phy决定。...一般来说,单板复位后,建议把外部USB Phy复位一次,保证USB Phy处于干净的状态。...如果都使用,外部有两个USB Phy。...使用MIO管脚作为USB Phy复位信号时,可以两个USB Phy共用一个MIO(Shared MIO pin);也可以每个USB Phy使用一个MIO(Separate MIO pin)。...如果找到,会调用Linux的GPIO框架来复位外部USB Phy。 3.2.
从硬件上来说,一般PHY芯片为模数混合电路,负责接收电、光这类模拟信号,经过解调和A/D转换后通过MII接口将信号交给MAC芯片进行处理。一般MAC芯片为纯数字电路。...物理层的芯片称之为PHY。...图8‑9 88X3140/3120原理框图 通过几个PHY片的原理框图可以总结出下面的简化PHY片的原理框图。 ?...图8‑10 PHY简化的原理框图 从上图可知,PHY它包含了多个功能模块,功能模块的多少会因需要的不同而有所增减,比如: 只有10GBase-R、40GBase-R、100GBase-R的PCS需要FEC
一系列相互独立的端点在一起构成了USB逻辑设备,在系统结构中,位于下方红色方框内: 二、端点的分类 每个USB设备都有一个唯一的设备地址,设备地址是设备连接上主机时由主机分配的,主机主要依靠这个设备地址对...USB设备进行访问。...五、端点与管道 1、管道的概念 管道是主机软件(数据缓存区),和USB设备各各端点之间的数据传输连接,他是两者之间通信流的抽象(实际上数据传输是USB总线接口完成)。...1)、“流”指不具有USB定义格式的数据流,流通道中的数据是流的形式,也就是该数据内容不具有USB要求的结构。...2)、“消息”指具有某种USB定义格式的数据流。消息通道与端点的关系同流通道与端点的关系是不同的。
另外,可通过 MDIO 接口对 PHY 芯片进行配置(如PHY芯片寄存器读写),而 PHY 和 MAC 通过 MII/RMII 进行数据传输。...-> phy = phy_device_create(mdio, addr, phy_id, 0, NULL); -> else phy = get_phy_device...kobject、ktype的设置 -> irq_of_parse_and_map(child, 0); //将中断解析并映射到linux...->dev); // 注册到linux设备模型框架中 -> if (!...网卡 fec 和 Phy 的协作 在 linux 内核中,以太网 mac 会被注册成 struct net_device,phy 芯片会被注册成 struct phy_device。
一、phy执行的枚举状态定义 enum phy_state { PHY_DOWN=0, //down 如关闭网卡,ifconfig eth0 down PHY_STARTING, //1 PHY_READY..., //2 phy设备注册成功 PHY_PENDING, //3 phy芯片挂起 PHY_UP, //4 开启网卡,ifconfig eth0 up PHY_AN, //5 网卡自动协商 PHY_RUNNING...,就强制执行自动协商(读取phy寄存器、并设置通讯速率、半双工或全双工模式、等) PHY_CHANGELINK, //9 当连接时,会换到PHY_RUNNING,当断网时,会切到PHY_NOLINK..., phy_state_machine); //初始化一个中断顶版本的延时工作队列,用来处理phy状态机 phy_device_register //phy设备注册 device_add...; break; case PHY_READY: phydev->state = PHY_UP; //所以到这里, 设置phy的状态为 PHY_UP ----3----- break
Linux 内核源码:include\linux\usb.h Linux 内核源码:drivers\hid\usbhid\usbmouse.c 1....BUS/DEV/DRV 模型 "USB 接口"是逻辑上的 USB 设备,编写的 usb_driver 驱动程序,支持的是"USB 接口": USB 控制器或 Hub 识别出 USB 设备后,会创建、...注册 usb_device usb_device 被"drivers\usb\core\generic.c" 驱动认领后,会选择、设置某个配置 这个配置下面的接口,都会分配、设置、注册一个 usb_interface...左边的 usb_driver 和右边的 usb_interface 如果匹配,则调用 usb_driver.probe 2....接口函数 在 USB 设备驱动程序中,能使用的 USB 函数都在这个头文件里:include\linux\usb.h。
DRD driver DRD驱动在usb/dwc3 1.1 dts dwc3@44000000 { /* Compatible ID used by the Linux driver for this...mode(dr_mode),这可以是otg、host或者device 3)然后调用 dwc3_core_init()初始化usb PHY interface和usb PHY,usb PHY的初始化参照第...= "linux,extcon-usb-gpio", }, { /* sentinel */ } }; static struct platform_driver usb_extcon_driver..., }; 1)首先根据"linux,extcon-usb-gpio"进行dts和driver的匹配,执行usb_extcon_probe() 2)在 usb_extcon_probe()中,先调用devm_extcon_dev_register...3)对于某些类型的PHY,必须要进行初始化,这就需要配置dts设置usb-phy或者phy-names。
1.3 适用范围 表 1-1: 适用产品列表 内核版本 驱动文件 Linux-4.9 drivers/usb/* Linux-5.4 drivers/usb/* 2 模块介绍 2.1 模块功能介绍...sunxi_udc_dma.c │ └── sunxi_udc_dma.h └── usbc ├── usbc.c ├── usbc_dev.c ├── usbc_i.h └── usbc_phy.c...2.5 驱动框架介绍 Linux 内核提供了完整的 USB 驱动程序框架。...USB 总线采用树形结构,在一条总线上只能有唯一的主机设备。Linux 内核从主机和设备两个角度观察 USB 总线结构。...图 2-11: linux-4.x usb gadget 配置选择 2.6.2 linux-4.x/linux-5.4 USB Gadget 配置流程 Linux-4.x/Linux-5.4 使用 configfs
usb_phy0>; }; usb_phy0: phy0 { compatible = "ulpi-phy"; #phy-cells = ; reg = ...= ci->platdata->usb_phy; 940 } else { 941: ci->phy = devm_phy_get(dev->parent, "usb-phy"); 942...ci->usb_phy = devm_usb_get_phy(dev->parent, USB_PHY_TYPE_USB2); 这些东西不能直接添加在usb中,我想是因为ulpi的寄存器不能映射在...需要稍微修改一下, /include/ "system-conf.dtsi" /{ aliases { usb0 = &usb0; }; usb_phy0: usb_phy@0 { compatible.../include/ "system-conf.dtsi" /{ aliases { usb0 = &usb0; }; usb_phy0: usb_phy@0 { compatible = "
摘要:什么是phy为什么要熟悉RJ45网口网络七层协议两个模块进行通信什么是MDIO协议MDIO的作用 MDIO没那么重要MDIO读写时序为什么说读取的phy最多32个什么是phy物理层芯片称为PHY、...Linux系统的arm芯片想要网络,可以直接通过mac和网卡芯片连接获取,这时候就需要通过RGMII接口或者MII接口 和 MDIO 连接网卡芯片。...STA设备通过MDIO接口与PHY通信。STA(StaTIon Management)为主控设备,比如MCU、MAC、ONU等。PHY为从设备。一个STA最多管理32个PHY。...为什么说读取的phy最多32个 因为mdio中读取的phy只提供5bit的字节即最高11111 转成十进制就是31即0-31就是32个,但这是从读取的方式判断的,而mdio读取是依照phy芯片本身地址空间就...以上内容是海翎光电的小编看了大量的参考文献和一步步的实践总结的经验,通过实践,把每一层都走一遍,把变压器去掉,把phy去掉,linux系统的网卡函数看了一遍,phy芯片的手册有看了很多。
一个以太网PHY是一个芯片,可以发送和接收以太网的数据帧(frame)。 也就是说,PHY是网络结构中的最底层,物理层。PHY芯片是实现物理层这一层功能的芯片。...但一般来说,PHY的功能是单独做到一个PHY芯片内部的,集成了PHY的网络设备芯片(CPU、交换机芯片等等)一般也有接口连接单独的PHY。...因此,在一般的网络设备电路设计中,需要为PHY芯片设计电路。PHY的芯片厂家为了满足大部分的应用场景,会在PHY上面提供很多接口协议,以供设计人员使用。...由于一个PHY芯片的功能可能会比较多,因此,在PHY芯片的应用中,有一点很重要的就是要选择合适的接口来满足自己的应用。 PHY芯片的接口介绍 MII接口 MII是连接PHY和MAC的总线。...当PHY接收数据时的流程反之。 PHY的功能之二: CSMA/CD的部分功能 PHY还有个重要的功能就是实现CSMA/CD的部分功能。
/usb.h> 4.2 USB设备注册框架示例 #include linux/init.h> #include linux/module.h> #include linux/usb.h> //定义...#include linux/init.h> #include linux/module.h> #include linux/usb.h> #include linux/usb/input.h>...(dev,size,GFP_ATOMIC,&buf_phy); /*分配新的urb,urb是usb设备驱动中用来描述与usb设备通信所用的基本载体和核心数据结构*/ myurb = usb_alloc_urb...(myurb); usb_free_coherent(dev,size,buf, buf_phy); printk("USB 设备释放成功!.../init.h> #include linux/module.h> #include linux/usb.h> #include linux/sched.h> #include linux/slab.h
通过扫描以下目录获取物理节点所有 USB 设备: /sys/bus/usb/devices/usb* /sys/bus/usb/devices/usb*/$busnum-* 从该文件系统收集某一个设备的主要信息如下..."level": 1, "manufacturer": "QEMU", "port": 0, "prodid": "0001", "product": "QEMU USB...: 产品 serial: USB 硬件设备序列号 ,例如 0000:00:01.2 定位方法# 定位某一个 USB 设备的方法有两种: busnum + devnum idVendor + idProduct...设备类bDeviceClass、bDeviceSubClass、bDeviceProtocol By USB 中文网 USB设备描述符中的idVendor、idProduct和bcdDevice By...USB 中文网 USB 硬件设备的序列号 By IBM 注:本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。
、USB3.0的PHY、中断等。..._otg>, usb3>; phy-names = "usb2-phy", "usb3-phy"; // USB PHY phy_type = "...主机控制器后状态切换为suspend时关闭PHY的电源 phy_power_on(dwc->usb2_generic_phy) phy_power_on(dwc->usb3...控制器硬件,主要流程如下: (1)获取USB控制器IP的版本,便于后续进行不同的配置,USB控制器不同IP版本之间有差别,将Linux内核版本号写入USB控制器寄存器,以便发现某些版本下的bug (2)...dwc3_writel(dwc->regs, DWC3_GUID, LINUX_VERSION_CODE) dwc3_soft_reset // 软件复位USB控制器
[ 0.513302] usb usb1: New USB device found, idVendor=1d6b, idProduct=0002 [ 0.513303] usb usb1...Controller [ 0.513304] usb usb1: Manufacturer: Linux 3.10.0-327.el7.x86_64 xhci-hcd [ 0.513305...] usb usb1: SerialNumber: 0000:00:14.0 [ 0.518700] usb usb2: New USB device found, idVendor=1d6b,...0.518702] usb usb2: Product: xHCI Host Controller [ 0.518702] usb usb2: Manufacturer: Linux 3.10.0...] usb 1-4: New USB device found, idVendor=413c, idProduct=301a [ 1.040348] usb 1-4: New USB device
在上一章分析完USB总线驱动程序后, 接下来开始写一个USB驱动: 本节目的: 将USB鼠标的左键当作L按键,将USB鼠标的右键当作S按键,中键当作回车按键 参考/drivers/hid/usbhid/...: usb_deregister(struct usb_driver *driver); 注册一个usb_driver驱动,然后内核会通过usb_driver的成员.id_table函数匹配一次USB设备...释放input_device 3.5在出口函数中 1)通过usb_deregister ()函数注销usb_driver结构体 4.代码如下: #include linux/kernel.h> #include...linux/slab.h> #include linux/module.h> #include linux/init.h> #include linux/usb/input.h> #include...linux/hid.h> static struct input_dev *myusb_mouse_dev; //input_dev static char *myusb_mouse_buf
Linux3.11版本引入了基于configfs的usb gadget configfs。.../bcdDevice # USB 1.1: 0x0110 # USB 2.0: 0x0200, USB 2.1: 0x0210, USB 2.5: 0x0250 # USB 3.0: 0x0300...(gadget_strings, gadget_info); [include/linux/usb/gadget_configfs.h] #define USB_CONFIG_STRINGS_LANG(...主要的工作流程为: 分配一个config_usb_cfg1结构体,该结构体包含了usb_configuration结构体,保存了该USB设备的配置信息。 设置USB设备的配置描述符的某些选项。...调用UDC驱动接口usb_udc_connect_control连接USB主机控制器,这样USB主机就能识别并枚举USB设备。
>; + phy-mode = "mii"; + allwinner,use-internal-phy; + allwinner,leds-active-low; +...[ 0.000000] Booting Linux on physical CPU 0x0 [ 0.000000] Linux version 5.2.0-licheepi-zero+...[ 0.037892] mc: Linux media interface: v0.10 [ 0.037937] videodev: Linux video capture interface...scheduler mq-deadline registered [ 0.095798] io scheduler kyber registered [ 0.096744] sun4i-usb-phy...[ 1.308771] usb_phy_generic usb_phy_generic.0.auto: usb_phy_generic.0.auto supply vcc not found, using
当SDX55被应用于工业路由器或CPE时,基本都是采取以下连接方案:客户Linux设备通过usb或pcie连接SDX55,使用AT或QMI方式进行拨号,Linux上获取公网ip进行上网,来自Linux的数据流仅可通过...USB或pcie方式传输到modem侧,进一步传输到网络侧,完成数据交互。.../pcie_mhi0; (3) usb0/pcie_mhi0将数据通过usb/pcie转发给modem; (4) modem将数据发送给internet 但是通常CPE厂商考虑到更高的速率和更好的性能...,会将控制通路和数据通路进行区分,如控制通路使用USB,而数据通路走PCIE,这就需要在主控和Modem间额外一个PCIE PHY芯片,如RTL8111H、RTL8125、AQC107等。...整体框图和数据流方案如下: (1)modem通过usb与host设备的主控进行连接,用于指令控制(也可作为host的wan口,用于数据传输); (2)增加一个支持PCIE协议的PHY 芯片作为
领取专属 10元无门槛券
手把手带您无忧上云