| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- Q & A
- ==============================
- 移植提问模板
- ----------------
- 请在下列途径提交问题:
- - RT-Thread 官方论坛: https://club.rt-thread.org/ask/tag/5f5f851966917b14.html
- - Github issue: https://github.com/cherry-embedded/CherryUSB/issues/new/choose
- 提问中请包含以下信息:
- - 使用的版本
- - 使用的板子,引脚,USB IP
- - 是否配置 USB 中断,USB 时钟,USB 引脚,USB phy 配置,以及 USB 寄存器地址是否正确,截图
- - 是否能进 USB 中断
- - 芯片是否带有 cache功能,是否做了 no cache 处理,截图
- - USB 电路是否画正确,是否使用杜邦线连接,是否直连,如果正常,请说明正常原因
- - 如果能进中断,配置 **#define CONFIG_USB_DBG_LEVEL USB_DBG_LOG** 并提供 log,仅限商业 IP, 其余 IP 禁止开启 log,否则无法枚举
- - 是否流片并销售
- 其余问题提问模板
- ------------------
- 具体说明现象,复现方式,使用我提供的 demo 再测试,以及提供完整 log
- CherryUSB 性能能到多少
- ----------------------------------------------------------------
- 参考 :ref:`performace_show`
- ST IP 命名问题
- ------------------
- ST 命名为 USB_OTG_FS, USB_OTG_HS,并不是说明本身是高速或者全速,只是代表可以支持到高速,但是本身都是全速,需要外挂高速phy。因此,提问禁止说这两个词,请使用 USB0(PA11/PA12),USB1(PB14/PB15) 代替。其余国产厂家同理。
- GD IP 问题
- ------------------
- GD IP 采用 DWC2,但是读取的硬件参数都是 0(我也不懂为什么不给人知道),因此需要用户自行知道硬件信息,从 1.5.0 开始由于需要读取硬件信息,因此无法直接使用。
- 其次 GD 复位以后无法使用 EPDIS 功能关闭端点,需要用户删除 reset 中断中的以下代码:
- .. code-block:: C
- USB_OTG_INEP(i)->DIEPCTL = (USB_OTG_DIEPCTL_EPDIS | USB_OTG_DIEPCTL_SNAK);
- USB_OTG_OUTEP(i)->DOEPCTL = (USB_OTG_DOEPCTL_EPDIS | USB_OTG_DOEPCTL_SNAK);
- 除此之外可能存在其他未知 BUG,请自行测试。
- 开启 USB_LOG_DBG 后无法枚举
- ----------------------------------------------------------------
- 有且仅有商业性 IP 开启后可以枚举,其余 IP 禁止开启,否则无法枚举。懂得都懂。
- USB3 CV测试用哪个版本
- ------------------------------
- 1.4.3 版本及以上
- Ep addr XXX fifo overflow
- ------------------------------
- .. figure:: img/question1.png
- 该错误表示该端点默认设置的 fifo 空间不够用,需要增大 fifo 空间,通常见于 DWC2/MUSB IP。FIFO 设置参考相关的 glue 文件。
- Ep addr XXX overflow
- ------------------------------
- .. figure:: img/question2.png
- 该错误表示该 IP 硬件上没有这么多端点, 请更换 IP or 减少端点使用。
- 当然也可以修改为双向端点,考虑到不是所有的 IP 都支持双向端点,因此默认 demo 不做双向功能,举例默认是 81 02 这样的而不是 81 01,如果支持,自行修改。某些 IP 双向端点可能会占用相同的硬件信息,不一定能同时使用,自行检查。
- This dwc2 version does not support dma mode, so stop working
- ----------------------------------------------------------------
- 该 DWC2 版本不支持 dma 模式,禁止使用。不使用 DMA 模式会频繁触发 NAK 中断(大概几十us一次),CPU 占用率过高。
- OTG 有哪些芯片支持
- ------------------------------
- 当前主线仅 HPM 芯片支持 OTG 功能,通过 ID 引脚自动切换主从模式,其他芯片请使用手动切换模式 OR 自行实现添加 ID 识别的驱动。
- PC 识别的 COM 口如何更改名称
- ----------------------------------------------------------------
- 这是微软对 CDC ACM 的驱动问题,无法修改,如需修改,请联系微软并缴纳费用+编写驱动后即可更改。
- connect 和 disconnect event 不触发
- ----------------------------------------------------------------
- 当前仅 hpm 芯片支持 connect 和 disconnect 事件,其他芯片请使用 USB 检测 vbus 电路。DWC2 IP 支持,但是由于需要占用引脚,并且大多是log 口,然后不同使能的配置也不一样,因此不做支持。
- __has_include 报错
- ------------------------------------------------------------------
- 如果报错,需要编译器支持 c99 语法,如果是 keil,请用 ac6 编译器
- CONFIG_USB_HS 何时使用
- ----------------------------------------------------------------
- 当你的芯片硬件支持高速,并想初始化成高速模式时开启,相关 IP 会根据该宏配置内部或者外部 高速 PHY。
- Failed to enable port
- ----------------------------------------------------------------
- 供电不足或者硬件 USB 电路问题
- 移植 usb host 出现 urb 返回 -12/-14
- ----------------------------------------------------------------
- 检查 phy 配置,cache 配置(如果有),电源供电(建议自供电)
- USB_ERR_NAK 说明
- ----------------------------------------------------------------
- USB_ERR_NAK 只存在于 DWC2 buffer dma/slave 模式(我们不使用 slave 模式),DWC2 在 buffer dma模式下对于中断传输不支持硬件处理 NAK 中断,因此需要软件处理,导致 NAK 中断非常多,建议搭配定时器使用。
- DWC2 scatter/gather dma 模式下全部由硬件处理,但是不支持 split 传输。总结, **食之无味,弃之可惜**。
- USB host 连接 USB 网卡问题
- ----------------------------------------------------------------
- 表现为能识别网卡并且分配到 IP 地址,但是无法 ping 通,这是因为网卡自身需要开启自动拨号,通常需要使用 AT 口设置。具体为 EC20/ML307 等模块。
- 什么时候需要开启 CONFIG_USB_DCACHE_ENABLE
- -------------------------------------------------
- 当芯片带有 cache 功能,并且没有使用 no cache ram 时需要开启此宏以保证数据一致性。 **使用 EHCI 时,内部依旧需要使用 nocache ram**。通常,对于第三方平台或者组件,没有使用 no cache ram 宏修饰,都是使用全局变量或者 malloc 等
- 操作,这部分 RAM 通常是走 cache 的,因此需要开启此宏。建议第三方平台使用时,必须开启。
- 哪些 IP 对数据有对齐要求
- -------------------------------------------------
- - 在未开启 CONFIG_USB_DCACHE_ENABLE 时,仅 DWC2/WCH/AIC IP 需要 4字节对齐,其余 1字节对齐即可。
- - 在开启 CONFIG_USB_DCACHE_ENABLE 时,所有 IP 都需要对齐到 CONFIG_USB_ALIGN_SIZE 字节
|