diff options
| author | sakumisu <[email protected]> | 2022-06-26 18:40:00 +0800 |
|---|---|---|
| committer | sakumisu <[email protected]> | 2022-06-26 18:40:00 +0800 |
| commit | 64ee6877e51fbb219f7aa7edc89c7887bf90e5ac (patch) | |
| tree | 609e15d7c46724b4c919411dc6a7bd9f3251057b /docs/source | |
| parent | 9bd3c00b8c4e6c0f24159cb313db6147e57b50a0 (diff) | |
update usb rst
Diffstat (limited to 'docs/source')
| -rw-r--r-- | docs/source/usb/img/usb_enum.png | bin | 0 -> 175530 bytes | |||
| -rw-r--r-- | docs/source/usb/img/usb_request.png | bin | 0 -> 81361 bytes | |||
| -rw-r--r-- | docs/source/usb/usb_desc.rst | 2 | ||||
| -rw-r--r-- | docs/source/usb/usb_enum.rst | 22 | ||||
| -rw-r--r-- | docs/source/usb/usb_request.rst | 6 |
5 files changed, 28 insertions, 2 deletions
diff --git a/docs/source/usb/img/usb_enum.png b/docs/source/usb/img/usb_enum.png Binary files differnew file mode 100644 index 00000000..01c67c15 --- /dev/null +++ b/docs/source/usb/img/usb_enum.png diff --git a/docs/source/usb/img/usb_request.png b/docs/source/usb/img/usb_request.png Binary files differnew file mode 100644 index 00000000..bb9f2637 --- /dev/null +++ b/docs/source/usb/img/usb_request.png diff --git a/docs/source/usb/usb_desc.rst b/docs/source/usb/usb_desc.rst index b954cefc..1abd42a4 100644 --- a/docs/source/usb/usb_desc.rst +++ b/docs/source/usb/usb_desc.rst @@ -1,6 +1,8 @@ USB 描述符 =========================== +本节参考官方 usb2.0 pdf 9.5 节即可。 + 设备描述符 --------------------- diff --git a/docs/source/usb/usb_enum.rst b/docs/source/usb/usb_enum.rst index e15d68c1..1434424f 100644 --- a/docs/source/usb/usb_enum.rst +++ b/docs/source/usb/usb_enum.rst @@ -1,2 +1,22 @@ USB 枚举 -===========================
\ No newline at end of file +=========================== + +当我们了解了 usb 设备请求以后,就可以来学习下 USB 设备的整个枚举过程了,看看是如何枚举出一个串口、鼠标、u盘等设备了。枚举过程中主机会发送设备请求来获取相关信息(也就是描述符),具体发送哪些,参考下图。 + +.. figure:: img/usb_enum.png + +- 首先设备接上 USB 线,然后插上电脑 +- 设备插上以后上电,处于供电状态 +- 主机通过 D+/D- 识别到设备插入 +- 对设备进行复位 +- 主机发送 **获取设备描述符请求** +- 可选的复位操作 +- 主机发送 **设置设备地址请求** +- 主机发送 **获取配置描述符请求**,可能会获取多次,无所谓 +- 主机发送 **获取字符串描述符请求**,正常会获取3个字符串,如果后面的描述符中指定了字符串,则继续获取指定的字符串 +- 主机发送 **获取设备限定描述符请求**,用来获取在设备工作在其他速度上的请求,如果设备只能工作在全速模式,则必须回复 stall,并且协议栈中一定会打印该请求告诉你此命令设备不支持。 +- 主机发送 **设置配置请求**,对设备的端点进行配置,通常是根据端点描述符中的配置进行设置。 +- 到此标准的设备请求结束 +- 主机根据接口描述符加载对应支持的 class 驱动,如果主机不支持,则会提示该设备找不到驱动 +- 加载完成以后,开始执行该 class 相关的请求 +- 最终进行 class 的数据流传输
\ No newline at end of file diff --git a/docs/source/usb/usb_request.rst b/docs/source/usb/usb_request.rst index 8ee9121a..8e42565d 100644 --- a/docs/source/usb/usb_request.rst +++ b/docs/source/usb/usb_request.rst @@ -1,2 +1,6 @@ USB 设备请求 -===========================
\ No newline at end of file +=========================== + +本节参考官方 usb2.0 pdf 9.3、9.4 节即可。 + +.. figure:: img/usb_request.png |
