diff options
| author | sakumisu <[email protected]> | 2024-03-27 19:34:24 +0800 |
|---|---|---|
| committer | sakumisu <[email protected]> | 2024-03-27 19:35:37 +0800 |
| commit | 5cd50410e67fdc612c3217994bf39d5dc3f9c7c9 (patch) | |
| tree | 005376efbdf71e8a98390673a34495e63d8e6433 | |
| parent | 74bb03b8b4b36cf18732a74f2f8d63a47e466c62 (diff) | |
update readme
| -rw-r--r-- | CherryUSB.svg | 3 | ||||
| -rw-r--r-- | README.md | 26 | ||||
| -rw-r--r-- | README_zh.md | 27 |
3 files changed, 46 insertions, 10 deletions
diff --git a/CherryUSB.svg b/CherryUSB.svg index 63bef8a8..c1ed4782 100644 --- a/CherryUSB.svg +++ b/CherryUSB.svg @@ -1,4 +1,3 @@ <?xml version="1.0" encoding="UTF-8"?> -<!-- Do not edit this file with editors other than diagrams.net --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="811px" height="681px" viewBox="-0.5 -0.5 811 681" content="<mxfile host="Electron" modified="2024-03-08T09:27:15.169Z" agent="5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/20.8.16 Chrome/106.0.5249.199 Electron/21.4.0 Safari/537.36" version="20.8.16" etag="M7-ffH-Y-WzCNGBKQTtK" type="device"><diagram id="6Cir6DJiSEfWlYTVMPdI" name="第 1 页">7Vxdc6I6GP41nTnnYmeEAOKlQl0702476+nHXqaSKrNI3IhV99efAAkGElwVhWq3XhTefPK8z5OQN9Er4ExXXwmcTe6wh4IrveWtroB7peuaoVn0X2xZM0vHbqeWMfE9ZtsYhv5vxIwtZl34HprnMkYYB5E/yxtHOAzRKMrZICF4mc/2hoN8qzM4RpJhOIKBbH32vWiSWm29vbEPkD+e8JY1q5OmvMLRzzHBi5C1d6UDva/3AQNkCnld7EHnE+jhpWAC11fAIRhH6dV05aAgBpfDlpbrl6Rm/SYojHYpANIC7zBYIN5jK6BFe2+Y1kA7GK0ZKNavBeYJX+aJy7o0g27MqN97m3R6NWb/k4peK9XiTBAh68dhVh19ltdiE9SWdpeb9Vyb+nzpTwMY0rvecuJHaDiDozhpSelLbZNoGtA7jXVryAq26P08giRi/DRjw5sfBA4OMElqBo4B+qCfZCT4JxJS+n1A/1iVor0Vf6g9gK8o6GV84VlCnPQzTcXEQ6SQMibQ89GmTmbmz9gXOsiSkodKn0E3MnxEkjDevCMSoZVgYqT5ivAURWRNs7BUOy3A9P2FCoAReinIhat5IkjFspkRMomOs7qz5r5TScNwTJ2QtZfVz1o05OY0Q9EcKLQGgwiREEaoF2M+F7VBL4Qn3ZgSxajVY1ZWj1bG+wEk3pJ66AQUzzO4A9rdHlAxOEspY7DMI7Avj7S8W8227Nd2R+FXrXUYjQosMhU0atVOI62t4FHBvyj0uvHEtlG1B+cT5DGnCv6N7Q8wijuYWPTWxrt8MtNlHmg2nbfdLd6WR7hyHjBhIC83zcosEHA3FbBzG0EBjPz3/OS8xfMP2E/kx7zeBnrO7VbBm3O8ICPEComTZbEeu7W1HjpXjFEk1XMIIwyJEc/OQCJFMnEkHGjtrXv2WnKI7oX5RFPPJ3xg3HkcsIw8tEAxnahmky2jQA7+LVjL4nOfHVmAl4O1bjeGtWVJYF8PnJsLBltrDGvesoD1y6Vj3RyxJazvkjXL5WLdaQxrW8K6P3Svny4YbNBubhTRJbTpO+/bGwzwBQNuWM0BLi8qBw93F4y1aTaHtTyU7L2At0oW8C5690fx0tOhBQgOAkTojUvoMia++Md13H93XdxXcXYbdF2zp3J2lrKLs63TrPdbsrOBar1/FG93TuftAZ5H5b4e1ORry7Sdnq3ydZZSo6+NJp2dhTRP4Oz7IU3tvlKQ4SjycUjvbuE6dfX9sHtbi6/LB3HbiT+N6tpQDOLKON5RXC1vYiTv3q1UlAXM99wLEOY6cS8AKPYCKqjvBGpTBOSVYgNHccERIuFlahN9SQfY3UPie6lri89KdHe4uirLS+8onNs+kbwMWV6DG/cjoq1+Id0fbb0QR9AUcGuqd1LjGHDLod+7ofOp4FZt7p0MbnnkctyLhltrktxynOyx+6nQrpXb8tbG49NFo10cSmrlthxM+P7NvRleMt5ac3DzqJEA99P1N/f++yfCu87BxJQX1IPHD/nSfarBpE60LVVksgD1eR0J4fh/kDMh2ZKVL6kOPRSiWX+o6HinQjgHpEAHjzXXFuqoEFSWmVF1FKw30iEvz44c6RA2Dk4V6+CHjpVj8MaDxw986BVdXWvgQ7GpXz3wcXroS6a/vaFvNAoCFAcqKkdBzhj7Ot89gLxsrB4SOR/sm4yPAHmLsnp85HyhrzVYIq8nqwdLzgf6JiMnQN5hOEbk5HzAbzCMYsjL+qOEUc4W/FrHHHlB5/YfPw3yjQZYVIeBzjvAwh7gb4Dl8O/zyYt7PItP+MDgD6LMqe7Qb3ZuD6aI6itVaYmqS74zmnTlAc/95BQTcEc0C6LpvVjD/ggGt4UMU9/zYgB6MPDHyhJdlpDlFFQywcT/TXsOs7GKjmJ+OP4PzziMqaGHowhPmWZkpu8fMDLyFFIdT9J0hRa4pioFzuUdZoJ+LXxCydMEqXKHkf6S6mBSmY2SSo6P7DB9bdt6yZ0aFMN4O9Iim8vQyo9eGPTx9Q/h2l2JN2t+E9Knf2EdS25+iCmbQskdL1XqwnRiYVjzX49I5oi87YNMlAAYhbegQhW7TpTAzlcEzEJFB0+U9HbzkxRp9s0Pf4Dr/wE=</diagram></mxfile>" style="background-color: rgb(47, 47, 54);"><defs/><g><path d="M 0 50 L 0 0 L 810 0 L 810 50" fill="#c43f3f" stroke="#ff3333" stroke-miterlimit="10" pointer-events="all"/><path d="M 0 50 L 0 680 L 810 680 L 810 50" fill="none" stroke="#ff3333" stroke-miterlimit="10" pointer-events="none"/><path d="M 0 50 L 810 50" fill="none" stroke="#ff3333" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 808px; height: 1px; padding-top: 25px; margin-left: 1px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 24px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><font style="font-size: 24px;"><b style="font-size: 24px;">CherryUSB</b></font></div></div></div></foreignObject><text x="405" y="32" fill="#F0F0F0" font-family="Helvetica" font-size="24px" text-anchor="middle">CherryUSB</text></switch></g><path d="M 10 593 L 10 570 L 800 570 L 800 593" fill="#937ab3" stroke="#937ab3" stroke-miterlimit="10" pointer-events="none"/><path d="M 10 593 L 10 670 L 800 670 L 800 593" fill="none" stroke="#937ab3" stroke-miterlimit="10" pointer-events="none"/><path d="M 10 593 L 800 593" fill="none" stroke="#937ab3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 788px; height: 1px; padding-top: 582px; margin-left: 11px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font style="font-size: 14px;">Hardware</font></div></div></div></foreignObject><text x="405" y="585" fill="#F0F0F0" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Hardware</text></switch></g><path d="M 742 630 L 790 630" fill="none" stroke="#f0f0f0" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="2 6" pointer-events="none"/><rect x="650" y="600" width="80" height="60" fill="#2f2f36" stroke="#937ab3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 630px; margin-left: 651px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">WCH</div></div></div></foreignObject><text x="690" y="634" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">WCH</text></switch></g><rect x="290" y="600" width="80" height="60" fill="#2f2f36" stroke="#937ab3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 630px; margin-left: 291px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">DWC2</div></div></div></foreignObject><text x="330" y="634" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">DWC2</text></switch></g><rect x="20" y="600" width="80" height="60" fill="#2f2f36" stroke="#937ab3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 630px; margin-left: 21px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">EHCI</div></div></div></foreignObject><text x="60" y="634" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">EHCI</text></switch></g><rect x="110" y="600" width="80" height="60" fill="#2f2f36" stroke="#937ab3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 630px; margin-left: 111px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">XHCI</div></div></div></foreignObject><text x="150" y="634" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">XHCI</text></switch></g><rect x="200" y="600" width="80" height="60" fill="#2f2f36" stroke="#937ab3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 630px; margin-left: 201px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">MUSB</div></div></div></foreignObject><text x="240" y="634" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">MUSB</text></switch></g><rect x="380" y="600" width="80" height="60" fill="#2f2f36" stroke="#937ab3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 630px; margin-left: 381px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">FSDEV</div></div></div></foreignObject><text x="420" y="634" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">FSDEV</text></switch></g><rect x="470" y="600" width="80" height="60" fill="#2f2f36" stroke="#937ab3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 630px; margin-left: 471px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">Bouffalo</div></div></div></foreignObject><text x="510" y="634" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">Bouffalo</text></switch></g><rect x="560" y="600" width="80" height="60" fill="#2f2f36" stroke="#937ab3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 630px; margin-left: 561px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">HPM</div></div></div></foreignObject><text x="600" y="634" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">HPM</text></switch></g><rect x="10" y="500" width="390" height="60" fill="#73ad5b" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 388px; height: 1px; padding-top: 530px; margin-left: 11px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><font style="font-size: 16px;">Device Controller Driver (DCD)</font></div></div></div></foreignObject><text x="205" y="535" fill="#F0F0F0" font-family="Helvetica" font-size="16px" text-anchor="middle">Device Controller Driver (DCD)</text></switch></g><rect x="410" y="500" width="390" height="60" fill="#658cb8" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 388px; height: 1px; padding-top: 530px; margin-left: 411px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><font style="font-size: 16px;">Host Controller Driver (HCD)</font></div></div></div></foreignObject><text x="605" y="535" fill="#F0F0F0" font-family="Helvetica" font-size="16px" text-anchor="middle">Host Controller Driver (HCD)</text></switch></g><rect x="10" y="430" width="790" height="60" fill="#2f2f36" stroke="#8c8c8c" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 788px; height: 1px; padding-top: 460px; margin-left: 11px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><font style="font-size: 16px;">OS Abstraction Layer (OSAL)</font></div></div></div></foreignObject><text x="405" y="465" fill="#F0F0F0" font-family="Helvetica" font-size="16px" text-anchor="middle">OS Abstraction Layer (OSAL)</text></switch></g><path d="M 410 90 L 410 60 L 800 60 L 800 90" fill="#658cb8" stroke="#658cb8" stroke-miterlimit="10" pointer-events="none"/><path d="M 410 90 L 410 420 L 800 420 L 800 90" fill="none" stroke="#658cb8" stroke-miterlimit="10" pointer-events="none"/><path d="M 410 90 L 800 90" fill="none" stroke="#658cb8" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 388px; height: 1px; padding-top: 75px; margin-left: 411px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">USB Host</div></div></div></foreignObject><text x="605" y="79" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle" font-weight="bold">USB Host</text></switch></g><rect x="420" y="350" width="370" height="60" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 368px; height: 1px; padding-top: 380px; margin-left: 421px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><font style="font-size: 16px;">USB Host Core</font></div></div></div></foreignObject><text x="605" y="385" fill="#F0F0F0" font-family="Helvetica" font-size="16px" text-anchor="middle">USB Host Core</text></switch></g><rect x="610" y="250" width="180" height="40" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 270px; margin-left: 611px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">HID</div></div></div></foreignObject><text x="700" y="274" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">HID</text></switch></g><rect x="610" y="200" width="180" height="40" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 220px; margin-left: 611px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">MSC</div></div></div></foreignObject><text x="700" y="224" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">MSC</text></switch></g><rect x="420" y="250" width="180" height="40" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 270px; margin-left: 421px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">CDC</div></div></div></foreignObject><text x="510" y="274" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">CDC</text></switch></g><rect x="420" y="200" width="180" height="40" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 220px; margin-left: 421px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">UAC</div></div></div></foreignObject><text x="510" y="224" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">UAC</text></switch></g><rect x="610" y="150" width="180" height="40" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 170px; margin-left: 611px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">UVC</div></div></div></foreignObject><text x="700" y="174" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">UVC</text></switch></g><rect x="420" y="150" width="180" height="40" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 170px; margin-left: 421px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">RNDIS</div></div></div></foreignObject><text x="510" y="174" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">RNDIS</text></switch></g><rect x="420" y="100" width="180" height="40" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 120px; margin-left: 421px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">VENDOR</div></div></div></foreignObject><text x="510" y="124" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">VENDOR</text></switch></g><rect x="610" y="100" width="180" height="40" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 120px; margin-left: 611px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">HUB</div></div></div></foreignObject><text x="700" y="124" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">HUB</text></switch></g><path d="M 635 320 L 575 320" fill="none" stroke="#f0f0f0" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="2 6" pointer-events="none"/><path d="M 10 90 L 10 60 L 400 60 L 400 90" fill="#73ad5b" stroke="#73ad5b" stroke-miterlimit="10" pointer-events="none"/><path d="M 10 90 L 10 420 L 400 420 L 400 90" fill="none" stroke="#73ad5b" stroke-miterlimit="10" pointer-events="none"/><path d="M 10 90 L 400 90" fill="none" stroke="#73ad5b" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 388px; height: 1px; padding-top: 75px; margin-left: 11px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">USB Device</div></div></div></foreignObject><text x="205" y="79" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle" font-weight="bold">USB Device</text></switch></g><rect x="20" y="350" width="370" height="60" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="20" y="350" width="370" height="60" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 368px; height: 1px; padding-top: 380px; margin-left: 21px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><font style="font-size: 16px;">USB Device Core</font></div></div></div></foreignObject><text x="205" y="385" fill="#F0F0F0" font-family="Helvetica" font-size="16px" text-anchor="middle">USB Device Core</text></switch></g><rect x="210" y="250" width="180" height="40" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="210" y="250" width="180" height="40" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 270px; margin-left: 211px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">HID</div></div></div></foreignObject><text x="300" y="274" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">HID</text></switch></g><rect x="210" y="200" width="180" height="40" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="210" y="200" width="180" height="40" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 220px; margin-left: 211px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">MSC</div></div></div></foreignObject><text x="300" y="224" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">MSC</text></switch></g><rect x="20" y="250" width="180" height="40" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="20" y="250" width="180" height="40" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 270px; margin-left: 21px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">CDC</div></div></div></foreignObject><text x="110" y="274" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">CDC</text></switch></g><rect x="20" y="200" width="180" height="40" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="20" y="200" width="180" height="40" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 220px; margin-left: 21px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">UAC</div></div></div></foreignObject><text x="110" y="224" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">UAC</text></switch></g><rect x="210" y="150" width="180" height="40" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="210" y="150" width="180" height="40" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 170px; margin-left: 211px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">UVC</div></div></div></foreignObject><text x="300" y="174" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">UVC</text></switch></g><rect x="20" y="150" width="180" height="40" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="20" y="150" width="180" height="40" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 170px; margin-left: 21px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">RNDIS</div></div></div></foreignObject><text x="110" y="174" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">RNDIS</text></switch></g><rect x="20" y="100" width="180" height="40" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="20" y="100" width="180" height="40" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 120px; margin-left: 21px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">VENDOR</div></div></div></foreignObject><text x="110" y="124" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">VENDOR</text></switch></g><rect x="210" y="100" width="180" height="40" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="210" y="100" width="180" height="40" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 120px; margin-left: 211px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">DFU</div></div></div></foreignObject><text x="300" y="124" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">DFU</text></switch></g><path d="M 235 320 L 175 320" fill="none" stroke="#f0f0f0" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="2 6" pointer-events="none"/><rect x="145" y="430" width="120" height="22" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="145" y="430" width="120" height="22" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 440px; margin-left: 205px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: nowrap;">optional</div></div></div></foreignObject><text x="205" y="444" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">optional</text></switch></g><rect x="545" y="430" width="120" height="22" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="545" y="430" width="120" height="22" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 440px; margin-left: 605px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: nowrap;">required</div></div></div></foreignObject><text x="605" y="444" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">required</text></switch></g><path d="M 10 430 L 800 430" fill="none" stroke="#8c8c8c" stroke-miterlimit="10" pointer-events="none"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
\ No newline at end of file +<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="811px" height="681px" viewBox="-0.5 -0.5 811 681" style="background-color: rgb(47, 47, 54);"><defs/><g><path d="M 0 50 L 0 0 L 810 0 L 810 50" fill="#c43f3f" stroke="#ff3333" stroke-miterlimit="10" pointer-events="all"/><path d="M 0 50 L 0 680 L 810 680 L 810 50" fill="none" stroke="#ff3333" stroke-miterlimit="10" pointer-events="none"/><path d="M 0 50 L 810 50" fill="none" stroke="#ff3333" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 808px; height: 1px; padding-top: 25px; margin-left: 1px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 24px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><font style="font-size: 24px;"><b style="font-size: 24px;">CherryUSB</b></font></div></div></div></foreignObject><text x="405" y="32" fill="#F0F0F0" font-family="Helvetica" font-size="24px" text-anchor="middle">CherryUSB</text></switch></g><path d="M 10 593 L 10 570 L 800 570 L 800 593" fill="#937ab3" stroke="#937ab3" stroke-miterlimit="10" pointer-events="none"/><path d="M 10 593 L 10 670 L 800 670 L 800 593" fill="none" stroke="#937ab3" stroke-miterlimit="10" pointer-events="none"/><path d="M 10 593 L 800 593" fill="none" stroke="#937ab3" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 788px; height: 1px; padding-top: 582px; margin-left: 11px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;"><font style="font-size: 14px;">Hardware</font></div></div></div></foreignObject><text x="405" y="585" fill="#F0F0F0" font-family="Helvetica" font-size="12px" text-anchor="middle" font-weight="bold">Hardware</text></switch></g><path d="M 742 630 L 790 630" fill="none" stroke="#f0f0f0" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="2 6" pointer-events="none"/><rect x="650" y="600" width="80" height="60" fill="#2f2f36" stroke="#937ab3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 630px; margin-left: 651px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">BL</div></div></div></foreignObject><text x="690" y="634" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">BL</text></switch></g><rect x="290" y="600" width="80" height="60" fill="#2f2f36" stroke="#937ab3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 630px; margin-left: 291px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">DWC2</div></div></div></foreignObject><text x="330" y="634" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">DWC2</text></switch></g><rect x="20" y="600" width="80" height="60" fill="#2f2f36" stroke="#937ab3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 630px; margin-left: 21px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">OHCI</div></div></div></foreignObject><text x="60" y="634" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">OHCI</text></switch></g><rect x="110" y="600" width="80" height="60" fill="#2f2f36" stroke="#937ab3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 630px; margin-left: 111px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">EHCI</div></div></div></foreignObject><text x="150" y="634" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">EHCI</text></switch></g><rect x="200" y="600" width="80" height="60" fill="#2f2f36" stroke="#937ab3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 630px; margin-left: 201px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">XHCI</div></div></div></foreignObject><text x="240" y="634" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">XHCI</text></switch></g><rect x="380" y="600" width="80" height="60" fill="#2f2f36" stroke="#937ab3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 630px; margin-left: 381px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">MUSB</div></div></div></foreignObject><text x="420" y="634" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">MUSB</text></switch></g><rect x="470" y="600" width="80" height="60" fill="#2f2f36" stroke="#937ab3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 630px; margin-left: 471px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">FSDEV</div></div></div></foreignObject><text x="510" y="634" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">FSDEV</text></switch></g><rect x="560" y="600" width="80" height="60" fill="#2f2f36" stroke="#937ab3" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 78px; height: 1px; padding-top: 630px; margin-left: 561px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">HPM</div></div></div></foreignObject><text x="600" y="634" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">HPM</text></switch></g><rect x="10" y="500" width="390" height="60" fill="#73ad5b" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 388px; height: 1px; padding-top: 530px; margin-left: 11px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><font style="font-size: 16px;">Device Controller Driver (DCD)</font></div></div></div></foreignObject><text x="205" y="535" fill="#F0F0F0" font-family="Helvetica" font-size="16px" text-anchor="middle">Device Controller Driver (DCD)</text></switch></g><rect x="410" y="500" width="390" height="60" fill="#658cb8" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 388px; height: 1px; padding-top: 530px; margin-left: 411px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><font style="font-size: 16px;">Host Controller Driver (HCD)</font></div></div></div></foreignObject><text x="605" y="535" fill="#F0F0F0" font-family="Helvetica" font-size="16px" text-anchor="middle">Host Controller Driver (HCD)</text></switch></g><rect x="10" y="430" width="790" height="60" fill="#2f2f36" stroke="#8c8c8c" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 788px; height: 1px; padding-top: 460px; margin-left: 11px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><font style="font-size: 16px;">OS Abstraction Layer (OSAL)</font></div></div></div></foreignObject><text x="405" y="465" fill="#F0F0F0" font-family="Helvetica" font-size="16px" text-anchor="middle">OS Abstraction Layer (OSAL)</text></switch></g><path d="M 410 90 L 410 60 L 800 60 L 800 90" fill="#658cb8" stroke="#658cb8" stroke-miterlimit="10" pointer-events="none"/><path d="M 410 90 L 410 420 L 800 420 L 800 90" fill="none" stroke="#658cb8" stroke-miterlimit="10" pointer-events="none"/><path d="M 410 90 L 800 90" fill="none" stroke="#658cb8" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 388px; height: 1px; padding-top: 75px; margin-left: 411px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">USB Host</div></div></div></foreignObject><text x="605" y="79" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle" font-weight="bold">USB Host</text></switch></g><rect x="420" y="350" width="370" height="60" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 368px; height: 1px; padding-top: 380px; margin-left: 421px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><font style="font-size: 16px;">USB Host Core</font></div></div></div></foreignObject><text x="605" y="385" fill="#F0F0F0" font-family="Helvetica" font-size="16px" text-anchor="middle">USB Host Core</text></switch></g><rect x="610" y="250" width="180" height="40" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 270px; margin-left: 611px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">HID</div></div></div></foreignObject><text x="700" y="274" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">HID</text></switch></g><rect x="610" y="200" width="180" height="40" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 220px; margin-left: 611px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">MSC</div></div></div></foreignObject><text x="700" y="224" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">MSC</text></switch></g><rect x="420" y="250" width="180" height="40" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 270px; margin-left: 421px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">CDC</div></div></div></foreignObject><text x="510" y="274" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">CDC</text></switch></g><rect x="420" y="200" width="180" height="40" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 220px; margin-left: 421px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">UAC</div></div></div></foreignObject><text x="510" y="224" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">UAC</text></switch></g><rect x="610" y="150" width="180" height="40" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 170px; margin-left: 611px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">UVC</div></div></div></foreignObject><text x="700" y="174" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">UVC</text></switch></g><rect x="420" y="150" width="180" height="40" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 170px; margin-left: 421px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">RNDIS</div></div></div></foreignObject><text x="510" y="174" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">RNDIS</text></switch></g><rect x="420" y="100" width="180" height="40" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 120px; margin-left: 421px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">VENDOR</div></div></div></foreignObject><text x="510" y="124" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">VENDOR</text></switch></g><rect x="610" y="100" width="180" height="40" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 120px; margin-left: 611px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">HUB</div></div></div></foreignObject><text x="700" y="124" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">HUB</text></switch></g><path d="M 635 320 L 575 320" fill="none" stroke="#f0f0f0" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="2 6" pointer-events="none"/><path d="M 10 90 L 10 60 L 400 60 L 400 90" fill="#73ad5b" stroke="#73ad5b" stroke-miterlimit="10" pointer-events="none"/><path d="M 10 90 L 10 420 L 400 420 L 400 90" fill="none" stroke="#73ad5b" stroke-miterlimit="10" pointer-events="none"/><path d="M 10 90 L 400 90" fill="none" stroke="#73ad5b" stroke-miterlimit="10" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 388px; height: 1px; padding-top: 75px; margin-left: 11px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; font-weight: bold; white-space: normal; overflow-wrap: normal;">USB Device</div></div></div></foreignObject><text x="205" y="79" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle" font-weight="bold">USB Device</text></switch></g><rect x="20" y="350" width="370" height="60" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="20" y="350" width="370" height="60" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 368px; height: 1px; padding-top: 380px; margin-left: 21px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 16px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;"><font style="font-size: 16px;">USB Device Core</font></div></div></div></foreignObject><text x="205" y="385" fill="#F0F0F0" font-family="Helvetica" font-size="16px" text-anchor="middle">USB Device Core</text></switch></g><rect x="210" y="250" width="180" height="40" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="210" y="250" width="180" height="40" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 270px; margin-left: 211px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">HID</div></div></div></foreignObject><text x="300" y="274" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">HID</text></switch></g><rect x="210" y="200" width="180" height="40" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="210" y="200" width="180" height="40" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 220px; margin-left: 211px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">MSC</div></div></div></foreignObject><text x="300" y="224" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">MSC</text></switch></g><rect x="20" y="250" width="180" height="40" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="20" y="250" width="180" height="40" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 270px; margin-left: 21px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">CDC</div></div></div></foreignObject><text x="110" y="274" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">CDC</text></switch></g><rect x="20" y="200" width="180" height="40" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="20" y="200" width="180" height="40" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 220px; margin-left: 21px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">UAC</div></div></div></foreignObject><text x="110" y="224" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">UAC</text></switch></g><rect x="210" y="150" width="180" height="40" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="210" y="150" width="180" height="40" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 170px; margin-left: 211px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">UVC</div></div></div></foreignObject><text x="300" y="174" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">UVC</text></switch></g><rect x="20" y="150" width="180" height="40" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="20" y="150" width="180" height="40" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 170px; margin-left: 21px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">RNDIS</div></div></div></foreignObject><text x="110" y="174" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">RNDIS</text></switch></g><rect x="20" y="100" width="180" height="40" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="20" y="100" width="180" height="40" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 120px; margin-left: 21px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">VENDOR</div></div></div></foreignObject><text x="110" y="124" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">VENDOR</text></switch></g><rect x="210" y="100" width="180" height="40" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="210" y="100" width="180" height="40" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 178px; height: 1px; padding-top: 120px; margin-left: 211px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: normal; overflow-wrap: normal;">DFU</div></div></div></foreignObject><text x="300" y="124" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">DFU</text></switch></g><path d="M 235 320 L 175 320" fill="none" stroke="#f0f0f0" stroke-width="2" stroke-miterlimit="10" stroke-dasharray="2 6" pointer-events="none"/><rect x="145" y="430" width="120" height="22" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="145" y="430" width="120" height="22" fill="#2f2f36" stroke="#73ad5b" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 440px; margin-left: 205px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: nowrap;">optional</div></div></div></foreignObject><text x="205" y="444" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">optional</text></switch></g><rect x="545" y="430" width="120" height="22" fill="#000000" stroke="#000000" pointer-events="none" transform="translate(2,3)" opacity="0.25"/><rect x="545" y="430" width="120" height="22" fill="#2f2f36" stroke="#658cb8" pointer-events="none"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 440px; margin-left: 605px;"><div data-drawio-colors="color: #F0F0F0; " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 14px; font-family: Helvetica; color: rgb(240, 240, 240); line-height: 1.2; pointer-events: none; white-space: nowrap;">required</div></div></div></foreignObject><text x="605" y="444" fill="#F0F0F0" font-family="Helvetica" font-size="14px" text-anchor="middle">required</text></switch></g><path d="M 10 430 L 800 430" fill="none" stroke="#8c8c8c" stroke-miterlimit="10" pointer-events="none"/></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>
\ No newline at end of file @@ -103,7 +103,7 @@ CherryUSB Host Stack has the following functions: - Automatic loading of supported Class drivers - Support blocking transfers and asynchronous transfers - Support Composite Device -- Multi-level HUB support, expandable up to 7 levels +- Multi-level HUB support, expandable up to 7 levels(Testing hub with 10 ports works well) - Support Communication Device Class (CDC_ACM, CDC_ECM) - Support Human Interface Device (HID) - Support Mass Storage Class (MSC) @@ -152,6 +152,23 @@ x is affected by the following macros: #define CONFIG_USBHOST_MAX_VIDEO_CLASS 1 ``` +## USB IP Support + +Only standard and commercial USB IP are listed. + +| IP | device | host | Support status | +|:----------------:|:----------:|:--------:|:--------------:| +| OHCI(intel) | none | OHCI | × | +| EHCI(intel) | none | EHCI | √ | +| XHCI(intel) | none | XHCI | √ | +| UHCI(intel) | none | UHCI | × | +| DWC2(synopsys) | DWC2 | DWC2 | √ | +| MUSB(mentor) | MUSB | MUSB | √ | +| FOTG210(faraday)| FOTG210 | EHCI | √ | +| CDNS2(cadence) | CDNS2 | CDNS2 | √ | +| CDNS3(cadence) | CDNS3 | XHCI | × | +| DWC3(synopsys) | DWC3 | XHCI | × | + ## Documentation Tutorial Quickly start, USB basic concepts, API manual, Class basic concepts and examples, see [CherryUSB Documentation Tutorial](https://cherryusb.readthedocs.io/) @@ -173,13 +190,14 @@ USB basic concepts and how the CherryUSB Device stack is implemented, see [Cherr |ST | STM32F4/STM32H7 | dwc2 |[stm32_repo](https://github.com/CherryUSB/cherryusb_stm32)|<= latest | Long-term | |HPMicro | HPM6750 | hpm/ehci |[hpm_sdk](https://github.com/CherryUSB/hpm_sdk)|<= latest | Long-term | |Essemi | ES32F36xx | musb |[es32f369_repo](https://github.com/CherryUSB/cherryusb_es32)|<= latest | Long-term | -|AllwinnerTech | F1C100S/F1C200S | musb |[cherryusb_rtt_f1c100s](https://github.com/CherryUSB/cherryusb_rtt_f1c100s)|<= latest | the same with Essemi | |Phytium | e2000 | pusb2/xhci |[phytium_repo](https://gitee.com/phytium_embedded/phytium-free-rtos-sdk)|v0.10.2 | Long-term | +|artinchip | d12x/d13x/d21x | dwc2/ehci/ohci |[luban-lite](https://gitee.com/artinchip/luban-lite)|<= latest | Long-term | +|Espressif | esp32s2/esp32s3 | dwc2 |[esp32_repo](https://github.com/CherryUSB/cherryusb_esp32)|<= latest | the same with ST | +|AllwinnerTech | F1C100S/F1C200S | musb |[cherryusb_rtt_f1c100s](https://github.com/CherryUSB/cherryusb_rtt_f1c100s)|<= latest | the same with Essemi | |WCH | CH32V307/ch58x | ch32_usbfs/ch32_usbhs/ch58x |[wch_repo](https://github.com/CherryUSB/cherryusb_wch)|<= v0.10.2 | TBD | -|Espressif | esp32s3 | dwc2 |[esp32_repo](https://github.com/CherryUSB/cherryusb_esp32)|<= latest | the same with ST | |Nordicsemi | Nrf52840 | nrf5x |[nrf5x_repo](https://github.com/CherryUSB/cherryusb_nrf5x)|<= v0.10.2 | No more updated | |Raspberry pi | rp2040 | rp2040 |[pico-examples](https://github.com/CherryUSB/pico-examples)|<= v0.10.2 | No more updated | ## Contact -QQ group: 642693751
\ No newline at end of file +CherryUSB discord: https://discord.com/invite/wFfvrSAey8.
\ No newline at end of file diff --git a/README_zh.md b/README_zh.md index b160a3dd..ca0d69ef 100644 --- a/README_zh.md +++ b/README_zh.md @@ -101,7 +101,7 @@ CherryUSB Host 协议栈当前实现以下功能: - 自动加载支持的Class 驱动 - 支持阻塞式传输和异步传输 - 支持复合设备 -- 支持多级 HUB,最高可拓展到 7 级 +- 支持多级 HUB,最高可拓展到 7 级(目前测试 1拖 10 没有问题) - 支持 Communication Device Class (CDC_ACM, CDC_ECM) - 支持 Human Interface Device (HID) - 支持 Mass Storage Class (MSC) @@ -150,6 +150,23 @@ x 受以下宏影响: #define CONFIG_USBHOST_MAX_VIDEO_CLASS 1 ``` +## USB IP 支持情况 + +仅列举标准 USB IP 和商业性 USB IP + +| IP | device | host | Support status | +|:----------------:|:----------:|:--------:|:--------------:| +| OHCI(intel) | none | OHCI | × | +| EHCI(intel) | none | EHCI | √ | +| XHCI(intel) | none | XHCI | √ | +| UHCI(intel) | none | UHCI | × | +| DWC2(synopsys) | DWC2 | DWC2 | √ | +| MUSB(mentor) | MUSB | MUSB | √ | +| FOTG210(faraday)| FOTG210 | EHCI | √ | +| CDNS2(cadence) | CDNS2 | CDNS2 | √ | +| CDNS3(cadence) | CDNS3 | XHCI | × | +| DWC3(synopsys) | DWC3 | XHCI | × | + ## 文档教程 CherryUSB 快速入门、USB 基本概念,API 手册,Class 基本概念和例程,参考 [CherryUSB Documentation Tutorial](https://cherryusb.readthedocs.io/) @@ -172,13 +189,15 @@ CherryUSB 快速入门、USB 基本概念,API 手册,Class 基本概念和� |ST | STM32F4/STM32H7 | dwc2 |[stm32_repo](https://github.com/CherryUSB/cherryusb_stm32)|<= latest | Long-term | |HPMicro | HPM6750 | hpm/ehci |[hpm_sdk](https://github.com/CherryUSB/hpm_sdk)|<= latest | Long-term | |Essemi | ES32F36xx | musb |[es32f369_repo](https://github.com/CherryUSB/cherryusb_es32)|<= latest | Long-term | -|AllwinnerTech | F1C100S/F1C200S | musb |[cherryusb_rtt_f1c100s](https://github.com/CherryUSB/cherryusb_rtt_f1c100s)|<= latest | the same with Essemi | |Phytium | e2000 | pusb2/xhci |[phytium_repo](https://gitee.com/phytium_embedded/phytium-free-rtos-sdk)|v0.10.2 | Long-term | +|artinchip | d12x/d13x/d21x | dwc2/ehci/ohci |[luban-lite](https://gitee.com/artinchip/luban-lite)|<= latest | Long-term | +|Espressif | esp32s2/esp32s3 | dwc2 |[esp32_repo](https://github.com/CherryUSB/cherryusb_esp32)|<= latest | the same with ST | +|AllwinnerTech | F1C100S/F1C200S | musb |[cherryusb_rtt_f1c100s](https://github.com/CherryUSB/cherryusb_rtt_f1c100s)|<= latest | the same with Essemi | |WCH | CH32V307/ch58x | ch32_usbfs/ch32_usbhs/ch58x |[wch_repo](https://github.com/CherryUSB/cherryusb_wch)|<= v0.10.2 | TBD | -|Espressif | esp32s3 | dwc2 |[esp32_repo](https://github.com/CherryUSB/cherryusb_esp32)|<= latest | the same with ST | |Nordicsemi | Nrf52840 | nrf5x |[nrf5x_repo](https://github.com/CherryUSB/cherryusb_nrf5x)|<= v0.10.2 | No more updated | |Raspberry pi | rp2040 | rp2040 |[pico-examples](https://github.com/CherryUSB/pico-examples)|<= v0.10.2 | No more updated | ## Contact -QQ 群:642693751
\ No newline at end of file +CherryUSB QQ 群:642693751 +CherryUSB 微信群:与我联系后邀请加入
\ No newline at end of file |
