summaryrefslogtreecommitdiff
path: root/docs/source/quick_start
diff options
context:
space:
mode:
authorsakumisu <[email protected]>2022-04-23 17:07:08 +0800
committersakumisu <[email protected]>2022-04-23 17:07:08 +0800
commit07effe3d228ee5106c69bcf4a2458c0bc705f17f (patch)
tree50b8b42cb17018e0f48237d0a8165332b379cb74 /docs/source/quick_start
parent035f01b2cab6d0d48670c14912eb8f46a0eef8fe (diff)
update doc
Diffstat (limited to 'docs/source/quick_start')
-rw-r--r--docs/source/quick_start/other_chip.rst29
-rw-r--r--docs/source/quick_start/rt-thread/rtthread.rst9
2 files changed, 19 insertions, 19 deletions
diff --git a/docs/source/quick_start/other_chip.rst b/docs/source/quick_start/other_chip.rst
index 9685442c..db919461 100644
--- a/docs/source/quick_start/other_chip.rst
+++ b/docs/source/quick_start/other_chip.rst
@@ -6,14 +6,10 @@
USB Device 移植要点
-----------------------
-- 拷贝 CherryUSB 源码到工程目录下
-- 添加 `usbd_core.c` 参与编译
-- 根据自己的需求添加对应 **class** 目录下的文件参与编译,并且添加的文件形似 `usbd_xxx.c`
-- 添加 `usb_dc_xxx.c` 参与编译,它是芯片所对应的 USB IP dcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 **port** 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了
-- 添加 `USBD_IRQHandler=xxxx` 、 `USB_NUM_BIDIR_ENDPOINTS=x` 以及 `USB_BASE=0xxxxx` 的 CFLAG,如果没有添加则使用 `usb_dc_xxx.c` 中默认配置
-- 添加 CherryUSB 源码中使用到的头文件路径
-- 拷贝 `usb_config.h` 文件到自己工程目录下,并添加相应的目录头文件路径。所以根目录下的文件仅作为参考,不要添加根目录下的头文件
-- 实现 `usb_dc_low_level_init` 函数,该函数主要负责 USB 时钟、引脚、中断的初始化(此函数在对应的 `usb_dc_xxx.c` 中为弱定义)。该函数可以放在你想要放的任何参与编译的 c 文件中。如何进行 USB 的时钟、引脚、中断等初始化,请自行根据你使用的芯片原厂提供的源码中进行添加。
+- 拷贝 CherryUSB 源码到工程目录下,并按需添加源文件和头文件路径,其中 `usbd_core.c` 和 `usb_dc_xxx.c` 为必须添加项。而 `usb_dc_xxx.c` 是芯片所对应的 USB IP dcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 **port** 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了
+- 添加 `USBD_IRQHandler=xxxx` 、 `USB_NUM_BIDIR_ENDPOINTS=x` 以及 `USB_BASE=0xxxxx` 三个 cflag 编译选项,如果没有添加则使用 `usb_dc_xxx.c` 中默认配置
+- 拷贝 `usb_config.h` 文件到自己工程目录下,并添加相应的目录头文件路径。所以根目录下的文件仅作为参考,不要添加根目录下的头文件路径
+- 实现 `usb_dc_low_level_init` 函数(该函数主要负责 USB 时钟、引脚、中断的初始化)。该函数可以放在你想要放的任何参与编译的 c 文件中。如何进行 USB 的时钟、引脚、中断等初始化,请自行根据你使用的芯片原厂提供的源码中进行添加。
- 描述符的注册、class的注册、接口的注册、端点中断的注册。不会的参考 demo 下的 template
- 调用 `usbd_initialize` 初始化 usb 硬件
- 编译使用。各个 class 如何使用,参考 demo 下的 template
@@ -22,15 +18,10 @@ USB Device 移植要点
USB Host 移植要点
-----------------------
-- 拷贝 CherryUSB 源码到工程里
-- 添加 `usbh_core.c`
-- 根据自己的需求添加对应 **class** 目录下的文件参与编译,并且添加的文件形似 `usbh_xxx.c`。推荐全部添加,这样可以支持很多 class
-- 添加 `usb_hc_xxx.c`,它是芯片所对应的 USB IP hcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 **port** 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了
-- 添加 `USBH_IRQHandler=xxxx` 、 `USB_BASE=0xxxxx` 的 CFLAG,如果没有添加则使用 `usb_hc_xxx.c` 中默认配置
-- 添加 **osal** 目录下文件,根据不同的 os 选择对应的源文件
-- 添加 CherryUSB 源码中使用到的头文件路径
-- 拷贝 `usb_config.h` 文件到自己工程目录下,并添加相应的目录头文件路径。所以根目录下的文件仅作为参考,不要添加根目录下的头文件
-- 实现 `usb_hc_low_level_init` 函数,该函数主要负责 USB 时钟、引脚、中断的初始化(此函数在对应的 `usb_hc_xxx.c` 中为弱定义)。该函数可以放在你想要放的任何参与编译的 c 文件中。如何进行 USB 的时钟、引脚、中断等初始化,请自行根据你使用的芯片原厂提供的源码中进行添加。
+- 拷贝 CherryUSB 源码到工程目录下,并按需添加源文件和头文件路径,其中 `usbh_core.c` 、 `usb_hc_xxx.c` 以及 **osal** 目录下源文件(根据不同的 os 选择对应的源文件)为必须添加项。而 `usb_hc_xxx.c` 是芯片所对应的 USB IP dcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 **port** 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了
+- 添加 `USBH_IRQHandler=xxxx` 以及 `USB_BASE=0xxxxx` 两个 cflag 编译选项,如果没有添加则使用 `usb_hc_xxx.c` 中默认配置
+- 拷贝 `usb_config.h` 文件到自己工程目录下,并添加相应的目录头文件路径。所以根目录下的文件仅作为参考,不要添加根目录下的头文件路径
+- 实现 `usb_hc_low_level_init` 函数(该函数主要负责 USB 时钟、引脚、中断的初始化)。该函数可以放在你想要放的任何参与编译的 c 文件中。如何进行 USB 的时钟、引脚、中断等初始化,请自行根据你使用的芯片原厂提供的源码中进行添加。
- 调用 `usbh_initialize` 初始化 usb 硬件
- 如果使用的是 GCC,需要在链接脚本中添加如下代码:
@@ -43,3 +34,7 @@ USB Host 移植要点
_usbh_class_info_end = .;
- 编译使用。各个 class 如何使用,参考 demo 下的 `usb_host.c` 文件
+
+.. note:: 使用 host 时,推荐添加除了 hub 以外的所有适配的 class 驱动,达到自动加载驱动的目的。当然,如果不用,那就不添加。
+
+.. caution:: 如果主从 ip 共用一个中断,推荐设置 `USBD_IRQHandler=USBD_IRQHandler` 、 `USBH_IRQHandler=USBH_IRQHandler` ,然后由真正的中断函数根据主从模式调用这两个函数。 \ No newline at end of file
diff --git a/docs/source/quick_start/rt-thread/rtthread.rst b/docs/source/quick_start/rt-thread/rtthread.rst
index 8ec5c6c9..74aca4d6 100644
--- a/docs/source/quick_start/rt-thread/rtthread.rst
+++ b/docs/source/quick_start/rt-thread/rtthread.rst
@@ -5,6 +5,7 @@
.. figure:: img/env1.png
+.. note:: 协议栈默认使用 printf,而 rt-thread 对这个支持并不是很好,所以推荐添加一个 cflag 在你的工程中: `-Dprintf=rt_kprintf`。
从机配置
--------------------------
@@ -17,7 +18,7 @@
.. figure:: img/env3.png
-* 其次第二个配置则是选择 USB device ip,不清楚自己芯片是哪个 ip的可以参考 **port** 目录下对应的 readme。
+* 其次第二个配置则是选择 USB device ip,不清楚自己芯片是哪个 ip 的可以参考 **port** 目录下对应的 readme。
.. figure:: img/env4.png
@@ -59,4 +60,8 @@
然后将 `stm32xxxx_hal_msp.c` 中的 `HAL_PCD_MspInit` 或者是 `HAL_HCD_MspInit` 中的内容复制到 `usb_dc_low_level_init` 和 `usb_hc_low_level_init` 函数中,举例如下:
-.. figure:: img/stm32_init.png \ No newline at end of file
+.. figure:: img/stm32_init.png
+
+其他小伙伴的移植笔记
+-------------------------
+- @kylongmu `stm32h743-st-nucleo移植CherryUSB- CDC串口 <https://club.rt-thread.org/ask/article/3719.html>`_。