usb host controller & usb core & usb device driver之间的关系
2016-01-05 10:44
459 查看
![](https://oscdn.geek-share.com/Uploads/Images/Content/201908/27/b8030d9569360bad28d65a91f94d626e.gif)
使用USB设备时,两个模块是必须的:
usb核心模块:usbcore
usb主机控制器驱动( host controller driver ),如ehci_hcd、ohci_hcd、uhci_hcd、xhci、musb等等
usbcore:
usbcore负责实现一些核心的功能,为别的设备驱动程序提供服务,提供一个专用于访问和控制usb硬件的接口,而不用去考虑系统当前存在哪种主机控制器。Core、host主机控制器和USB驱动之间的关系如图所示。
Usb core的代码会对整个USB系统初始化,比如申请struct bus_type usb_bus_type,然后会扫描usb总线,看线上连接了哪些USB设备,或者说root hub上连接了哪些usb设备,比如说一个usb键盘,那么就为它准备一个struct device,根据它的情况,为这个struct device赋值,并插入到device链表中来。如果root hub上又连了普通hub,那么还要扫描这个hub上有什么设备,并将这些设备加入到usb_type_type的devices链表。Drivers链表是每一个driver本身去bus上登记的。
主机控制器(host controller-HC):
主机控制器驱动(HCD)必须位于USB软件的最底层,HCD提供主机控制器硬件的抽象,隐藏硬件的细节,在主机控制器之下是物理的usb及所有与之连接的USB设备。而HCD只对usbcore负责。Usbcore将用户的请求映射到相关的HCD,用户不能直接访问HCD。
相关文章推荐
- rundll32.exe调用Delphi Dll
- Android 中如何计算 App 的启动时间?
- 批处理学习总结之常用符号
- 归来的微软
- HttpRequest 获取数据
- STM32经keil mdk编译产生的.map文件分析
- 批处理学习总结之常用符号
- python 十进制 十六进制
- 【Java数据结构】排序
- 在 BAT 做三年,普通程序员能拿多少工资?
- maven学习进程-作用
- DOS批处理延时技术
- marker优化
- static
- 【学习】Service与Activity之间通信的几种方式
- 打开UltraEdit,提示 “文件可能不是DOS格式” .
- Reachability实时准确监听网络状态
- DOS批处理延时技术
- 易普优APS高级计划排程系统系列提纲:行业知识,业务建模,排程算法,计划可视化,平台框架,案例分享
- chrome调试创建sq设备进行调试