diff options
| author | sakumisu <[email protected]> | 2022-05-28 22:36:29 +0800 |
|---|---|---|
| committer | sakumisu <[email protected]> | 2022-05-28 22:36:29 +0800 |
| commit | 2bd70ac1f1a09f344c37bdee461eb195948564c7 (patch) | |
| tree | 8afa57ac32cd8a144a9de8a66cc3b0ae09e5d12d /docs/source | |
| parent | c3875eca7dd18349314002000c6b00296dcb2c21 (diff) | |
update rst
Diffstat (limited to 'docs/source')
| -rw-r--r-- | docs/source/index.rst | 6 | ||||
| -rw-r--r-- | docs/source/porting_usbip.rst | 167 | ||||
| -rw-r--r-- | docs/source/quick_start/rt-thread/img/env0.png | bin | 0 -> 44794 bytes | |||
| -rw-r--r-- | docs/source/quick_start/rt-thread/img/env1.png | bin | 27702 -> 8709 bytes | |||
| -rw-r--r-- | docs/source/quick_start/rt-thread/img/env2.png | bin | 35333 -> 16250 bytes | |||
| -rw-r--r-- | docs/source/quick_start/rt-thread/img/stm32_init2.png | bin | 0 -> 47691 bytes | |||
| -rw-r--r-- | docs/source/quick_start/rt-thread/rtthread.rst | 9 | ||||
| -rw-r--r-- | docs/source/tools/img/chrytool1.png | bin | 0 -> 22400 bytes | |||
| -rw-r--r-- | docs/source/tools/img/chrytool2.png | bin | 0 -> 42418 bytes | |||
| -rw-r--r-- | docs/source/tools/img/chrytool3.png | bin | 0 -> 21838 bytes | |||
| -rw-r--r-- | docs/source/tools/img/chrytool4.png | bin | 0 -> 28145 bytes | |||
| -rw-r--r-- | docs/source/tools/img/chrytool5.png | bin | 0 -> 75465 bytes | |||
| -rw-r--r-- | docs/source/tools/img/chrytool6.png | bin | 0 -> 31559 bytes | |||
| -rw-r--r-- | docs/source/tools/img/chrytool7.png | bin | 0 -> 35601 bytes | |||
| -rw-r--r-- | docs/source/tools/index.rst | 50 |
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 Binary files differnew file mode 100644 index 00000000..bb9e8e19 --- /dev/null +++ b/docs/source/quick_start/rt-thread/img/env0.png diff --git a/docs/source/quick_start/rt-thread/img/env1.png b/docs/source/quick_start/rt-thread/img/env1.png Binary files differindex f8fcb33e..d232a408 100644 --- a/docs/source/quick_start/rt-thread/img/env1.png +++ b/docs/source/quick_start/rt-thread/img/env1.png diff --git a/docs/source/quick_start/rt-thread/img/env2.png b/docs/source/quick_start/rt-thread/img/env2.png Binary files differindex 2adc4d7b..48657413 100644 --- a/docs/source/quick_start/rt-thread/img/env2.png +++ b/docs/source/quick_start/rt-thread/img/env2.png diff --git a/docs/source/quick_start/rt-thread/img/stm32_init2.png b/docs/source/quick_start/rt-thread/img/stm32_init2.png Binary files differnew file mode 100644 index 00000000..eae3c026 --- /dev/null +++ b/docs/source/quick_start/rt-thread/img/stm32_init2.png 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 Binary files differnew file mode 100644 index 00000000..8717316a --- /dev/null +++ b/docs/source/tools/img/chrytool1.png diff --git a/docs/source/tools/img/chrytool2.png b/docs/source/tools/img/chrytool2.png Binary files differnew file mode 100644 index 00000000..a0eb4192 --- /dev/null +++ b/docs/source/tools/img/chrytool2.png diff --git a/docs/source/tools/img/chrytool3.png b/docs/source/tools/img/chrytool3.png Binary files differnew file mode 100644 index 00000000..52a3556b --- /dev/null +++ b/docs/source/tools/img/chrytool3.png diff --git a/docs/source/tools/img/chrytool4.png b/docs/source/tools/img/chrytool4.png Binary files differnew file mode 100644 index 00000000..8ad68400 --- /dev/null +++ b/docs/source/tools/img/chrytool4.png diff --git a/docs/source/tools/img/chrytool5.png b/docs/source/tools/img/chrytool5.png Binary files differnew file mode 100644 index 00000000..17849324 --- /dev/null +++ b/docs/source/tools/img/chrytool5.png diff --git a/docs/source/tools/img/chrytool6.png b/docs/source/tools/img/chrytool6.png Binary files differnew file mode 100644 index 00000000..931ccad8 --- /dev/null +++ b/docs/source/tools/img/chrytool6.png diff --git a/docs/source/tools/img/chrytool7.png b/docs/source/tools/img/chrytool7.png Binary files differnew file mode 100644 index 00000000..283a7fc9 --- /dev/null +++ b/docs/source/tools/img/chrytool7.png 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 +-------------------------- |
