Linux-USB子系统开发全解析
1. Linux-USB子系统架构
Linux-USB子系统由多个部分组成,各部分协同工作,为USB设备的正常运行提供支持。以下是该子系统的主要组成部分:
- USB核心 :如同其他驱动子系统的核心层,USB核心是一个代码库,包含供主机控制器驱动(HCD)和客户端驱动使用的例程和结构。它提供了一层间接性,使客户端驱动独立于主机控制器。
- HCD :用于驱动不同的主机控制器。
- 集线器驱动和khubd线程 :根集线器(以及物理集线器)有一个集线器驱动,还有一个辅助内核线程khubd,用于监控连接到集线器的所有端口。检测端口状态变化和配置热插拔设备很耗时,使用辅助线程能更好地完成这些任务。khubd线程默认处于休眠状态,当集线器驱动检测到连接到它的USB端口状态发生变化时,会唤醒khubd。
- USB客户端设备驱动 :负责控制和管理USB客户端设备。
- USB文件系统usbfs :允许从用户空间驱动USB设备。
为了实现端到端的操作,USB子系统会调用其他内核层提供协助。例如,为了支持USB大容量存储设备,USB子系统会与SCSI驱动协同工作;要驱动USB蓝牙键盘,则涉及USB子系统、蓝牙层、输入子系统和tty层。
2. 驱动数据结构
当编写USB客户端驱动时,需要使用几个重要的数据结构。
2.1 usb_device结构
每个设备驱动子
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



