From 3e2800bf81d1e70243d45a676f5a9d58755b74d2 Mon Sep 17 00:00:00 2001 From: zeroway Date: Wed, 5 Sep 2018 10:21:50 +0800 Subject: [PATCH] USB : rename the data flow function name --- debug/usb/README.md | 2 ++ debug/usb/sequenceDiagram.png | Bin 10112 -> 10590 bytes debug/usb/sequenceDiagram.txt | 6 +++--- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/debug/usb/README.md b/debug/usb/README.md index 5ffdef7..f0ca0eb 100644 --- a/debug/usb/README.md +++ b/debug/usb/README.md @@ -157,6 +157,8 @@ Slave端(开发板),进入下载模式后枚举成MassStroage设备,循环等待 写流程(usb_write) - Host发送cbw,其中cdb里包含写命令,并发送要写的数据,Slave返回csw +下图中的所有术语是按主机的角度说明的 + ![work flow](./sequenceDiagram.png) Libusb编程核心步骤 diff --git a/debug/usb/sequenceDiagram.png b/debug/usb/sequenceDiagram.png index d88431931b8efb4d7609f0e978d70b8b868169f9..687c1cd2526c909c05d142ccd72617479f903a4d 100644 GIT binary patch literal 10590 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 literal 10112 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 slave : send_cbw note right : usb_read -slave -> host : send_data -slave -> host : send_csw +slave -> host : recv_data +slave -> host : recv_csw host -> slave : send_cbw note right : usb_write host -> slave : send_data -slave -> host : send_csw +slave -> host : recv_csw @enduml