2024-05-15 12:10:38 +08:00
|
|
|
|
Q & A
|
|
|
|
|
|
==============================
|
|
|
|
|
|
|
|
|
|
|
|
移植提问模板
|
|
|
|
|
|
----------------
|
|
|
|
|
|
|
|
|
|
|
|
- 使用的板子,引脚,USB IP
|
|
|
|
|
|
- USB 中断,时钟,引脚,寄存器地址是否正确,截图
|
|
|
|
|
|
- 是否能进 USB 中断
|
|
|
|
|
|
- 芯片是否带有 cache功能,是否做了 no cache 处理,截图
|
|
|
|
|
|
- 硬件是否正常,是否使用杜邦线连接,如果正常,请说明正常原因
|
|
|
|
|
|
- 打开 CONFGI_USBDEV_SETUP_LOG_PRINT,并提供 log
|
|
|
|
|
|
- 是否流片并销售
|
|
|
|
|
|
|
|
|
|
|
|
其余问题提问模板
|
|
|
|
|
|
------------------
|
|
|
|
|
|
|
2024-05-17 17:03:50 +08:00
|
|
|
|
具体说明现象,复现方式,使用我提供的 demo 再测试,以及提供完整 log
|
2024-05-15 12:10:38 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CherryUSB 版本推荐
|
|
|
|
|
|
---------------------
|
|
|
|
|
|
|
|
|
|
|
|
如果没有特别情况,请使用最新版本.详细版本更新说明请参考 https://github.com/cherry-embedded/CherryUSB/releases。
|
|
|
|
|
|
|
|
|
|
|
|
- <= v0.10.2 初代版本
|
|
|
|
|
|
|
|
|
|
|
|
用于定基本的框架,仅支持单 USB IP, 并且无法动态使用硬件 pipe.
|
|
|
|
|
|
使用 XHCI 需要切到这个版本,高版本后续重构. 部分 IP 只能使用此版本,后续版本删除不再使用
|
|
|
|
|
|
|
|
|
|
|
|
- v1.0.0 过度版本
|
|
|
|
|
|
|
2024-05-17 17:03:50 +08:00
|
|
|
|
**支持动态使用硬件 pipe,不再固定**
|
2024-05-15 12:10:38 +08:00
|
|
|
|
|
|
|
|
|
|
- v1.1.0 过度版本
|
|
|
|
|
|
|
2024-05-17 17:03:50 +08:00
|
|
|
|
**主从机支持多 USB IP 且要相同 IP**;主机增加 bluetooth, chh340, ftdi, cp210x, asix 驱动
|
2024-05-15 12:10:38 +08:00
|
|
|
|
|
|
|
|
|
|
- v1.2.0
|
|
|
|
|
|
|
2024-05-17 17:03:50 +08:00
|
|
|
|
主机增加 rtl8152,cdc ncm 主机驱动;增加 esp ,aic 主机驱动;DWC2 优化代码方便阅读,并增加一些 FIFO 配置宏给用户,并增加 fifo check(这个很重要也很坑)
|
2024-05-15 12:10:38 +08:00
|
|
|
|
|
|
|
|
|
|
- v1.3.0
|
|
|
|
|
|
|
2024-05-17 17:03:50 +08:00
|
|
|
|
增加一些宏的 check;
|
|
|
|
|
|
主机增加 pl2303 驱动;使用 id table 来支持多个 vid,pid;增加 user_data 给用户使用;优化网络相关的 class 配置和性能;
|
|
|
|
|
|
从机增加一些获取端点信息的 api,并 **统一 ep0 buffer 的使用,美化代码**;**支持多种速度描述符自动选择功能**;
|
|
|
|
|
|
port 中 urb->timeout 清0 的处理有点问题(大数据量传输时会出现 no pipe alloc 异常,主要原因是刚启动传输就完成了,还没判断 timeout就被修改为0了,没有进入 take sem 流程),此版本已修复
|
2024-05-15 12:10:38 +08:00
|
|
|
|
|
|
|
|
|
|
CherryUSB 性能能到多少
|
|
|
|
|
|
----------------------------------------------------------------
|
|
|
|
|
|
|
2024-06-06 22:38:47 +08:00
|
|
|
|
可以达到硬件极限性能,当然需要硬件理论支持到这速度,CherryUSB 就支持到这速度,举例如下:
|
|
|
|
|
|
|
|
|
|
|
|
- HPM 系列(从机可以到 42MB/S, 主机 44MB/S, 已经达到硬件极限)
|
|
|
|
|
|
- BL 系列(从机 32MB/S, 主机 25MB/S, 已经达到硬件极限)
|
|
|
|
|
|
- STM32F4 全速(从机 900KB/S, 主机 1.12MB/S, 已经达到硬件极限)
|
|
|
|
|
|
|
|
|
|
|
|
从机测速demo: cdc_acm_template.c 并且关闭 log,脚本使用 `tools/test_srcipts/test_cdc_speed.py`
|
|
|
|
|
|
主机测速demo: usb_host.c 中 TEST_USBH_CDC_SPEED=1
|
2024-05-15 12:10:38 +08:00
|
|
|
|
|
|
|
|
|
|
ST IP 命名问题
|
|
|
|
|
|
------------------
|
|
|
|
|
|
|
|
|
|
|
|
ST 命名为 USB_OTG_FS, USB_OTG_HS,并不是说明本身是高速或者全速,只是代表可以支持到高速,但是本身都是全速,需要外挂高速phy。因此,提问禁止说这两个词,请使用 USB0(PA11/PA12),USB1(PB14/PB15) 代替。其余国产厂家同理。
|
|
|
|
|
|
|
2024-05-17 17:03:50 +08:00
|
|
|
|
GD IP 问题
|
|
|
|
|
|
------------------
|
|
|
|
|
|
|
|
|
|
|
|
GD IP 采用 DWC2,但是读取的硬件参数都是 0(我也不懂为什么不给人知道),因此需要用户自行知道硬件信息,并修改代码下面 check 的内容,然后删除 while1。
|
|
|
|
|
|
|
2024-05-15 12:10:38 +08:00
|
|
|
|
dwc2 has less endpoints than config, please check
|
|
|
|
|
|
---------------------------------------------------------------
|
|
|
|
|
|
|
2024-05-17 17:03:50 +08:00
|
|
|
|
该 IP 硬件上没有这么多端点,请修改 `CONFIG_USBDEV_EP_NUM`
|
2024-05-15 12:10:38 +08:00
|
|
|
|
|
|
|
|
|
|
Ep addr XXX overflow
|
|
|
|
|
|
------------------------------
|
|
|
|
|
|
|
2024-05-17 17:03:50 +08:00
|
|
|
|
该 IP 硬件上没有这么多端点, 请更换 IP or 减少端点使用。
|
2024-05-15 12:10:38 +08:00
|
|
|
|
|
|
|
|
|
|
This dwc2 version does not support dma mode, so stop working
|
|
|
|
|
|
----------------------------------------------------------------
|
|
|
|
|
|
|
2024-05-17 17:03:50 +08:00
|
|
|
|
该 DWC2 版本不支持 dma 模式,禁止使用。
|
2024-05-15 12:10:38 +08:00
|
|
|
|
|
|
|
|
|
|
__has_include 报错
|
|
|
|
|
|
------------------------------------------------------------------
|
|
|
|
|
|
如果报错,需要编译器支持 c99 语法,如果是 keil,请用 ac6 编译器
|
|
|
|
|
|
|
|
|
|
|
|
CONFIG_USB_HS 何时使用
|
|
|
|
|
|
----------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
|
|
当你的芯片硬件支持高速,并想初始化成高速模式时开启,相关 IP 会根据该宏配置内部或者外部 高速 PHY。
|