struct usb_hcd *usb_create_hcd (const struct hc_driver *driver, struct device *dev, const char *bus_name) { struct usb_hcd *hcd; hcd = kzalloc(sizeof(*hcd) + driver->hcd_priv_size, GFP_KERNEL); dev_set_drvdata(dev, hcd); ... // 初始化hcd下边的usb_bus,为后边将其加入到usb...
形象得说,USB的bus驱动相当于铺出一条路来,让所有的信息都可以通过这条USB通道到达该到的地方,这部分工作由usb_core来完成。当USB设备接到USB控制器接口时,usb_core就检测该设备的一些信息,例如生产厂商ID和产品的ID,或者是设备所属的class、subclass跟protocol,以便确定应该调用哪一个驱动处理该设备。里面复杂细节...
从主机侧看usb驱动可分为四层:usb主机控制器硬件底层、usb主机控制器驱动、usb核心和usb设备驱动。 在主机侧要实现的驱动主要分为两类:usb主机控制器驱动和usb设备驱动。主机控制器驱动负责控制插入其中的usb设备,usb设备驱动主要负责usb设备和主机的通信。 usb核心向上为设备驱动提供编程接口,向下为usb控制器驱动提供...
* Units: microseconds/frame. * Limits: Full/low speed reserve 90%, * while high speed reserves 80%.*/intbandwidth_int_reqs;/*number of Interrupt requests*/intbandwidth_isoc_reqs;/*number of Isoc. requests*/#ifdefCONFIG_USB_DEVICEFSstructdentry*usbfs_dentry;/*usbfs dentry entry for the b...
kvm: 这个子目录包含了 KVM(Kernel-based Virtual Machine)虚拟化技术相关的工具。KVM 是 Linux 内核提供的一种基于硬件虚拟化扩展的虚拟化解决方案,这里存放了与 KVM 相关的管理和监控工具。 usb: 在这个子目录中,你可以找到与 USB 子系统相关的工具。其中包括用于调试和测试 USB 设备、管理 USB 接口等功能。
在Linux kernel源码目录中driver/usb/usb-skeleton.c为我们提供了一个最基础的USB驱动程序。我们称为USB骨架。通过它我们仅需要修改极少的部分,就可以完成一个USB设备的驱动。我们的USB驱动开发也是从她开始的。 那些linux下不支持的USB设备几乎都是生产厂商特定的产品。如果生产厂商在他们的产品中使用自己定义的协议,...
USB总线框架总结为如下图: 2.2 USB Core USB Core这个模块是纯软件部分,并不代表一个设备,是独立于硬件的协议栈,它是所有USB设备赖以生存的模块,即USB子系统的核心。代码位于kernel/drivers/usb/core目录下。 USB Core为设备驱动程序提供服务,提供一个用于访问和控制USB硬件的接口,而不用考虑系统当前使用的哪种HO...
Linux内核USB驱动架构:USB卷五_USB设备枚举过程
Linux 内核体系架构可以按照下图 , 分为三个层次 : 硬件层面 :包括 CPU , 物理内存 , 磁盘 , 外部设备 等硬件 ; 内核空间 :这就是 Linux 内核的核心 , 如 : Arch 抽象层 , 设备管理抽象层 ,内存管理, 中断管理 , 进程调度 ,文件系统管理 , USB / PCI 总线设备 , 设备驱动 ( 字符设备 / 网络设备...