summaryrefslogtreecommitdiff
path: root/docs/source
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2022-05-28 22:36:29 +0800
committersakumisu <[email protected]>2022-05-28 22:36:29 +0800
commit2bd70ac1f1a09f344c37bdee461eb195948564c7 (patch)
tree8afa57ac32cd8a144a9de8a66cc3b0ae09e5d12d /docs/source
parentc3875eca7dd18349314002000c6b00296dcb2c21 (diff)
update rst
Diffstat (limited to 'docs/source')
-rw-r--r--docs/source/index.rst6
-rw-r--r--docs/source/porting_usbip.rst167
-rw-r--r--docs/source/quick_start/rt-thread/img/env0.pngbin0 -> 44794 bytes
-rw-r--r--docs/source/quick_start/rt-thread/img/env1.pngbin27702 -> 8709 bytes
-rw-r--r--docs/source/quick_start/rt-thread/img/env2.pngbin35333 -> 16250 bytes
-rw-r--r--docs/source/quick_start/rt-thread/img/stm32_init2.pngbin0 -> 47691 bytes
-rw-r--r--docs/source/quick_start/rt-thread/rtthread.rst9
-rw-r--r--docs/source/tools/img/chrytool1.pngbin0 -> 22400 bytes
-rw-r--r--docs/source/tools/img/chrytool2.pngbin0 -> 42418 bytes
-rw-r--r--docs/source/tools/img/chrytool3.pngbin0 -> 21838 bytes
-rw-r--r--docs/source/tools/img/chrytool4.pngbin0 -> 28145 bytes
-rw-r--r--docs/source/tools/img/chrytool5.pngbin0 -> 75465 bytes
-rw-r--r--docs/source/tools/img/chrytool6.pngbin0 -> 31559 bytes
-rw-r--r--docs/source/tools/img/chrytool7.pngbin0 -> 35601 bytes
-rw-r--r--docs/source/tools/index.rst50
15 files changed, 197 insertions, 35 deletions
diff --git a/docs/source/index.rst b/docs/source/index.rst
index 88cd66c7..95cb33e0 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -79,3 +79,9 @@ CherryUSB 是一个小而美的、可移植性高的、用于嵌入式系统的
porting
porting_usbip
+
+.. toctree::
+ :maxdepth: 1
+ :caption: 工具使用
+
+ tools/index \ No newline at end of file
diff --git a/docs/source/porting_usbip.rst b/docs/source/porting_usbip.rst
index f3af10db..57ba5d4d 100644
--- a/docs/source/porting_usbip.rst
+++ b/docs/source/porting_usbip.rst
@@ -1,51 +1,154 @@
USB IP 差别说明
==============================
-本节主要对常见的 USB IP 在不同芯片上实现时,列出需要注意的一些差别说明。
-
+本节主要对已经支持的 USB IP 在不同厂家上的一些差别说明并进行校对。欢迎补充。
FSDEV
--------------------------
-这个 ip 不同厂家基本都是基于标准的 usb 寄存器,所以,用户使用时,仅需要修改 `USBD_IRQHandler` 、 `USB_NUM_BIDIR_ENDPOINTS` 、 `USB_BASE` 即可。
+FSDEV 仅支持从机。这个 ip 不同厂家基本都是基于标准的 usb 寄存器,所以用户使用时,仅需要修改 `USBD_IRQHandler` 、 `USB_BASE` 、 `USB_NUM_BIDIR_ENDPOINTS` 即可。有些芯片可能还需要配置 `PMA_ACCESS` 的值,默认为2。下表为具体芯片相关宏的修改值:
+
+.. list-table::
+ :widths: 30 20 30 30 30
+ :header-rows: 1
+
+ * - 芯片
+ - USBD_IRQHandler
+ - USB_BASE
+ - USB_NUM_BIDIR_ENDPOINTS
+ - PMA_ACCESS
+ * - STM32F0
+ - USB_IRQHandler
+ - 0x40005C00
+ - 8
+ - 2
+ * - STM32F1
+ - USB_LP_CAN1_RX0_IRQHandler
+ - 同上
+ - 同上
+ - 同上
+ * - STM32F3
+ - USB_LP_CAN_RX0_IRQHandler
+ - 同上
+ - 同上
+ - 同上
+ * - STM32L0
+ - USB_IRQHandler
+ - 同上
+ - 同上
+ - 同上
+ * - STM32L1
+ - USB_LP_IRQHandler
+ - 同上
+ - 同上
+ - 同上
+ * - STM32L4
+ - USB_IRQHandler
+ - 同上
+ - 同上
+ - 同上
MUSB
--------------------------
-- ES32 和 MSP432 走的标准的寄存器,所以,用户使用时,仅需要修改 `USBD_IRQHandler` 和 `USB_BASE` 即可。
-- 全志不同系列芯片都魔改了 musb 的寄存器,包括寄存器的偏移,所以除了修改 `USBD_IRQHandler` 和 `USB_BASE` ,还需要实现对应的 `寄存器结构体 <https://github.com/sakumisu/CherryUSB/blob/master/port/musb/usb_musb_reg.h>`_ 。以及寄存器偏移地址,举例如下:
+MUSB IP 支持主从,并且由 **mentor** 定义了一套标准的寄存器偏移,所以如果是走的标准,则从机仅需要修改 `USBD_IRQHandler` 、 `USB_BASE` 、 `USB_NUM_BIDIR_ENDPOINTS` ,主机仅需要修改 `USBH_IRQHandler` 、 `USB_BASE` 以及 `CONIFG_USB_MUSB_EP_NUM` 即可。如果非标准,则需要实现以下宏的偏移,以标准为例:
.. code-block:: C
- #define USB_TXMAPx_BASE (USB_BASE + MUSB_IND_TXMAP_OFFSET)
- #define USB_RXMAPx_BASE (USB_BASE + MUSB_IND_RXMAP_OFFSET)
- #define USB_TXCSRLx_BASE (USB_BASE + MUSB_IND_TXCSRL_OFFSET)
- #define USB_RXCSRLx_BASE (USB_BASE + MUSB_IND_RXCSRL_OFFSET)
- #define USB_TXCSRHx_BASE (USB_BASE + MUSB_IND_TXCSRH_OFFSET)
- #define USB_RXCSRHx_BASE (USB_BASE + MUSB_IND_RXCSRH_OFFSET)
- #define USB_RXCOUNTx_BASE (USB_BASE + MUSB_IND_RXCOUNT_OFFSET)
- #define USB_FIFO_BASE(ep_idx) (USB_BASE + MUSB_FIFO_OFFSET + 0x4 * ep_idx)
- #define USB_TXTYPEx_BASE (USB_BASE + MUSB_IND_TXTYPE_OFFSET)
- #define USB_RXTYPEx_BASE (USB_BASE + MUSB_IND_RXTYPE_OFFSET)
- #define USB_TXINTERVALx_BASE (USB_BASE + MUSB_IND_TXINTERVAL_OFFSET)
- #define USB_RXINTERVALx_BASE (USB_BASE + MUSB_IND_RXINTERVAL_OFFSET)
+ #define MUSB_FADDR_OFFSET 0x00
+ #define MUSB_POWER_OFFSET 0x01
+ #define MUSB_TXIS_OFFSET 0x02
+ #define MUSB_RXIS_OFFSET 0x04
+ #define MUSB_TXIE_OFFSET 0x06
+ #define MUSB_RXIE_OFFSET 0x08
+ #define MUSB_IS_OFFSET 0x0A
+ #define MUSB_IE_OFFSET 0x0B
+
+ #define MUSB_EPIDX_OFFSET 0x0E
+
+ #define MUSB_IND_TXMAP_OFFSET 0x10
+ #define MUSB_IND_TXCSRL_OFFSET 0x12
+ #define MUSB_IND_TXCSRH_OFFSET 0x13
+ #define MUSB_IND_RXMAP_OFFSET 0x14
+ #define MUSB_IND_RXCSRL_OFFSET 0x16
+ #define MUSB_IND_RXCSRH_OFFSET 0x17
+ #define MUSB_IND_RXCOUNT_OFFSET 0x18
+ #define MUSB_IND_TXTYPE_OFFSET 0x1A
+ #define MUSB_IND_TXINTERVAL_OFFSET 0x1B
+ #define MUSB_IND_RXTYPE_OFFSET 0x1C
+ #define MUSB_IND_RXINTERVAL_OFFSET 0x1D
+
+ #define MUSB_FIFO_OFFSET 0x20
+
+ #define MUSB_DEVCTL_OFFSET 0x60
+
+ #define MUSB_TXFIFOSZ_OFFSET 0x62
+ #define MUSB_RXFIFOSZ_OFFSET 0x63
+ #define MUSB_TXFIFOADD_OFFSET 0x64
+ #define MUSB_RXFIFOADD_OFFSET 0x66
+
+ #define MUSB_TXFUNCADDR0_OFFSET 0x80
+ #define MUSB_TXHUBADDR0_OFFSET 0x82
+ #define MUSB_TXHUBPORT0_OFFSET 0x83
+ #define MUSB_TXFUNCADDRx_OFFSET 0x88
+ #define MUSB_TXHUBADDRx_OFFSET 0x8A
+ #define MUSB_TXHUBPORTx_OFFSET 0x8B
+ #define MUSB_RXFUNCADDRx_OFFSET 0x8C
+ #define MUSB_RXHUBADDRx_OFFSET 0x8E
+ #define MUSB_RXHUBPORTx_OFFSET 0x8F
+
+ #define USB_TXADDR_BASE(ep_idx) (USB_BASE + MUSB_TXFUNCADDR0_OFFSET + 0x8 * ep_idx)
+ #define USB_TXHUBADDR_BASE(ep_idx) (USB_BASE + MUSB_TXFUNCADDR0_OFFSET + 0x8 * ep_idx + 2)
+ #define USB_TXHUBPORT_BASE(ep_idx) (USB_BASE + MUSB_TXFUNCADDR0_OFFSET + 0x8 * ep_idx + 3)
+ #define USB_RXADDR_BASE(ep_idx) (USB_BASE + MUSB_TXFUNCADDR0_OFFSET + 0x8 * ep_idx + 4)
+ #define USB_RXHUBADDR_BASE(ep_idx) (USB_BASE + MUSB_TXFUNCADDR0_OFFSET + 0x8 * ep_idx + 6)
+ #define USB_RXHUBPORT_BASE(ep_idx) (USB_BASE + MUSB_TXFUNCADDR0_OFFSET + 0x8 * ep_idx + 7)
+
+下表为具体芯片从机相关宏的修改值:
+
+.. list-table::
+ :widths: 30 30 30 30
+ :header-rows: 1
+
+ * - 芯片
+ - USBD_IRQHandler
+ - USB_BASE
+ - USB_NUM_BIDIR_ENDPOINTS
+ * - ES32F3xx
+ - USB_INT_Handler
+ - 0x40086400
+ - 5
+ * - MSP432Ex
+ - 同上
+ - 0x40050000
+ - 同上
+ * - F1C100S
+ - USB_INT_Handler
+ - 0x01c13000
+ - 4
+
+下表为具体芯片主机相关宏的修改值:
- #ifdef CONFIG_USB_MUSB_SUNXI
- #define USB_TXADDR_BASE(ep_idx) (&USB->TXFUNCADDR0)
- #define USB_TXHUBADDR_BASE(ep_idx) (&USB->TXHUBADDR0)
- #define USB_TXHUBPORT_BASE(ep_idx) (&USB->TXHUBPORT0)
- #define USB_RXADDR_BASE(ep_idx) (&USB->RXFUNCADDR0)
- #define USB_RXHUBADDR_BASE(ep_idx) (&USB->RXHUBADDR0)
- #define USB_RXHUBPORT_BASE(ep_idx) (&USB->RXHUBPORT0)
- #else
- #define USB_TXADDR_BASE(ep_idx) (&USB->TXFUNCADDR0 + 0x8 * ep_idx)
- #define USB_TXHUBADDR_BASE(ep_idx) (&USB->TXFUNCADDR0 + 0x8 * ep_idx + 2)
- #define USB_TXHUBPORT_BASE(ep_idx) (&USB->TXFUNCADDR0 + 0x8 * ep_idx + 3)
- #define USB_RXADDR_BASE(ep_idx) (&USB->TXFUNCADDR0 + 0x8 * ep_idx + 4)
- #define USB_RXHUBADDR_BASE(ep_idx) (&USB->TXFUNCADDR0 + 0x8 * ep_idx + 6)
- #define USB_RXHUBPORT_BASE(ep_idx) (&USB->TXFUNCADDR0 + 0x8 * ep_idx + 7)
- #endif
+.. list-table::
+ :widths: 30 30 30 30
+ :header-rows: 1
+ * - 芯片
+ - USBH_IRQHandler
+ - USB_BASE
+ - CONIFG_USB_MUSB_EP_NUM
+ * - ES32F3xx
+ - USB_INT_Handler
+ - 0x40086400
+ - 5
+ * - MSP432Ex
+ - 同上
+ - 0x40050000
+ - 同上
+ * - F1C100S
+ - USB_INT_Handler
+ - 0x01c13000
+ - 4
SYNOPSYS
--------------------------
diff --git a/docs/source/quick_start/rt-thread/img/env0.png b/docs/source/quick_start/rt-thread/img/env0.png
new file mode 100644
index 00000000..bb9e8e19
--- /dev/null
+++ b/docs/source/quick_start/rt-thread/img/env0.png
Binary files differ
diff --git a/docs/source/quick_start/rt-thread/img/env1.png b/docs/source/quick_start/rt-thread/img/env1.png
index f8fcb33e..d232a408 100644
--- a/docs/source/quick_start/rt-thread/img/env1.png
+++ b/docs/source/quick_start/rt-thread/img/env1.png
Binary files differ
diff --git a/docs/source/quick_start/rt-thread/img/env2.png b/docs/source/quick_start/rt-thread/img/env2.png
index 2adc4d7b..48657413 100644
--- a/docs/source/quick_start/rt-thread/img/env2.png
+++ b/docs/source/quick_start/rt-thread/img/env2.png
Binary files differ
diff --git a/docs/source/quick_start/rt-thread/img/stm32_init2.png b/docs/source/quick_start/rt-thread/img/stm32_init2.png
new file mode 100644
index 00000000..eae3c026
--- /dev/null
+++ b/docs/source/quick_start/rt-thread/img/stm32_init2.png
Binary files differ
diff --git a/docs/source/quick_start/rt-thread/rtthread.rst b/docs/source/quick_start/rt-thread/rtthread.rst
index 74aca4d6..1b487d06 100644
--- a/docs/source/quick_start/rt-thread/rtthread.rst
+++ b/docs/source/quick_start/rt-thread/rtthread.rst
@@ -3,15 +3,14 @@
本节主要介绍使用 RT-Thread 提供的软件包管理器来配置工程,以 env 作为演示。本节操作不同芯片都一样,后续不再重复讲解。打开 env 以后使用 menuconfig 进入包管理器,并在如图所示路径中选择 CherryUSB。
-.. figure:: img/env1.png
-
-.. note:: 协议栈默认使用 printf,而 rt-thread 对这个支持并不是很好,所以推荐添加一个 cflag 在你的工程中: `-Dprintf=rt_kprintf`。
+.. figure:: img/env0.png
从机配置
--------------------------
* 选择 Enable usb device mode 并敲回车进入。
+.. figure:: img/env1.png
.. figure:: img/env2.png
* 首先第一个配置是配置 USB 的速度,分为 **FS、HIGH_IN_FULL、HS**,。其中, **HIGH_IN_FULL** 表示设备使用支持高速的 USB IP,但是工作在全速模式下,这里仅使用 **synopsys ip** 时使用。
@@ -62,6 +61,10 @@
.. figure:: img/stm32_init.png
+其次将 `main.c` 中的 `SystemClock_Config` 替换掉 `board.c` 中的配置
+
+.. figure:: img/stm32_init2.png
+
其他小伙伴的移植笔记
-------------------------
- @kylongmu `stm32h743-st-nucleo移植CherryUSB- CDC串口 <https://club.rt-thread.org/ask/article/3719.html>`_。
diff --git a/docs/source/tools/img/chrytool1.png b/docs/source/tools/img/chrytool1.png
new file mode 100644
index 00000000..8717316a
--- /dev/null
+++ b/docs/source/tools/img/chrytool1.png
Binary files differ
diff --git a/docs/source/tools/img/chrytool2.png b/docs/source/tools/img/chrytool2.png
new file mode 100644
index 00000000..a0eb4192
--- /dev/null
+++ b/docs/source/tools/img/chrytool2.png
Binary files differ
diff --git a/docs/source/tools/img/chrytool3.png b/docs/source/tools/img/chrytool3.png
new file mode 100644
index 00000000..52a3556b
--- /dev/null
+++ b/docs/source/tools/img/chrytool3.png
Binary files differ
diff --git a/docs/source/tools/img/chrytool4.png b/docs/source/tools/img/chrytool4.png
new file mode 100644
index 00000000..8ad68400
--- /dev/null
+++ b/docs/source/tools/img/chrytool4.png
Binary files differ
diff --git a/docs/source/tools/img/chrytool5.png b/docs/source/tools/img/chrytool5.png
new file mode 100644
index 00000000..17849324
--- /dev/null
+++ b/docs/source/tools/img/chrytool5.png
Binary files differ
diff --git a/docs/source/tools/img/chrytool6.png b/docs/source/tools/img/chrytool6.png
new file mode 100644
index 00000000..931ccad8
--- /dev/null
+++ b/docs/source/tools/img/chrytool6.png
Binary files differ
diff --git a/docs/source/tools/img/chrytool7.png b/docs/source/tools/img/chrytool7.png
new file mode 100644
index 00000000..283a7fc9
--- /dev/null
+++ b/docs/source/tools/img/chrytool7.png
Binary files differ
diff --git a/docs/source/tools/index.rst b/docs/source/tools/index.rst
new file mode 100644
index 00000000..0ebfb31d
--- /dev/null
+++ b/docs/source/tools/index.rst
@@ -0,0 +1,50 @@
+chryusb_configurator
+--------------------------
+
+`chryusb_configurator <https://github.com/CherryUSB/chryusb_configurator/releases/tag/1.0.0>`_ 主要服务在使用设备协议栈时,生成描述符数组,从而调用 `usbd_desc_register` 进行注册。
+
+- 首先我们从 github 下载 chryusb_configurator.exe,然后一路安装就可以了。然后双击打开,点击 `工程`,并点击 `新建工程`
+
+.. figure:: img/chrytool1.png
+
+- 新建完成以后,会生成默认的描述符配置,包含 **设备描述符**、 **配置描述符**、 **字符串描述符**,并且 **字符串描述符** 默认支持三个
+
+.. figure:: img/chrytool2.png
+
+- 然后我们可以根据需要修改相关描述符的信息,比如 **设备描述符** 中的 vid、pid,class 参数, **配置描述符** 中的 **Power** 等等
+
+- 然后是 class 的添加,需要点击 `文件`,并点击 `新建文件`
+
+.. figure:: img/chrytool3.png
+
+- 然后右侧提供了一些 class 的描述符模板,选择一个进行初始化
+
+.. figure:: img/chrytool4.png
+
+- 如果是多个 class ,则上述两步重复操作就可以了
+
+- 然后我们根据需要修改相关端点的参数,比如方向、地址、size、interval
+
+.. figure:: img/chrytool5.png
+
+- 最后点击 `文件` 并保存文件,后缀为 `.chry`
+- 切换到工程文件,后缀是 `.chrybase`, 然后点击 `添加分组配置` 导入刚刚配置好的 class 文件
+
+.. figure:: img/chrytool6.png
+
+- 点击 `工程` 并点击 `保存工程`
+- 点击 `编译`,生成描述符数组
+
+.. figure:: img/chrytool7.png
+
+- 复制编译后的文件到自己的工程中使用即可
+
+
+力科 USB Protocol Suite
+--------------------------
+
+Wireshark
+--------------------------
+
+Audacity
+--------------------------