blob: 185a7f6cabd77ca7e99bb9bbf985f101cd540a64 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
.. CherryUSB 使用指南 documentation master file, created by
sphinx-quickstart on Thu Nov 21 10:50:33 2019.
You can adapt this file completely to your liking, but it should at least
contain the root `toctree` directive.
CherryUSB 使用指南
======================================================
CherryUSB 是一个小而美的、可移植性高的、用于嵌入式系统的 USB 主从协议栈。同时 CherryUSB 具有以下优点:
**易于学习 USB**
为了方便用户学习 USB 基本知识、枚举、驱动加载、IP 驱动,因此,编写的代码具备以下优点:
- 代码精简,逻辑简单,无复杂 C 语言语法
- 树状化编程,代码层层递进
- Class 驱动和 porting 驱动模板化、精简化
- API 分类清晰(从机:初始化、注册类、命令回调类、数据收发类;主机:初始化、查找类、数据收发类)
**易于使用 USB**
为了方便用户使用 USB 接口,考虑到用户学习过 uart 和 dma,因此,设计的数据收发类接口具备以下优点:
- 等价于使用 uart tx dma/uart rx dma
- 收发长度没有限制,用户不需要关心 USB 分包过程(porting 驱动做分包过程)
**易于发挥 USB 性能**
考虑到 USB 性能问题,尽量达到 USB 硬件理论带宽,因此,设计的数据收发类接口具备以下优点:
- Porting 驱动直接对接寄存器,无抽象层封装
- Memory zero copy
- IP 如果带 DMA 则使用 DMA 模式(DMA 带硬件分包功能)
- 长度无限制,方便对接硬件 DMA 并且发挥 DMA 的优势
- 分包功能在中断中处理
**从机协议栈整体执行流程**
.. figure:: usbdev.svg
**主机协议栈整体执行流程**
.. figure:: usbhost.svg
**其他相关链接**
- **CherryUSB 大纲** https://www.bilibili.com/video/BV1st4y1H7K2
- **CherryUSB 从机协议栈视频教程** https://www.bilibili.com/video/BV1Ef4y1t73d
- **CherryUSB 腾讯会议** https://www.bilibili.com/video/BV16x421y7mM
- **github** https://github.com/sakumisu/CherryUSB
.. toctree::
:maxdepth: 1
:caption: 快速上手
quick_start/index
quick_start/rt-thread/rtthread
quick_start/other_chip
.. toctree::
:maxdepth: 1
:caption: USB 基本知识点
usb/usb2.0_basic
usb/usb3.0_basic
usb/usb_desc
usb/usb_request
usb/usb_enum
.. toctree::
:maxdepth: 1
:caption: API 手册
api/api_device
api/api_host
api/api_port
api/api_config
.. toctree::
:maxdepth: 1
:caption: Class 指南
class/class_cdc
class/class_hid
class/class_msc
class/class_audio
class/class_video
class/winusb
.. toctree::
:maxdepth: 1
:caption: 基本例程
demo/cdc_acm
demo/msc_ram
demo/audio_mic_speaker
demo/usb_video
.. toctree::
:maxdepth: 1
:caption: Porting 说明
porting
porting_usbip
.. toctree::
:maxdepth: 1
:caption: 工具使用
tools/index
|