From 97a921583fdd11a779648107ec415040876730cb Mon Sep 17 00:00:00 2001 From: sakumisu <1203593632@qq.com> Date: Sun, 2 Oct 2022 14:57:47 +0800 Subject: [PATCH] add structure svg --- docs/source/index.rst | 8 ++++++++ docs/source/usbdev.svg | 21 +++++++++++++++++++++ docs/source/usbhost.svg | 9 +++++++++ 3 files changed, 38 insertions(+) create mode 100644 docs/source/usbdev.svg create mode 100644 docs/source/usbhost.svg diff --git a/docs/source/index.rst b/docs/source/index.rst index 208416e0..43d12ce3 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -16,6 +16,14 @@ CherryUSB 是一个小而美的、可移植性高的、用于嵌入式系统的 - 主从收发接口的使用等价于 uart tx/rx dma 的使用,长度也没有限制 - 能够达到 USB 硬件理论带宽 +从机协议栈整体执行流程: + +.. figure:: usbdev.svg + +主机协议栈整体执行流程: + +.. figure:: usbhost.svg + 其他相关链接: - **从机协议栈视频教程** https://www.bilibili.com/video/BV1Ef4y1t73d diff --git a/docs/source/usbdev.svg b/docs/source/usbdev.svg new file mode 100644 index 00000000..d9fa9549 --- /dev/null +++ b/docs/source/usbdev.svg @@ -0,0 +1,21 @@ +
usbd_desc_register
usbd_desc_register +
usbd_add_interface
usbd_add_interface +
usbd_initialize
usbd_initialize +
usbd_add_endpoint
usbd_add_endpoint +
Listclass_interface_handlerclass_endpoint_handlervendor_handlernotify_handlerhid_report_descriptorhid_report_descriptor_lenintf_numusbd_intf_head
append into list
append into list
in_ep_cb[8]

out_ep_cb[8]
in_ep_cb[8]...
fill ep callback
fill ep callback
usb_dc_init
usb_dc_init +
USBD_IRQHandler
USBD_IRQHandler +
SETUP complete intstatus
SETUP complete intstatus
IN complete intstatus
IN complete intstatus +
OUT complete intstatus
OUT complete intstatus +
usbd_event_reset_handler
usbd_event_reset_handler +
RESET complete intstatus
RESET complete intstatus
usbd_event_ep0_setup_complete_handler
usbd_event_ep0_setup_complete_handler +
usbd_event_ep_in_complete_handler
usbd_event_ep_in_complete_handler +
usbd_event_ep_out_complete_handler
usbd_event_ep_out_complete_handler +
enable ep0

start reading setup
enable ep0...
usbd_setup_request_handler
usbd_setup_request_handler +
usbd_standard_request_handler
usbd_standard_request_handler +
usbd_class_request_handler
usbd_class_request_handler +
usbd_vendor_request_handler
usbd_vendor_request_handler +
usbd_class_interface_request_handler
usbd_class_interface_request_handler +
usbd_class_endpoint_request_handler
usbd_class_endpoint_request_handler +
if ep != 0x80
if ep != 0x80
if ep != 0x00
if ep != 0x00
in_ep_cb[ep & 0x7f]
in_ep_cb[ep & 0x7f] +
out_ep_cb[ep & 0x7f]
out_ep_cb[ep & 0x7f] +
NULL
NULL
Listclass_interface_handlerclass_endpoint_handlervendor_handlernotify_handlerhid_report_descriptorhid_report_descriptor_lenintf_num
Viewer does not support full SVG 1.1
\ No newline at end of file diff --git a/docs/source/usbhost.svg b/docs/source/usbhost.svg new file mode 100644 index 00000000..b7d537b5 --- /dev/null +++ b/docs/source/usbhost.svg @@ -0,0 +1,9 @@ +
usbh_initialize
usbh_initialize
usbh_hub_initialize
usbh_hub_initialize
usbh_roothub_register
usbh_roothub_register
create usbh_hub_thread
create usbh_hub_thread
usb_hc_init
usb_hc_init
usbh_roothub_thread_wakeup
usbh_roothub_thread_wakeup +
hub_int_complete_callback
hub_int_complete_callback +
wakeup
wakeup
wakeup
wakeup
usbh_enumerate
usbh_enumerate +
search all ports
search all ports
usbh_hub_events
usbh_hub_events +
CLASS_CONNECT
CLASS_CONNECT +
search all interface drivers
search all interface drivers
usbh_find_class_driver
usbh_find_class_driver +
if hub class?
if hub class?
usbh_int_urb_fill


usbh_submit_urb
usbh_int_urb_fill...
Class Register
Class Register +
USBH_IRQHandler
USBH_IRQHandler +
Viewer does not support full SVG 1.1
\ No newline at end of file