From 07effe3d228ee5106c69bcf4a2458c0bc705f17f Mon Sep 17 00:00:00 2001 From: sakumisu <1203593632@qq.com> Date: Sat, 23 Apr 2022 17:07:08 +0800 Subject: [PATCH] update doc --- docs/source/porting.rst | 14 +++++++-- docs/source/quick_start/other_chip.rst | 29 ++++++++----------- .../source/quick_start/rt-thread/rtthread.rst | 9 ++++-- 3 files changed, 31 insertions(+), 21 deletions(-) diff --git a/docs/source/porting.rst b/docs/source/porting.rst index 869fddcd..a4813f3a 100644 --- a/docs/source/porting.rst +++ b/docs/source/porting.rst @@ -1,2 +1,12 @@ -Porting 编写说明 -============================== \ No newline at end of file +Porting 如何编写 +============================== + + + +从机 porting +---------------------------- + + + +主机 porting +---------------------------- \ No newline at end of file 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串口 `_。