فهرست منبع

Deploying to gh-pages from @ cherry-embedded/CherryUSB@68b28a43f30829f944eb9ba8a81c3ead4736b6f2 🚀

sakumisu 5 ماه پیش
والد
کامیت
898bfb651c

+ 0 - 0
_images/stm32_3.png → _images/stm32_3_2.png


+ 0 - 0
_images/stm32_4.png → _images/stm32_4_2.png


BIN
_images/usbhost_uvc1.gif


+ 4 - 0
_sources/opensource.rst.txt

@@ -56,3 +56,7 @@ Klipper is a 3d-printer firmware.
 适配链接:待开放
 适配链接:待开放
 
 
 
 
+MAKCU/KMBOX
+--------------
+
+懂的都懂,不开放

+ 2 - 2
_sources/q&a.rst.txt

@@ -11,11 +11,11 @@ Q & A
 提问中请包含以下信息:
 提问中请包含以下信息:
 
 
 - 使用的板子,引脚,USB IP
 - 使用的板子,引脚,USB IP
-- USB 中断,时钟,引脚,寄存器地址是否正确,截图
+- 是否配置 USB 中断,USB 时钟,USB 引脚,USB phy 配置,以及 USB 寄存器地址是否正确,截图
 - 是否能进 USB 中断
 - 是否能进 USB 中断
 - 芯片是否带有 cache功能,是否做了 no cache 处理,截图
 - 芯片是否带有 cache功能,是否做了 no cache 处理,截图
 - 硬件是否正常,是否使用杜邦线连接,如果正常,请说明正常原因
 - 硬件是否正常,是否使用杜邦线连接,如果正常,请说明正常原因
-- 配置 **#define CONFIG_USB_DBG_LEVEL USB_DBG_LOG** 并提供 log,仅限商业 IP, 其余 IP 禁止开启 log,否则无法枚举
+- 如果能进中断,配置 **#define CONFIG_USB_DBG_LEVEL USB_DBG_LOG** 并提供 log,仅限商业 IP, 其余 IP 禁止开启 log,否则无法枚举
 - 是否流片并销售
 - 是否流片并销售
 
 
 其余问题提问模板
 其余问题提问模板

+ 5 - 3
_sources/quick_start/demo.rst.txt

@@ -116,12 +116,12 @@ USB Device 移植要点
 - 如果使用 fsdev ip,勾选 **USB** 。如果使用 dwc2 ip,勾选 **USB_OTG_FS** 或者勾选  **USB_OTG_HS**。开启 USB 中断,其他配置对我们没用,代码中不会使用任何 st 的 usb 库。
 - 如果使用 fsdev ip,勾选 **USB** 。如果使用 dwc2 ip,勾选 **USB_OTG_FS** 或者勾选  **USB_OTG_HS**。开启 USB 中断,其他配置对我们没用,代码中不会使用任何 st 的 usb 库。
 
 
 .. figure:: img/stm32_3_1.png
 .. figure:: img/stm32_3_1.png
-.. figure:: img/stm32_3.png
+.. figure:: img/stm32_3_2.png
 
 
 - 配置 usb clock 为 48M
 - 配置 usb clock 为 48M
 
 
 .. figure:: img/stm32_4_1.png
 .. figure:: img/stm32_4_1.png
-.. figure:: img/stm32_4.png
+.. figure:: img/stm32_4_2.png
 
 
 - 选择好工程,这里我们选择 keil,设置好 stack 和 heap,如果使用 msc 可以推荐设置大点,然后点击 **Generate Code**。
 - 选择好工程,这里我们选择 keil,设置好 stack 和 heap,如果使用 msc 可以推荐设置大点,然后点击 **Generate Code**。
 
 
@@ -214,10 +214,12 @@ USB Host 移植要点
 
 
 - 拷贝 **xxx_msp.c** 中的 `HAL_HCD_MspInit` 函数中的内容到 `usb_hc_low_level_init` 函数中,屏蔽 st 生成的 usb 初始化
 - 拷贝 **xxx_msp.c** 中的 `HAL_HCD_MspInit` 函数中的内容到 `usb_hc_low_level_init` 函数中,屏蔽 st 生成的 usb 初始化
 - 在中断函数中调用 `USBH_IRQHandler`,并传入 `busid`
 - 在中断函数中调用 `USBH_IRQHandler`,并传入 `busid`
+
+.. figure:: img/stm32_19.png
+
 - 链接脚本修改参考 :ref:`usbh_link_script` 章节
 - 链接脚本修改参考 :ref:`usbh_link_script` 章节
 - 如果芯片带 cache,cache 修改参考 :ref:`usb_cache` 章节
 - 如果芯片带 cache,cache 修改参考 :ref:`usb_cache` 章节
 - 调用 `usbh_initialize` 并填入 `busid` 和 USB IP 的 `reg base`, `busid` 从 0 开始,不能超过 `CONFIG_USBHOST_MAX_BUS`
 - 调用 `usbh_initialize` 并填入 `busid` 和 USB IP 的 `reg base`, `busid` 从 0 开始,不能超过 `CONFIG_USBHOST_MAX_BUS`
 - 启动线程
 - 启动线程
 
 
 .. figure:: img/stm32_18.png
 .. figure:: img/stm32_18.png
-.. figure:: img/stm32_19.png

+ 4 - 6
_sources/quick_start/transplant.rst.txt

@@ -6,26 +6,24 @@
 USB Device 移植要点
 USB Device 移植要点
 -----------------------
 -----------------------
 
 
-- 拷贝 CherryUSB 源码到工程目录下,并按需添加源文件和头文件路径,其中 `usbd_core.c` 和 `usb_dc_xxx.c` 为必须添加项。而 `usb_dc_xxx.c` 是芯片所对应的 USB IP dcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 **port** 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了
+- 拷贝 CherryUSB 源码到工程目录下,并按需添加源文件和头文件路径,头文件路径建议全部添加。其中 `usbd_core.c` 和 `usb_dc_xxx.c` 为必须添加项。而 `usb_dc_xxx.c` 是芯片所对应的 USB IP dcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 **port** 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了
 - 拷贝 `cherryusb_config_template.h` 文件到自己工程目录下,命名为 `usb_config.h`,并添加相应的目录头文件路径
 - 拷贝 `cherryusb_config_template.h` 文件到自己工程目录下,命名为 `usb_config.h`,并添加相应的目录头文件路径
 - 实现 `usb_dc_low_level_init` 函数(该函数主要负责 USB 时钟、引脚、中断的初始化)。该函数可以放在你想要放的任何参与编译的 c 文件中。如何进行 USB 的时钟、引脚、中断等初始化,请自行根据你使用的芯片原厂提供的源码中进行添加。
 - 实现 `usb_dc_low_level_init` 函数(该函数主要负责 USB 时钟、引脚、中断的初始化)。该函数可以放在你想要放的任何参与编译的 c 文件中。如何进行 USB 的时钟、引脚、中断等初始化,请自行根据你使用的芯片原厂提供的源码中进行添加。
-- 描述符的注册、class的注册、接口的注册、端点中断的注册。不会的参考 demo 下的 template
-- 调用 `usbd_initialize` 并填入 `busid` 和 USB IP 的 `reg base`, `busid` 从 0 开始,不能超过 `CONFIG_USBDEV_MAX_BUS`
 - 在中断函数中调用 `USBD_IRQHandler`,并传入 `busid`, 如果你的 SDK 中中断入口已经存在 `USBD_IRQHandler` ,请更改 USB 协议栈中的名称
 - 在中断函数中调用 `USBD_IRQHandler`,并传入 `busid`, 如果你的 SDK 中中断入口已经存在 `USBD_IRQHandler` ,请更改 USB 协议栈中的名称
 - 如果芯片带 cache,cache 修改参考 :ref:`usb_cache` 章节
 - 如果芯片带 cache,cache 修改参考 :ref:`usb_cache` 章节
-- 编译使用。各个 class 如何使用,参考 demo 下的 template
+- 注册描述符并调用 `usbd_initialize`,填入 `busid` 和 USB IP 的 `reg base`, `busid` 从 0 开始,不能超过 `CONFIG_USBDEV_MAX_BUS`,可以直接使用 demo 下的 template
 
 
 USB Host 移植要点
 USB Host 移植要点
 -----------------------
 -----------------------
 
 
-- 拷贝 CherryUSB 源码到工程目录下,并按需添加源文件和头文件路径,其中 `usbh_core.c` 、 `usb_hc_xxx.c` 以及 **osal** 目录下源文件(根据不同的 os 选择对应的源文件)为必须添加项。而 `usb_hc_xxx.c` 是芯片所对应的 USB IP hcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 **port** 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了
+- 拷贝 CherryUSB 源码到工程目录下,并按需添加源文件和头文件路径,头文件路径建议全部添加。其中 `usbh_core.c` 、 `usb_hc_xxx.c` 以及 **osal** 目录下源文件(根据不同的 os 选择对应的源文件)为必须添加项。而 `usb_hc_xxx.c` 是芯片所对应的 USB IP hcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 **port** 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了
 - 拷贝 `cherryusb_config_template.h` 文件到自己工程目录下,命名为 `usb_config.h`,并添加相应的目录头文件路径
 - 拷贝 `cherryusb_config_template.h` 文件到自己工程目录下,命名为 `usb_config.h`,并添加相应的目录头文件路径
 - 实现 `usb_hc_low_level_init` 函数(该函数主要负责 USB 时钟、引脚、中断的初始化)。该函数可以放在你想要放的任何参与编译的 c 文件中。如何进行 USB 的时钟、引脚、中断等初始化,请自行根据你使用的芯片原厂提供的源码中进行添加。
 - 实现 `usb_hc_low_level_init` 函数(该函数主要负责 USB 时钟、引脚、中断的初始化)。该函数可以放在你想要放的任何参与编译的 c 文件中。如何进行 USB 的时钟、引脚、中断等初始化,请自行根据你使用的芯片原厂提供的源码中进行添加。
 - 调用 `usbh_initialize` 并填入 `busid` 和 USB IP 的 `reg base`, `busid` 从 0 开始,不能超过 `CONFIG_USBHOST_MAX_BUS`
 - 调用 `usbh_initialize` 并填入 `busid` 和 USB IP 的 `reg base`, `busid` 从 0 开始,不能超过 `CONFIG_USBHOST_MAX_BUS`
 - 在中断函数中调用 `USBH_IRQHandler`,并传入 `busid`, 如果你的 SDK 中中断入口已经存在 `USBH_IRQHandler` ,请更改 USB 协议栈中的名称
 - 在中断函数中调用 `USBH_IRQHandler`,并传入 `busid`, 如果你的 SDK 中中断入口已经存在 `USBH_IRQHandler` ,请更改 USB 协议栈中的名称
 - 链接脚本修改参考 :ref:`usbh_link_script` 章节
 - 链接脚本修改参考 :ref:`usbh_link_script` 章节
 - 如果芯片带 cache,cache 修改参考 :ref:`usb_cache` 章节
 - 如果芯片带 cache,cache 修改参考 :ref:`usb_cache` 章节
-- 编译使用。基础的 cdc + hid + msc 参考 `usb_host.c` 文件,其余参考 **platform** 目录下适配
+- 调用 `usbh_initialize` ,填入 `busid` 和 USB IP 的 `reg base`, `busid` 从 0 开始,不能超过 `CONFIG_USBHOST_MAX_BUS` 。基础的 cdc + hid + msc 参考 `usb_host.c` 文件,其余参考 **platform** 目录下适配
 
 
 .. _usbh_link_script:
 .. _usbh_link_script:
 
 

+ 8 - 4
_sources/support/index.rst.txt

@@ -7,19 +7,23 @@
 
 
 .. figure:: img/ohci.png
 .. figure:: img/ohci.png
 
 
-- 主机 UVC & UAC 类 EHCI IP 中 ISO 驱动和 UAC/UVC 框架,iso 支持最多一个微帧 3 包
+- EHCI IP 中 ISO 驱动和 UAC/UVC 框架,搭配主机 UVC & UAC 类(这部分是开源的)使用。iso 支持一个微帧 1/2/3 包,支持 MJPEG 和 YUV 摄像头
 
 
 .. figure:: img/ehci_hostuvc1.png
 .. figure:: img/ehci_hostuvc1.png
 .. figure:: img/ehci_hostuvc2.png
 .. figure:: img/ehci_hostuvc2.png
 
 
-- 主机 UVC & UAC 类 DWC2 IP 中 ISO 驱动和 UAC/UVC 框架,iso 支持最多一个微帧 3 包
+演示 USB Host UVC 驱动 648 * 480 YUV 摄像头。FPS 30。
+
+.. figure:: img/usbhost_uvc.gif
+
+- DWC2 IP 中 ISO 驱动和 UAC/UVC 框架,搭配主机 UVC & UAC 类(这部分是开源的)使用。iso 支持一个微帧 1/2/3 包,支持 MJPEG 和 YUV 摄像头
 
 
 .. figure:: img/dwc2_hostuvc1.png
 .. figure:: img/dwc2_hostuvc1.png
 .. figure:: img/dwc2_hostuvc2.png
 .. figure:: img/dwc2_hostuvc2.png
 .. figure:: img/dwc2_hostuvc3.png
 .. figure:: img/dwc2_hostuvc3.png
 .. figure:: img/dwc2_hostuac.png
 .. figure:: img/dwc2_hostuac.png
 
 
-- 主机 UVC & UAC 类 MUSB IP 中 ISO 驱动和 UAC/UVC 框架, MUSB 需要为 mentor 公司制定的标准 IP
+- MUSB IP 中 ISO 驱动和 UAC/UVC 框架,搭配主机 UVC & UAC 类(这部分是开源的)使用。MUSB 需要为 mentor 公司制定的标准 IP
 
 
 - 从机 MTP 类驱动, 支持多文件和多文件夹,支持 MCU 端增删文件并与 PC 同步
 - 从机 MTP 类驱动, 支持多文件和多文件夹,支持 MCU 端增删文件并与 PC 同步
 
 
@@ -35,5 +39,5 @@
 .. figure:: img/rndistx.png
 .. figure:: img/rndistx.png
 .. figure:: img/rndisrx.png
 .. figure:: img/rndisrx.png
 
 
-- 定制化 class 驱动或者 IP 驱动
+- 定制化 class 驱动或者 IP 驱动适配
 - 技术支持相关
 - 技术支持相关

+ 5 - 0
opensource.html

@@ -60,6 +60,7 @@
 <li class="toctree-l2"><a class="reference internal" href="#lvgl">LVGL</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#lvgl">LVGL</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#qmk">QMK</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#qmk">QMK</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#klipper">Klipper</a></li>
 <li class="toctree-l2"><a class="reference internal" href="#klipper">Klipper</a></li>
+<li class="toctree-l2"><a class="reference internal" href="#makcu-kmbox">MAKCU/KMBOX</a></li>
 </ul>
 </ul>
 </li>
 </li>
 <li class="toctree-l1"><a class="reference internal" href="share.html">开发者经验/开源项目分享</a></li>
 <li class="toctree-l1"><a class="reference internal" href="share.html">开发者经验/开源项目分享</a></li>
@@ -211,6 +212,10 @@
 <p>Klipper is a 3d-printer firmware.</p>
 <p>Klipper is a 3d-printer firmware.</p>
 <p>适配链接:待开放</p>
 <p>适配链接:待开放</p>
 </section>
 </section>
+<section id="makcu-kmbox">
+<h2>MAKCU/KMBOX<a class="headerlink" href="#makcu-kmbox" title="Link to this heading"></a></h2>
+<p>懂的都懂,不开放</p>
+</section>
 </section>
 </section>
 
 
 
 

+ 2 - 2
q&a.html

@@ -181,11 +181,11 @@
 <p>提问中请包含以下信息:</p>
 <p>提问中请包含以下信息:</p>
 <ul class="simple">
 <ul class="simple">
 <li><p>使用的板子,引脚,USB IP</p></li>
 <li><p>使用的板子,引脚,USB IP</p></li>
-<li><p>USB 中断,时钟,引脚,寄存器地址是否正确,截图</p></li>
+<li><p>是否配置 USB 中断,USB 时钟,USB 引脚,USB phy 配置,以及 USB 寄存器地址是否正确,截图</p></li>
 <li><p>是否能进 USB 中断</p></li>
 <li><p>是否能进 USB 中断</p></li>
 <li><p>芯片是否带有 cache功能,是否做了 no cache 处理,截图</p></li>
 <li><p>芯片是否带有 cache功能,是否做了 no cache 处理,截图</p></li>
 <li><p>硬件是否正常,是否使用杜邦线连接,如果正常,请说明正常原因</p></li>
 <li><p>硬件是否正常,是否使用杜邦线连接,如果正常,请说明正常原因</p></li>
-<li><p>配置 <strong>#define CONFIG_USB_DBG_LEVEL USB_DBG_LOG</strong> 并提供 log,仅限商业 IP, 其余 IP 禁止开启 log,否则无法枚举</p></li>
+<li><p>如果能进中断,配置 <strong>#define CONFIG_USB_DBG_LEVEL USB_DBG_LOG</strong> 并提供 log,仅限商业 IP, 其余 IP 禁止开启 log,否则无法枚举</p></li>
 <li><p>是否流片并销售</p></li>
 <li><p>是否流片并销售</p></li>
 </ul>
 </ul>
 </section>
 </section>

+ 7 - 5
quick_start/demo.html

@@ -288,7 +288,7 @@
 <img alt="../_images/stm32_3_1.png" src="../_images/stm32_3_1.png" />
 <img alt="../_images/stm32_3_1.png" src="../_images/stm32_3_1.png" />
 </figure>
 </figure>
 <figure class="align-default">
 <figure class="align-default">
-<img alt="../_images/stm32_3.png" src="../_images/stm32_3.png" />
+<img alt="../_images/stm32_3_2.png" src="../_images/stm32_3_2.png" />
 </figure>
 </figure>
 <ul class="simple">
 <ul class="simple">
 <li><p>配置 usb clock 为 48M</p></li>
 <li><p>配置 usb clock 为 48M</p></li>
@@ -297,7 +297,7 @@
 <img alt="../_images/stm32_4_1.png" src="../_images/stm32_4_1.png" />
 <img alt="../_images/stm32_4_1.png" src="../_images/stm32_4_1.png" />
 </figure>
 </figure>
 <figure class="align-default">
 <figure class="align-default">
-<img alt="../_images/stm32_4.png" src="../_images/stm32_4.png" />
+<img alt="../_images/stm32_4_2.png" src="../_images/stm32_4_2.png" />
 </figure>
 </figure>
 <ul class="simple">
 <ul class="simple">
 <li><p>选择好工程,这里我们选择 keil,设置好 stack 和 heap,如果使用 msc 可以推荐设置大点,然后点击 <strong>Generate Code</strong>。</p></li>
 <li><p>选择好工程,这里我们选择 keil,设置好 stack 和 heap,如果使用 msc 可以推荐设置大点,然后点击 <strong>Generate Code</strong>。</p></li>
@@ -418,6 +418,11 @@
 <ul class="simple">
 <ul class="simple">
 <li><p>拷贝 <strong>xxx_msp.c</strong> 中的 <cite>HAL_HCD_MspInit</cite> 函数中的内容到 <cite>usb_hc_low_level_init</cite> 函数中,屏蔽 st 生成的 usb 初始化</p></li>
 <li><p>拷贝 <strong>xxx_msp.c</strong> 中的 <cite>HAL_HCD_MspInit</cite> 函数中的内容到 <cite>usb_hc_low_level_init</cite> 函数中,屏蔽 st 生成的 usb 初始化</p></li>
 <li><p>在中断函数中调用 <cite>USBH_IRQHandler</cite>,并传入 <cite>busid</cite></p></li>
 <li><p>在中断函数中调用 <cite>USBH_IRQHandler</cite>,并传入 <cite>busid</cite></p></li>
+</ul>
+<figure class="align-default">
+<img alt="../_images/stm32_19.png" src="../_images/stm32_19.png" />
+</figure>
+<ul class="simple">
 <li><p>链接脚本修改参考 <a class="reference internal" href="transplant.html#usbh-link-script"><span class="std std-ref">主机链接脚本修改</span></a> 章节</p></li>
 <li><p>链接脚本修改参考 <a class="reference internal" href="transplant.html#usbh-link-script"><span class="std std-ref">主机链接脚本修改</span></a> 章节</p></li>
 <li><p>如果芯片带 cache,cache 修改参考 <a class="reference internal" href="transplant.html#usb-cache"><span class="std std-ref">cache 配置修改</span></a> 章节</p></li>
 <li><p>如果芯片带 cache,cache 修改参考 <a class="reference internal" href="transplant.html#usb-cache"><span class="std std-ref">cache 配置修改</span></a> 章节</p></li>
 <li><p>调用 <cite>usbh_initialize</cite> 并填入 <cite>busid</cite> 和 USB IP 的 <cite>reg base</cite>, <cite>busid</cite> 从 0 开始,不能超过 <cite>CONFIG_USBHOST_MAX_BUS</cite></p></li>
 <li><p>调用 <cite>usbh_initialize</cite> 并填入 <cite>busid</cite> 和 USB IP 的 <cite>reg base</cite>, <cite>busid</cite> 从 0 开始,不能超过 <cite>CONFIG_USBHOST_MAX_BUS</cite></p></li>
@@ -426,9 +431,6 @@
 <figure class="align-default">
 <figure class="align-default">
 <img alt="../_images/stm32_18.png" src="../_images/stm32_18.png" />
 <img alt="../_images/stm32_18.png" src="../_images/stm32_18.png" />
 </figure>
 </figure>
-<figure class="align-default">
-<img alt="../_images/stm32_19.png" src="../_images/stm32_19.png" />
-</figure>
 </section>
 </section>
 </section>
 </section>
 </section>
 </section>

+ 4 - 6
quick_start/transplant.html

@@ -169,27 +169,25 @@
 <section id="usb-device">
 <section id="usb-device">
 <h2>USB Device 移植要点<a class="headerlink" href="#usb-device" title="Link to this heading"></a></h2>
 <h2>USB Device 移植要点<a class="headerlink" href="#usb-device" title="Link to this heading"></a></h2>
 <ul class="simple">
 <ul class="simple">
-<li><p>拷贝 CherryUSB 源码到工程目录下,并按需添加源文件和头文件路径,其中 <cite>usbd_core.c</cite> 和 <cite>usb_dc_xxx.c</cite> 为必须添加项。而 <cite>usb_dc_xxx.c</cite> 是芯片所对应的 USB IP dcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 <strong>port</strong> 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了</p></li>
+<li><p>拷贝 CherryUSB 源码到工程目录下,并按需添加源文件和头文件路径,头文件路径建议全部添加。其中 <cite>usbd_core.c</cite> 和 <cite>usb_dc_xxx.c</cite> 为必须添加项。而 <cite>usb_dc_xxx.c</cite> 是芯片所对应的 USB IP dcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 <strong>port</strong> 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了</p></li>
 <li><p>拷贝 <cite>cherryusb_config_template.h</cite> 文件到自己工程目录下,命名为 <cite>usb_config.h</cite>,并添加相应的目录头文件路径</p></li>
 <li><p>拷贝 <cite>cherryusb_config_template.h</cite> 文件到自己工程目录下,命名为 <cite>usb_config.h</cite>,并添加相应的目录头文件路径</p></li>
 <li><p>实现 <cite>usb_dc_low_level_init</cite> 函数(该函数主要负责 USB 时钟、引脚、中断的初始化)。该函数可以放在你想要放的任何参与编译的 c 文件中。如何进行 USB 的时钟、引脚、中断等初始化,请自行根据你使用的芯片原厂提供的源码中进行添加。</p></li>
 <li><p>实现 <cite>usb_dc_low_level_init</cite> 函数(该函数主要负责 USB 时钟、引脚、中断的初始化)。该函数可以放在你想要放的任何参与编译的 c 文件中。如何进行 USB 的时钟、引脚、中断等初始化,请自行根据你使用的芯片原厂提供的源码中进行添加。</p></li>
-<li><p>描述符的注册、class的注册、接口的注册、端点中断的注册。不会的参考 demo 下的 template</p></li>
-<li><p>调用 <cite>usbd_initialize</cite> 并填入 <cite>busid</cite> 和 USB IP 的 <cite>reg base</cite>, <cite>busid</cite> 从 0 开始,不能超过 <cite>CONFIG_USBDEV_MAX_BUS</cite></p></li>
 <li><p>在中断函数中调用 <cite>USBD_IRQHandler</cite>,并传入 <cite>busid</cite>, 如果你的 SDK 中中断入口已经存在 <cite>USBD_IRQHandler</cite> ,请更改 USB 协议栈中的名称</p></li>
 <li><p>在中断函数中调用 <cite>USBD_IRQHandler</cite>,并传入 <cite>busid</cite>, 如果你的 SDK 中中断入口已经存在 <cite>USBD_IRQHandler</cite> ,请更改 USB 协议栈中的名称</p></li>
 <li><p>如果芯片带 cache,cache 修改参考 <a class="reference internal" href="#usb-cache"><span class="std std-ref">cache 配置修改</span></a> 章节</p></li>
 <li><p>如果芯片带 cache,cache 修改参考 <a class="reference internal" href="#usb-cache"><span class="std std-ref">cache 配置修改</span></a> 章节</p></li>
-<li><p>编译使用。各个 class 如何使用,参考 demo 下的 template</p></li>
+<li><p>注册描述符并调用 <cite>usbd_initialize</cite>,填入 <cite>busid</cite> 和 USB IP 的 <cite>reg base</cite>, <cite>busid</cite> 从 0 开始,不能超过 <cite>CONFIG_USBDEV_MAX_BUS</cite>,可以直接使用 demo 下的 template</p></li>
 </ul>
 </ul>
 </section>
 </section>
 <section id="usb-host">
 <section id="usb-host">
 <h2>USB Host 移植要点<a class="headerlink" href="#usb-host" title="Link to this heading"></a></h2>
 <h2>USB Host 移植要点<a class="headerlink" href="#usb-host" title="Link to this heading"></a></h2>
 <ul class="simple">
 <ul class="simple">
-<li><p>拷贝 CherryUSB 源码到工程目录下,并按需添加源文件和头文件路径,其中 <cite>usbh_core.c</cite> 、 <cite>usb_hc_xxx.c</cite> 以及 <strong>osal</strong> 目录下源文件(根据不同的 os 选择对应的源文件)为必须添加项。而 <cite>usb_hc_xxx.c</cite> 是芯片所对应的 USB IP hcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 <strong>port</strong> 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了</p></li>
+<li><p>拷贝 CherryUSB 源码到工程目录下,并按需添加源文件和头文件路径,头文件路径建议全部添加。其中 <cite>usbh_core.c</cite> 、 <cite>usb_hc_xxx.c</cite> 以及 <strong>osal</strong> 目录下源文件(根据不同的 os 选择对应的源文件)为必须添加项。而 <cite>usb_hc_xxx.c</cite> 是芯片所对应的 USB IP hcd 部分驱动,如果不知道自己芯片属于那个 USB IP,参考 <strong>port</strong> 目录下的不同 USB IP 的 readme。如果使用的 USB IP 没有支持,只能自己实现了</p></li>
 <li><p>拷贝 <cite>cherryusb_config_template.h</cite> 文件到自己工程目录下,命名为 <cite>usb_config.h</cite>,并添加相应的目录头文件路径</p></li>
 <li><p>拷贝 <cite>cherryusb_config_template.h</cite> 文件到自己工程目录下,命名为 <cite>usb_config.h</cite>,并添加相应的目录头文件路径</p></li>
 <li><p>实现 <cite>usb_hc_low_level_init</cite> 函数(该函数主要负责 USB 时钟、引脚、中断的初始化)。该函数可以放在你想要放的任何参与编译的 c 文件中。如何进行 USB 的时钟、引脚、中断等初始化,请自行根据你使用的芯片原厂提供的源码中进行添加。</p></li>
 <li><p>实现 <cite>usb_hc_low_level_init</cite> 函数(该函数主要负责 USB 时钟、引脚、中断的初始化)。该函数可以放在你想要放的任何参与编译的 c 文件中。如何进行 USB 的时钟、引脚、中断等初始化,请自行根据你使用的芯片原厂提供的源码中进行添加。</p></li>
 <li><p>调用 <cite>usbh_initialize</cite> 并填入 <cite>busid</cite> 和 USB IP 的 <cite>reg base</cite>, <cite>busid</cite> 从 0 开始,不能超过 <cite>CONFIG_USBHOST_MAX_BUS</cite></p></li>
 <li><p>调用 <cite>usbh_initialize</cite> 并填入 <cite>busid</cite> 和 USB IP 的 <cite>reg base</cite>, <cite>busid</cite> 从 0 开始,不能超过 <cite>CONFIG_USBHOST_MAX_BUS</cite></p></li>
 <li><p>在中断函数中调用 <cite>USBH_IRQHandler</cite>,并传入 <cite>busid</cite>, 如果你的 SDK 中中断入口已经存在 <cite>USBH_IRQHandler</cite> ,请更改 USB 协议栈中的名称</p></li>
 <li><p>在中断函数中调用 <cite>USBH_IRQHandler</cite>,并传入 <cite>busid</cite>, 如果你的 SDK 中中断入口已经存在 <cite>USBH_IRQHandler</cite> ,请更改 USB 协议栈中的名称</p></li>
 <li><p>链接脚本修改参考 <a class="reference internal" href="#usbh-link-script"><span class="std std-ref">主机链接脚本修改</span></a> 章节</p></li>
 <li><p>链接脚本修改参考 <a class="reference internal" href="#usbh-link-script"><span class="std std-ref">主机链接脚本修改</span></a> 章节</p></li>
 <li><p>如果芯片带 cache,cache 修改参考 <a class="reference internal" href="#usb-cache"><span class="std std-ref">cache 配置修改</span></a> 章节</p></li>
 <li><p>如果芯片带 cache,cache 修改参考 <a class="reference internal" href="#usb-cache"><span class="std std-ref">cache 配置修改</span></a> 章节</p></li>
-<li><p>编译使用。基础的 cdc + hid + msc 参考 <cite>usb_host.c</cite> 文件,其余参考 <strong>platform</strong> 目录下适配</p></li>
+<li><p>调用 <cite>usbh_initialize</cite> ,填入 <cite>busid</cite> 和 USB IP 的 <cite>reg base</cite>, <cite>busid</cite> 从 0 开始,不能超过 <cite>CONFIG_USBHOST_MAX_BUS</cite> 。基础的 cdc + hid + msc 参考 <cite>usb_host.c</cite> 文件,其余参考 <strong>platform</strong> 目录下适配</p></li>
 </ul>
 </ul>
 </section>
 </section>
 <section id="usbh-link-script">
 <section id="usbh-link-script">

تفاوت فایلی نمایش داده نمی شود زیرا این فایل بسیار بزرگ است
+ 0 - 0
searchindex.js


+ 8 - 4
support/index.html

@@ -166,7 +166,7 @@
 <img alt="../_images/ohci.png" src="../_images/ohci.png" />
 <img alt="../_images/ohci.png" src="../_images/ohci.png" />
 </figure>
 </figure>
 <ul class="simple">
 <ul class="simple">
-<li><p>主机 UVC &amp; UAC 类 EHCI IP 中 ISO 驱动和 UAC/UVC 框架,iso 支持最多一个微帧 3 包</p></li>
+<li><p>EHCI IP 中 ISO 驱动和 UAC/UVC 框架,搭配主机 UVC &amp; UAC 类(这部分是开源的)使用。iso 支持一个微帧 1/2/3 包,支持 MJPEG 和 YUV 摄像头</p></li>
 </ul>
 </ul>
 <figure class="align-default">
 <figure class="align-default">
 <img alt="../_images/ehci_hostuvc1.png" src="../_images/ehci_hostuvc1.png" />
 <img alt="../_images/ehci_hostuvc1.png" src="../_images/ehci_hostuvc1.png" />
@@ -174,8 +174,12 @@
 <figure class="align-default">
 <figure class="align-default">
 <img alt="../_images/ehci_hostuvc2.png" src="../_images/ehci_hostuvc2.png" />
 <img alt="../_images/ehci_hostuvc2.png" src="../_images/ehci_hostuvc2.png" />
 </figure>
 </figure>
+<p>演示 USB Host UVC 驱动 648 * 480 YUV 摄像头。FPS 30。</p>
+<figure class="align-default">
+<img alt="../_images/usbhost_uvc1.gif" src="../_images/usbhost_uvc1.gif" />
+</figure>
 <ul class="simple">
 <ul class="simple">
-<li><p>主机 UVC &amp; UAC 类 DWC2 IP 中 ISO 驱动和 UAC/UVC 框架,iso 支持最多一个微帧 3 包</p></li>
+<li><p>DWC2 IP 中 ISO 驱动和 UAC/UVC 框架,搭配主机 UVC &amp; UAC 类(这部分是开源的)使用。iso 支持一个微帧 1/2/3 包,支持 MJPEG 和 YUV 摄像头</p></li>
 </ul>
 </ul>
 <figure class="align-default">
 <figure class="align-default">
 <img alt="../_images/dwc2_hostuvc1.png" src="../_images/dwc2_hostuvc1.png" />
 <img alt="../_images/dwc2_hostuvc1.png" src="../_images/dwc2_hostuvc1.png" />
@@ -190,7 +194,7 @@
 <img alt="../_images/dwc2_hostuac.png" src="../_images/dwc2_hostuac.png" />
 <img alt="../_images/dwc2_hostuac.png" src="../_images/dwc2_hostuac.png" />
 </figure>
 </figure>
 <ul class="simple">
 <ul class="simple">
-<li><p>主机 UVC &amp; UAC 类 MUSB IP 中 ISO 驱动和 UAC/UVC 框架, MUSB 需要为 mentor 公司制定的标准 IP</p></li>
+<li><p>MUSB IP 中 ISO 驱动和 UAC/UVC 框架,搭配主机 UVC &amp; UAC 类(这部分是开源的)使用。MUSB 需要为 mentor 公司制定的标准 IP</p></li>
 <li><p>从机 MTP 类驱动, 支持多文件和多文件夹,支持 MCU 端增删文件并与 PC 同步</p></li>
 <li><p>从机 MTP 类驱动, 支持多文件和多文件夹,支持 MCU 端增删文件并与 PC 同步</p></li>
 </ul>
 </ul>
 <figure class="align-default">
 <figure class="align-default">
@@ -215,7 +219,7 @@
 <img alt="../_images/rndisrx.png" src="../_images/rndisrx.png" />
 <img alt="../_images/rndisrx.png" src="../_images/rndisrx.png" />
 </figure>
 </figure>
 <ul class="simple">
 <ul class="simple">
-<li><p>定制化 class 驱动或者 IP 驱动</p></li>
+<li><p>定制化 class 驱动或者 IP 驱动适配</p></li>
 <li><p>技术支持相关</p></li>
 <li><p>技术支持相关</p></li>
 </ul>
 </ul>
 </section>
 </section>

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است