sakumisu 3 лет назад
Родитель
Сommit
07effe3d22

+ 12 - 2
docs/source/porting.rst

@@ -1,2 +1,12 @@
-Porting 编写说明
-==============================
+Porting 如何编写
+==============================
+
+
+
+从机 porting
+----------------------------
+
+
+
+主机 porting
+----------------------------

+ 12 - 17
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` ,然后由真正的中断函数根据主从模式调用这两个函数。

+ 7 - 2
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
+.. figure:: img/stm32_init.png
+
+其他小伙伴的移植笔记
+-------------------------
+- @kylongmu `stm32h743-st-nucleo移植CherryUSB- CDC串口 <https://club.rt-thread.org/ask/article/3719.html>`_。