diff options
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/assets/allwinnertech.jpg | bin | 0 -> 67642 bytes | |||
| -rw-r--r-- | docs/assets/listenai.jpg | bin | 0 -> 43493 bytes | |||
| -rw-r--r-- | docs/assets/wch.jpg | bin | 0 -> 37268 bytes | |||
| -rwxr-xr-x | docs/en/api/api_device.rst | 18 | ||||
| -rwxr-xr-x | docs/en/support/img/tmcdev1.png | bin | 578670 -> 0 bytes | |||
| -rwxr-xr-x | docs/en/support/img/tmcdev2.png | bin | 218648 -> 0 bytes | |||
| -rwxr-xr-x | docs/en/support/index.rst | 5 | ||||
| -rw-r--r-- | docs/zh/api/api_device.rst | 19 | ||||
| -rw-r--r-- | docs/zh/api/api_host.rst | 14 | ||||
| -rw-r--r-- | docs/zh/demo/usbd_adb.rst | 18 | ||||
| -rw-r--r-- | docs/zh/quick_start/demo.rst | 56 | ||||
| -rw-r--r-- | docs/zh/quick_start/q&a.rst | 1 | ||||
| -rw-r--r-- | docs/zh/show/img/wch_speed.jpg | bin | 0 -> 75341 bytes | |||
| -rw-r--r-- | docs/zh/show/index.rst | 3 | ||||
| -rw-r--r-- | docs/zh/support/img/tmcdev1.png | bin | 578670 -> 0 bytes | |||
| -rw-r--r-- | docs/zh/support/img/tmcdev2.png | bin | 218648 -> 0 bytes | |||
| -rw-r--r-- | docs/zh/support/index.rst | 5 | ||||
| -rw-r--r-- | docs/zh/version.rst | 287 |
18 files changed, 281 insertions, 145 deletions
diff --git a/docs/assets/allwinnertech.jpg b/docs/assets/allwinnertech.jpg Binary files differnew file mode 100644 index 00000000..8c407c66 --- /dev/null +++ b/docs/assets/allwinnertech.jpg diff --git a/docs/assets/listenai.jpg b/docs/assets/listenai.jpg Binary files differnew file mode 100644 index 00000000..819466d5 --- /dev/null +++ b/docs/assets/listenai.jpg diff --git a/docs/assets/wch.jpg b/docs/assets/wch.jpg Binary files differnew file mode 100644 index 00000000..ed94d048 --- /dev/null +++ b/docs/assets/wch.jpg diff --git a/docs/en/api/api_device.rst b/docs/en/api/api_device.rst index f44be9dd..5272b9fc 100755 --- a/docs/en/api/api_device.rst +++ b/docs/en/api/api_device.rst @@ -388,12 +388,26 @@ usbd_audio_set_volume .. code-block:: C - void usbd_audio_set_volume(uint8_t busid, uint8_t ep, uint8_t ch, int volume_db); + void usbd_audio_set_volume(uint8_t busid, uint8_t ep, uint8_t ch, float volume_db); - **busid** USB bus ID - **ep** Endpoint to set volume - **ch** Channel to set volume -- **volume_db** Volume to set in decibels, range -100dB ~ 0dB +- **volume_db** Volume to set in dB, default range -100 ~ 0 + +usbd_audio_get_volume +"""""""""""""""""""""""""""""""""""" + +``usbd_audio_get_volume`` is used to get volume. + +.. code-block:: C + + float usbd_audio_get_volume(uint8_t busid, uint8_t ep, uint8_t ch); + +- **busid** USB bus ID +- **ep** Endpoint to get volume +- **ch** Channel to get volume +- **returns** Volume in dB, default range -100 ~ 0 usbd_audio_set_sampling_freq """""""""""""""""""""""""""""""""""" diff --git a/docs/en/support/img/tmcdev1.png b/docs/en/support/img/tmcdev1.png Binary files differdeleted file mode 100755 index 1eaf7155..00000000 --- a/docs/en/support/img/tmcdev1.png +++ /dev/null diff --git a/docs/en/support/img/tmcdev2.png b/docs/en/support/img/tmcdev2.png Binary files differdeleted file mode 100755 index 97c8297b..00000000 --- a/docs/en/support/img/tmcdev2.png +++ /dev/null diff --git a/docs/en/support/index.rst b/docs/en/support/index.rst index cc49dc4a..6c99550f 100755 --- a/docs/en/support/index.rst +++ b/docs/en/support/index.rst @@ -29,11 +29,6 @@ Demonstrates USB Host UVC driver with 648 * 480 YUV camera. FPS 30. .. figure:: img/mtpdev.png -- Device TMC class driver - -.. figure:: img/tmcdev1.png -.. figure:: img/tmcdev2.png - - USB network class high-performance version optimization, includes CDC-NCM, CDC-RNDIS, proprietary class drivers (supports multi-packet transmission and reception), RNDIS example shown below .. figure:: img/rndistx.png diff --git a/docs/zh/api/api_device.rst b/docs/zh/api/api_device.rst index 4c6617b1..ecc39a80 100644 --- a/docs/zh/api/api_device.rst +++ b/docs/zh/api/api_device.rst @@ -390,12 +390,27 @@ usbd_audio_set_volume .. code-block:: C - void usbd_audio_set_volume(uint8_t busid, uint8_t ep, uint8_t ch, int volume_db); + void usbd_audio_set_volume(uint8_t busid, uint8_t ep, uint8_t ch, float volume_db); - **busid** USB 总线 id - **ep** 要设置音量的端点 - **ch** 要设置音量的通道 -- **volume_db** 要设置音量的分贝,单位 -100dB ~ 0dB +- **volume_db** 要设置音量的 dB,默认范围 -100 ~ 0 + +usbd_audio_get_volume +"""""""""""""""""""""""""""""""""""" + +``usbd_audio_get_volume`` 用来获取音量。 + +.. code-block:: C + + float usbd_audio_get_volume(uint8_t busid, uint8_t ep, uint8_t ch); + +- **busid** USB 总线 id +- **ep** 要获取音量的端点 +- **ch** 要获取音量的通道 +- **返回** 音量的 dB,默认范围 -100 ~ 0 + usbd_audio_set_sampling_freq """""""""""""""""""""""""""""""""""" diff --git a/docs/zh/api/api_host.rst b/docs/zh/api/api_host.rst index ad93d2fb..393a6ff4 100644 --- a/docs/zh/api/api_host.rst +++ b/docs/zh/api/api_host.rst @@ -145,6 +145,20 @@ usbh_find_class_instance - **devname** class 名称 - **return** class 结构体句柄 +usbh_control_transfer +"""""""""""""""""""""""""""""""""""" + +``usbh_control_transfer`` 用来发送控制传输请求。 + +.. code-block:: C + + int usbh_control_transfer(struct usbh_hubport *hport, struct usb_setup_packet *setup, void *buffer); + +- **hport** hubport 结构体句柄 +- **setup** 控制传输请求结构体指针 +- **buffer** 数据缓冲区指针 +- **return** 实际传输的数据长度或者错误码,不包含 setup 长度 + lsusb """""""""""""""""""""""""""""""""""" diff --git a/docs/zh/demo/usbd_adb.rst b/docs/zh/demo/usbd_adb.rst index 6855135d..3890d510 100644 --- a/docs/zh/demo/usbd_adb.rst +++ b/docs/zh/demo/usbd_adb.rst @@ -1,7 +1,7 @@ ADB Device ================= -adb device demo 参考 `demo/adb/usbd_adb_template.c` 模板。默认适配 **cherrysh** (`platform/demo/adb/cherrysh_port.c`) 和 **rt-thread msh** (`platform/rtthread/usbd_adb_shell.c`),只需要在 main 中添加以下初始化即可。 +adb device demo 参考 `demo/adb_template.c` 模板。调用如下: .. code-block:: C @@ -11,11 +11,19 @@ adb device demo 参考 `demo/adb/usbd_adb_template.c` 模板。默认适配 **ch .. figure:: img/rtt_adb_shell1.png -进入 adb --------------- +shell 使用 +------------------- + +默认支持 **cherrysh** 和 **rt-thread msh**,如果使用其他 shell,需自行适配。 + +.. note:: 如使用 cherrysh,请将 class/adb/usbd_adb_cherrysh.c 加入到编译系统 + +sync 使用 +------------------- + +默认支持 **fatfs** 和 **rt-thread dfs**。如果使用 fatfs, **需要在代码初始化之前 mount 文件系统,并且根路径为 "/" **。参考 **platform/fatfs/vfs_fatfs_port.c**。 -- 使用 **cherrysh** 时枚举完成以后自动进入 adb 模式 -- 使用 **msh** 需要在 **msh** 中输入 ``adb_enter`` 进入 adb 模式 +.. note:: 如使用 sync 功能和 fatfs,请将 class/adb/usbd_adb_sync.c,platform/fatfs/vfs_fatfs_port.c 加入到编译系统 退出 adb -------------- diff --git a/docs/zh/quick_start/demo.rst b/docs/zh/quick_start/demo.rst index d56839fb..9add40a4 100644 --- a/docs/zh/quick_start/demo.rst +++ b/docs/zh/quick_start/demo.rst @@ -14,7 +14,7 @@ * - Repo url - USB IP - Version - * - https://github.com/CherryUSB/cherryusb_bouffalolab + * - https://github.com/bouffalolab/bouffalo_sdk - FOTG210 - less than latest @@ -28,11 +28,11 @@ * - Repo url - USB IP - Version - * - https://github.com/CherryUSB/cherryusb_hpmicro + * - https://github.com/hpmicro/hpm_sdk - CHIPIDEA - less than latest -基于 esp32s2/s3/p4 系列芯片(官方 SDK 支持) +基于 ESPressif 系列芯片(官方 SDK 支持) ------------------------------------------------- .. list-table:: @@ -105,7 +105,7 @@ ESP-Registry 可以参考官方文档,推荐使用 vscode + esp-idf 的开发� - AIC/EHCI/OHCI - less than latest -基于 Kendryte canmv-k230 系列(官方 SDK 支持) +基于 Kendryte K230 系列(官方 SDK 支持) ----------------------------------------------- .. list-table:: @@ -115,7 +115,7 @@ ESP-Registry 可以参考官方文档,推荐使用 vscode + esp-idf 的开发� * - Repo url - USB IP - Version - * - https://github.com/CherryUSB/k230_sdk + * - https://www.kendryte.com/k230_rtos/zh/main/userguide/how_to_build.html - DWC2 - less than latest @@ -133,6 +133,20 @@ ESP-Registry 可以参考官方文档,推荐使用 vscode + esp-idf 的开发� - MUSB - less than latest +基于 WCH 系列芯片 +-------------------------------------------- + +.. list-table:: + :widths: 10 10 10 + :header-rows: 1 + + * - Repo url + - USB IP + - Version + * - https://github.com/CherryUSB/cherryusb_wch https://github.com/CherryUSB/wch-support-cherryusb + - WCH USBHS/USBFS/USBSS + - greater than v1.6.1 + 基于 NXP MCX 系列芯片 --------------------------- @@ -308,16 +322,6 @@ USB Host 移植要点 .. figure:: img/stm32_18.png -基于 Actionstech 系列芯片(官方 SDK 支持) ------------------------------------------------------- - -Not opensource, 请联系 Actionstech 官方 - -基于新塘系列芯片(官方 SDK 支持) ------------------------------------------------------- - -Not opensource, 请联系 新塘 官方 - 基于 Sophgo 系列芯片(官方 SDK 支持) ------------------------------------------------------ @@ -342,6 +346,26 @@ Not opensource, 请联系 新塘 官方 * - Repo url - USB IP - Version - * - https://github.com/bekencorp/armino + * - https://github.com/bekencorp/bk_idk_ai - MUSB - equal to v0.7.0 + +基于 Actionstech 系列芯片(官方 SDK 支持) +------------------------------------------------------ + +Not opensource, 请联系 Actionstech 官方 + +基于 Nuvoton 系列芯片(官方 SDK 支持) +------------------------------------------------------ + +Not opensource, 请联系 Nuvoton 官方 + +基于 AllwinnerTech 系列芯片(官方 SDK 支持) +------------------------------------------------------ + +Not opensource, 请联系 AllwinnerTech 官方 + +基于 ListenAI 系列芯片(官方 SDK 支持) +------------------------------------------------------ + +Not opensource, 请联系 ListenAI 官方
\ No newline at end of file diff --git a/docs/zh/quick_start/q&a.rst b/docs/zh/quick_start/q&a.rst index 391b7037..821688ac 100644 --- a/docs/zh/quick_start/q&a.rst +++ b/docs/zh/quick_start/q&a.rst @@ -101,6 +101,7 @@ CONFIG_USB_HS 何时使用 ---------------------------------------------------------------- 当你的芯片硬件支持高速,并想初始化成高速模式时开启,相关 IP 会根据该宏配置内部或者外部 高速 PHY。 +需要注意,对于多 port 的情况,如果没有特别配置(比如某个口只支持全速,则该宏无效),否则所有 port 都会初始化成高速模式。 Failed to enable port ---------------------------------------------------------------- diff --git a/docs/zh/show/img/wch_speed.jpg b/docs/zh/show/img/wch_speed.jpg Binary files differnew file mode 100644 index 00000000..e7fb6c63 --- /dev/null +++ b/docs/zh/show/img/wch_speed.jpg diff --git a/docs/zh/show/index.rst b/docs/zh/show/index.rst index c5d3f708..ed9e2a88 100644 --- a/docs/zh/show/index.rst +++ b/docs/zh/show/index.rst @@ -13,6 +13,9 @@ CDC ACM 通信 - HPM 系列(从机可以到 42MB/S, 主机 44MB/S, 已经达到硬件极限) - BL 系列(从机 32MB/S, 主机 25MB/S, 已经达到硬件极限) - STM32F4 全速(从机 900KB/S, 主机 1.12MB/S, 已经达到硬件极限) +- WCH USBHS 高速(从机 46MB/S) + +.. figure:: img/wch_speed.jpg 从机测速demo: cdc_acm_template.c 并且关闭 log,脚本使用 `tools/test_srcipts/test_cdc_speed.py` 主机测速demo: usb_host.c 中 TEST_USBH_CDC_SPEED=1 diff --git a/docs/zh/support/img/tmcdev1.png b/docs/zh/support/img/tmcdev1.png Binary files differdeleted file mode 100644 index 1eaf7155..00000000 --- a/docs/zh/support/img/tmcdev1.png +++ /dev/null diff --git a/docs/zh/support/img/tmcdev2.png b/docs/zh/support/img/tmcdev2.png Binary files differdeleted file mode 100644 index 97c8297b..00000000 --- a/docs/zh/support/img/tmcdev2.png +++ /dev/null diff --git a/docs/zh/support/index.rst b/docs/zh/support/index.rst index d029cbff..5e4475a3 100644 --- a/docs/zh/support/index.rst +++ b/docs/zh/support/index.rst @@ -59,11 +59,6 @@ .. figure:: img/mtpdev.png -- 从机 TMC 类驱动 - -.. figure:: img/tmcdev1.png -.. figure:: img/tmcdev2.png - - USB 网卡类高性能版本优化,包含 CDC-NCM, CDC-RNDIS, 私有类驱动(支持多包发送和接收),下面举例 RNDIS .. figure:: img/rndistx.png diff --git a/docs/zh/version.rst b/docs/zh/version.rst index 9e008f2f..d5019261 100644 --- a/docs/zh/version.rst +++ b/docs/zh/version.rst @@ -3,190 +3,257 @@ 如果没有特别情况,请使用最新版本。下面只列举比较重要的更新,详细更新说明请参考 https://github.com/cherry-embedded/CherryUSB/releases。 -<= v0.10.2 初代版本 +小于等于 v0.10.2 版本 ---------------------- -- **用于定基本的主从机框架,仅支持单 USB IP**。 -- **host 驱动每个 ep 占用一个 硬件 pipe,不支持动态使用硬件 pipe**。 -- 相关 porting 需要使用此版本,后续不再支持(比如 ch32,rp2040),以及旧版本pusb2 和 xhci(新版本不再提供源码)。 +- **主从机基本框架,API 定型,仅支持单个 USB IP** +- host: **USBIP 驱动硬件 pipe 跟随 ep 固定分配,超出则无法使用** v1.0.0 过度版本 ---------------------- -- **host 支持动态使用硬件 pipe,不再固定** +- device: usbd_ep_open 参数改成 struct usb_endpoint_descriptor +- host: **USBIP 驱动重构,硬件 pipe 动态分配** +- 增加 USB 专用 errorcode v1.1.0 过度版本 ---------------------- - **主从机支持多 USB IP 且要相同 IP** -- **host 增加 bluetooth, ch340, ftdi, cp210x, asix 驱动** -- device msc 支持多 lun,并且 CONFIG_USBDEV_MSC_BLOCK_SIZE 修改为 CONFIG_USBDEV_MSC_MAX_BUFSIZE +- host: **增加 bluetooth, ch340, ftdi, cp210x, asix class 驱动** +- device: **msc 支持多 lun**,并且 CONFIG_USBDEV_MSC_BLOCK_SIZE 修改为 CONFIG_USBDEV_MSC_MAX_BUFSIZE v1.2.0 ---------------------- -- **host 增加 rtl8152,cdc ncm 驱动** -- host 增加 timer 去控制中断传输(hub修改为 timer 控制) -- porting 增加 esp,aic 主机驱动 -- **优化 DWC2 优化代码方便阅读,并增加一些 FIFO 配置宏给用户(因为 dwc2 fifo 大小有限,以及配置方式很多,所以导出给用户配置,方便合理控制性能)** -- 优化 ehci 驱动(qtd不再使用动态申请,绑定 qh),方便代码运行的更快 +- host: **增加 rtl8152,cdc ncm class 驱动** +- host: 增加 timer 去控制中断传输(hub修改为 timer 控制) +- port: **增加 esp,aic 主机驱动** +- port: **优化 DWC2 代码方便阅读,并增加一些 FIFO 配置宏给用户(因为 dwc2 fifo 大小有限,以及配置方式很多,所以导出给用户配置,方便合理控制性能)** +- port: 优化 ehci 驱动(qtd不再使用动态申请,绑定 qh),方便代码运行的更快,intr 传输使用统一的 qh head。 v1.3.0 ---------------------- -- **device 支持多种速度描述符自动选择功能(开启 CONFIG_USBDEV_ADVANCE_DESC)** -- device core 代码统一 ep0 buffer 的使用,用于美化代码 -- host 增加 pl2303 驱动;采用 id table 来支持多个 vid,pid;增加 user_data 给用户使用 -- host 网络 class 驱动增加 tx、rx buffer 的宏,增加 LWIP_TCPIP_CORE_LOCKING_INPUT 的使用,以便实现数据的零拷贝 -- porting 导入 bouffalo,aic,stm32f723 device驱动 -- **porting 中主机部分 urb->timeout 清0 的处理有点问题(大数据量传输时会出现 no pipe alloc 异常,主要原因是刚启动传输就完成了,还没判断 timeout就被修改为0了,没有进入 take sem 流程),此版本已修复** -- ehci enable iaad in usbh_kill_urb,read ehci hcor offset from hccr caplength,enable ohci for ehci +- device: **支持多种速度描述符自动选择功能(需开启 CONFIG_USBDEV_ADVANCE_DESC)** +- device: 字符串描述符使用 string 形式 +- device: core 代码统一 ep0 buffer 的使用,用于美化代码 +- host: **增加 pl2303 驱动** +- host: **采用 id table 来支持多个 vid,pid;增加 user_data 给用户使用** +- host: 网络 class 驱动增加 tx、rx buffer 的宏,增加 LWIP_TCPIP_CORE_LOCKING_INPUT 的使用,以便实现数据的零拷贝 +- port: 导入 bouffalo,aic,stm32f723 device驱动 +- port: **主机部分 urb->timeout 清0 的处理有点问题(大数据量传输时会出现 no pipe alloc 异常,主要原因是刚启动传输就完成了,还没判断 timeout就被修改为0了,没有进入 take sem 流程),此版本已修复** +- port: ehci enable iaad in usbh_kill_urb,read ehci hcor offset from hccr caplength,enable ohci for ehci - 适配 nuttx os v1.3.1 ---------------------- -- bugfix(audio,video,cdc ecm 相关宏,结构体,api) -- **host hub 枚举线程删除,使用 psc 线程,枚举方式更改为队列模式,取消同时枚举多个设备的功能** -- host 扫描驱动信息和 instance 采用递归模式,删除链表扫描 -- host 网络 class 驱动优化,支持接收 16K 以上的数据(cdc ecm 不支持),采用高级 memcpy api -- **device 协议栈中打印删除(中断中不再做打印)** -- porting 中 musb fifo配置修改为从 fifo table 获取(此代码参考 linux),适配 es32,sunxi,beken +- host: **hub 枚举线程删除,使用 psc 线程,枚举方式更改为队列模式,取消同时枚举多个设备的功能** +- host: 扫描驱动信息和 instance 采用递归模式,删除链表扫描 +- host: 网络 class 驱动优化,支持接收 16K 以上的数据(cdc ecm 不支持),采用高级 memcpy api +- device: **协议栈中打印删除(中断中不再做打印)** +- port: **musb fifo配置修改为从 fifo table 获取(此代码参考 linux),适配 es32,sunxi,beken** +- port: fix enter section before alloc pipe v1.4.0 ---------------------- -- **device 开始支持 remote wakeup 功能, hid request(0x21),完善 GET STATUS 请求(此版本开始可以通过 USB3CV 测试)** -- device 增加 UF2, ADB, WEBUSB 功能; msc 增加裸机的读写 polling 功能,将读写放在 while1中执行; usbd_cdc 改名为 usbd_cdc_acm -- host 增加 usbwifi(bl616), xbox驱动; **重构 USB3.0 枚举逻辑** -- **host 中 cdc_acm,hid,msc,serial 传输共享 buffer,如果存在多个相同的设备会有问题,修改为单独的 buffer** -- **porting 重构 XHCI/PUSB2 驱动,不开源**;ehci 和 ohci 文件改名;增加 remote wakeup api -- esp 组件库支持 -- **chipidea 从机驱动支持,nxp mcx 系列主从支持** +- device: **开始支持 remote wakeup 功能, hid request(0x21),完善 GET STATUS 请求(此版本开始可以通过 USB3CV 测试)** +- device: **增加 UF2, ADB, WEBUSB 功能**; msc 增加裸机的读写 polling 功能,将读写放在 while1中执行; usbd_cdc 改名为 usbd_cdc_acm +- host: **增加 usbwifi(bl616), xbox驱动** +- host: **重构 USB3.0 枚举逻辑** +- host: **修复 cdc_acm,hid,msc,serial 传输共享 buffer,如果存在多个相同的设备会有问题,修改为单独的 buffer** +- port: **重构 XHCI/PUSB2 驱动,不开源** +- port: ehci 和 ohci 文件改名 +- port: **增加 remote wakeup api** +- port: **chipidea 从机驱动支持,nxp mcx 系列主从支持,esp32p4 支持** - threadx os 支持 +- esp 组件库支持 v1.4.1 ---------------------- -- **修复device 模式下使用多个 altsetting 时重复关闭端点问题,改成 altsetting 为0时关闭** -- **重构主机 audio 解析描述符** -- **增加 kinetis usbip** -- 主机下 usbh_msc_get_maxlun 请求部分 U 盘不支持,不做错误返回 -- 主机下 usbh_hid_get_report_descriptor 导出给用户调用 +- device: **修复device 模式下使用多个 altsetting 时重复关闭端点问题,改成 altsetting 为0时关闭** +- device: video 增加 usbd_video_stream_start_write 和 usbd_video_stream_split_transfer API,之前的 API 不再使用(占用太大) +- host: **重构主机 audio 解析描述符,重构 usbh_audio_open api** +- host: 主机下 usbh_msc_get_maxlun 请求部分 U 盘不支持,不做错误返回 +- host: 主机下 usbh_hid_get_report_descriptor 导出给用户调用 +- port: **增加 kinetis usbip** - 静态代码检查 -- github action 功能 v1.4.2 ---------------------- -- device 实现 USB_REQUEST_GET_INTERFACE 请求 -- **device video 传输重构,增加双缓冲功能** -- device ecm 重构,保持和 rndis 类似 API -- device 和 host audio 音量配置功能重构 -- host 增加 AOA 驱动 +- device: 实现 USB_REQUEST_GET_INTERFACE 请求 +- device: **video 传输继续重构,增加双缓冲功能,实现零 copy 功能** +- device: ecm 重构,保持和 rndis 类似底层读写 API +- device: **全面使用 usb_memcpy 替换 memcpy** +- **device 和 host: audio 音量配置功能重构** +- host: **增加 AOA 驱动** +- port: **通用 OHCI 代码更新** - 兼容 C++ 相关修改 -- fsdev 不支持 ISO 和 DWC2 高速 hub 不支持全速低速检查 -- **通用 OHCI 代码更新** v1.4.3 ---------------------- -- **device ep0 处理增加线程模式** -- device audio feedback 宏和demo -- device rndis 增加透传功能(无LWIP) -- **host msc 将 scsi 初始化从枚举线程中移出,在mount阶段调用,并增加了testunity 多次尝试,兼容一部分 U 盘** -- rp2040 主从支持 +- device: **ep0 处理增加线程模式** +- device: 增加 audio feedback 宏和demo +- device: rndis 增加透传功能(无LWIP) +- device: **fix current_desc_len += p[DESC_bLength] before p+= p[DESC_bLength]** +- host: **msc 将 scsi 初始化从枚举线程中移出,在mount阶段调用,并增加了testunity 多次尝试,兼容一部分 U 盘** +- port: **rp2040 主从支持** +- port: **dwc2、ehci、ohci 主机 dcache功能支持(v1.5.0 完善)** +- port: 新增 t113、MCXA156、CH585、stm32h7r 支持 +- port: **修复 v1.4.1 中 altsetting 为0时应该关闭所有端点的问题** - **nuttx fs,serial,net 组件支持** -- dwc2、ehci、ohci 主机 dcache功能支持(v1.5.0 完善) -- t113、MCXA156、CH585 、 **stm32h7r 支持** -- 修复 v1.4.1 中 altsetting 为0时应该关闭所有端点的问题 +- 增加 usb_phyaddr2ramaddr 和 usb_ramaddr2phyaddr 宏 v1.5.0 ---------------------- -- **协议栈内部全局 buffer 需要使用 USB_ALIGN_UP 对齐, 用于开启 dcache 并且不使能 nocache 时使用** -- **完善 ehci/ohci dcache 模式下的处理**, add CONFIG_USB_EHCI_DESC_DCACHE_ENABLE for qh&qtd&itd, add CONFIG_USB_OHCI_DESC_DCACHE_ENABLE for ed&td -- **平台代码更新,平台相关转移到 platform,增加 lvgl 键鼠支持,blackmagic 支持,filex 支持, zephyr disk支持,esp-idf netif支持** -- **device sof callback 支持** -- **dwc2 、fsdev st 下实现底层 API 和中断,直接调用 HAL_PCD_MSP 和 HAL_HCD_MSP,不需要用户复制粘贴** -- **DWC2 实现 SPLIT 功能,高速模式下支持外部高速 hub 对接 FS/LS 设备** -- liteos-m, zephyr os 支持 -- device msc 裸机读写采用变量模式,而不是ringbuffer -- ehci qtd 使用 qtd alloc & free,节省内存,目前是 qh 携带 qtd -- rndis/ECM device, msc demo 更新,支持 rt-thread 下免修改 +- **协议栈内部全局 buffer 需要使用 USB_ALIGN_UP 对齐, 用于开启 dcache 并且不使能 nocache ram 时使用** +- device: **默认使能 CONFIG_USBDEV_ADVANCE_DESC** +- device: **增加 ep0_next_state 状态记录,重构枚举过程 debug log** +- device: msc 裸机读写采用变量模式,而不是ringbuffer +- device: msc 支持 SCSI_CMD_SYNCHCACHE10 (0x35) +- device: **重构 device mtp 驱动(收费使用)** +- device: **device tmc 驱动(收费使用)** +- device: **重构 device video 传输,直接在图像数据中填充 uvc header,达到zero memcpy** +- host: **增加 usb_osal_thread_schedule_other api,用于在释放 class 资源之前,先释放所有 class 线程,避免释放 class 资源以后线程还在使用该 class 资源** +- host: hid 增加 usbh_hid_get_protocol API +- port: **完善 ehci/ohci dcache 模式下的对齐处理**, add CONFIG_USB_EHCI_DESC_DCACHE_ENABLE for qh&qtd&itd, add CONFIG_USB_OHCI_DESC_DCACHE_ENABLE for ed&td +- port: **device sof callback 支持** +- port: **dwc2 、fsdev 下实现底层 API 和中断,STM32 glue 直接调用 HAL_PCD_MSP 和 HAL_HCD_MSP,不再需要用户复制粘贴** +- port: **DWC2 实现 SPLIT 功能,高速模式下支持外部高速 hub 对接 FS/LS 设备** +- port: ehci qtd 使用 qtd alloc & free,节省内存,目前是 qh 携带 qtd +- port: **dwc2 device 增加 dcache 支持** +- port: **bouffalo/hpm/esp/st/nxp dcache api 支持** +- port: N32H4/MM32F5 device 支持 +- platform: **平台代码更新,平台相关转移到 platform,增加 lvgl 键鼠支持,blackmagic 支持,filex 支持, zephyr disk支持,esp-idf netif支持** - **memcpy 全部使用 usb_memcpy 替换,arm 库存在非对其访问问题** -- **重构 device mtp 驱动(收费使用)** -- **device tmc 驱动(收费使用)** -- **重构device video 传输,直接在图像数据中填充 uvc header,达到zero memcpy** -- **增加 usb_osal_thread_schedule_other api,用于在释放 class 资源之前,先释放所有 class 线程,避免释放 class 资源以后线程还在使用该 class 资源** -- **dwc2 device 增加 dcache 功能,可用于 cortex-M7/ESP32P4** -- **bouffalo/hpm/esp/st/nxp dcache api 支持** -- ch32 device iso 更新,IP 目录重新分类 -- cmake,scons,kconfig 更新 - 使用 USB_ASSERT_MSG 对部分代码检查,全面性 warning 修复 -- N32H4/MM32F5 device 支持 -- 默认使能 CONFIG_USBDEV_ADVANCE_DESC +- **增加 usb_osal_thread_schedule_other api,用于在释放 class 资源之前,先释放所有 class 线程,避免释放 class 资源以后线程还在使用该 class 资源** +- liteos-m, zephyr os 支持 v1.5.1 ---------------------- -- 支持 rt-thread 下使用 adb shell,host serial/device cdc_acm 对接 rtdevice 框架 -- **dwc2 增加多个 usbport 不同参数的配置功能,比如一个全速一个高速,fifo配置和phy配置不同** -- **ehci 在控制传输中如果没有 nodata 阶段会导致 data qtd 未释放,导致内存泄漏** -- **dwc2 读取 setup 使用 usbd_get_next_ep0_state 去判断,避免 setup 和 ep0 out 使用在 USB_OTG_DOEPINT_XFRC 状态下冲突** -- sifli usb device 初步支持 +- host: urb interval 单位改成 ms 改成 us +- port: **dwc2 增加多个 usbport 不同参数的配置功能(比如一个全速一个高速,fifo配置和phy配置不同),之前的 get gccfg API 作废,更新 at32,stm32,espressif glue** +- port: **ehci 在控制传输中如果没有 nodata 阶段会导致 data qtd 未释放,导致内存泄漏,1.5.0带来的问题** +- port: **dwc2 读取 setup 使用 usbd_get_next_ep0_state 去判断,避免 setup 和 ep0 out 在 USB_OTG_DOEPINT_XFRC 状态下冲突** +- port: sifli usb device 初步支持 +- platform: 支持 rt-thread 下使用 adb shell,host serial/device cdc_acm 对接 rtdevice 框架 v1.5.2 ---------------------- -- 对 1.5.1 下 rt-thread 组件的一些 bugfix -- idf timer osal 替换为 esp timer,freertos timer会有启动失败的可能性;xTaskCreate 使用 xTaskCreatePinnedToCore 替换,方便多核使用 -- 主机枚举中,删除描述符溢出相关的 ASSERT 操作,改成返回错误。获取字符串描述符改成支持才获取。2 ms 延时改成 10ms,因为一些 os 使用的是 100hz,会造成延时失效 -- **dwc2 ep mult 支持,split 传输代码优化,对 split 相关的 cache 处理修改** -- **dwc2 halt 中不能清除 USB_OTG_HCCHAR_EPDIR,reset port 中使用超时机制,防止在枚举时由于拔出而造成死等** -- 更新 DWC2 中 at32,stm32,kendryte,espressif glue 代码 -- musb 对于标准的 IP 结构采用独立 EP 控制寄存器组,不使用 EPIDX 寄存器去控制 +- host: 主机枚举中,删除描述符溢出相关的 ASSERT 操作,改成返回错误。获取字符串描述符改成支持才获取。2 ms 延时改成 10ms,因为一些 os 使用的是 100hz,会造成延时失效 +- host: CONFIG_USBHOST_MAX_INTF_ALTSETTINGS 默认使用 2 减少内存,只有 UVC 和UAC 使用(商业收费),所以不需要开很大 +- host: urb interval 从 u8 改 u32,最大支持 2^15 * 125us +- port: **dwc2 ep mult 支持** +- port: **dwc2 halt 中不能清除 USB_OTG_HCCHAR_EPDIR,会导致下次使用异常,因为当前传输还未停止** +- port: **dwc2 reset port 中使用超时机制,防止在枚举时由于拔出而造成死等** +- port: **优化 split 传输中 intr 传输处理和 cache 处理** +- port: 更新 kendryte glue 代码,使用新的 dwc2 参数配置函数(v1.5.1 提供) +- port: **musb 对于标准的 IP 结构采用独立 EP 控制寄存器组,不使用 EPIDX 寄存器去控制** +- port: esp32p4 fs 支持 +- platform: 对 1.5.1 下 rt-thread 组件的一些 bugfix - 删除所有 CONFIG_USBDEV_EP_NUM & CONFIG_USBHOST_PIPE_NUM,不再使用,因为 IP 本身会携带这些信息,或者厂家 SDK 提供了对应的宏 -- CONFIG_USBHOST_MAX_INTF_ALTSETTINGS 默认使用 2 减少内存,只有 UVC 和UAC 使用(商业收费),所以不需要开很大 -- urb interval 从 u8 改 u32,最大支持 2^15 * 125us +- idf timer osal 替换为 esp timer,freertos timer会有启动失败的可能性;xTaskCreate 使用 xTaskCreatePinnedToCore 替换,方便多核使用 v1.5.3 ---------------------- +- device: **从机支持自定义 ep0 mps,仅支持商业性 IP** +- host: **主机增加 UVC bulk支持** +- host: 接口号匹配驱动功能 +- host: **主机分配地址功能改成循环自增模式** +- host: 增加自定义 config index 选择 +- host: 重构 lsusb 命令 +- host: **主机控制传输增加 retry 机制,部分 device 通信不稳定,retry 次数参考 linux** +- host: 主机 rndis 驱动增加非标 02/02/ff 接口驱动匹配规则 +- port: **musb IP 关闭 multipoint feature 支持** +- port: **hpmicro、chipidea device dcache 支持** +- port: 更新 hc32 glue 代码,使用新的 dwc2 参数配置函数(v1.5.1 提供) +- port: **musb pipe 使用动态分配** +- platform: **idf host msc 支持** +- **otg: otg 框架重构,当前 port 仅支持 hpmicro** +- CI 编译功能,支持 hpmicro,espressif,bouffalolab - 增加 mongoose demo -- **从机支持自定义 ep0 mps,仅支持商业性 IP** -- 主机增加 UVC bulk支持, **接口号匹配驱动功能**, **主机分配地址功能改成循环自增模式** ,重构 lsusb 命令 -- 主机控制传输增加 retry 机制,部分 device 通信不稳定,retry 次数参考 linux -- **主机 rndis 驱动增加非标 02/02/ff 接口驱动匹配** -- musb IP 关闭 multipoint feature 支持 -- hpmicro、chipidea dcache 支持 -- idf host msc 支持 -- otg 框架重构,当前 port 仅支持 hpmicro -- CI 编译功能,支持 hpmicro/espressif/bouffalolab v1.5.3.99 ---------------------- -bugfix for v1.5.3 +bugfix for v1.5.3。 +.. note:: 从这个版本开始,可以全面使用 dcache ram 取代 nocache ram,需要打开 **CONFIG_USB_DCACHE_ENABLE** 并配置 **CONFIG_USB_ALIGN_SIZE** v1.6.0 ---------------------- -- **host 增加 serial 框架,统一所有类串口驱动** -- **host hid 增加报告描述符解析功能** -- usbh_initialize 增加 event callback,用于通知用户主机事件变化,通常不需要使用,设置为 NULL 即可 -- 支持 gamepad device -- 增加 ti xmc,infineon edge e8x port 支持 -- dwc2 增加 usbd_dwc2_get_system_clock 替换 SystemCoreClock;删除 __UNALIGNED_UINT32_READ 和 __UNALIGNED_UINT32_WRITE 宏;读取 setup 个数设置为 1个;第一次读取 setup 移动到 USB_OTG_GINTSTS_ENUMDNE 中断中 -- dwc2/ehci 增加 roothub 速度设置 +- device: **支持 gamepad device** +- host: **增加 serial 框架,统一所有类串口驱动** +- host: **增加 hid 报告描述符解析功能** +- host: **usbh_initialize 增加 event callback,用于通知用户主机事件变化,通常不需要使用,设置为 NULL 即可** +- port: **增加 ti xmc,infineon edge e8x port 支持** +- port: dwc2 增加 usbd_dwc2_get_system_clock 替换 SystemCoreClock;删除 __UNALIGNED_UINT32_READ 和 __UNALIGNED_UINT32_WRITE 宏;读取 setup 个数设置为 1个;第一次读取 setup 移动到 USB_OTG_GINTSTS_ENUMDNE 中断中 +- port: dwc2/ehci 增加 roothub 速度设置 v1.6.1 ---------------------- -- 新增 USB 副屏驱动 -- 重构 DFU device 驱动 -- 重构主机报告描述符解析驱动 -- cherryrb 和 cherrymp 组件内置 -- 主机 hub 线程释放改成使用 mq 替代互斥锁 -- 部分 bugfix 和安全性代码检查
\ No newline at end of file +- device: **新增 USB 副屏驱动** +- device: **重构 DFU device 驱动** +- host: **重构 hid 报告描述符解析功能** +- host: **主机 hub 线程释放改成使用 mq 退出,替代互斥锁** +- host: **fix desc length parse** +- port: **hpmicro: using sutw semaphore by isr handler for setup** +- port: dwc2: add critical section for hc frame setting, make it more safely +- platform: rtthread 文件添加 rt 前缀 +- **cherryrb 和 cherrymp 组件内置** +- 部分 bugfix 和安全性代码检查 + +v1.7.0 +---------------------- + +- **新增注册驱动 API,从这个版本开始可以同时使用多个不同的 USBIP** +- device: **新增 cdc ncm class 驱动** +- device: **新增 tmc class 驱动** +- device: **新增 usb3.0 request 和配置** +- device: **重构 adb 驱动,添加 shell 和 sync 支持,并且不再支持裸机,os only** +- device: **audio 新增 usbd_audio_get_volume_range,volume 读写改成 float 类型** +- device: 新增获取 speed 和 ep info api +- device: **新增 usb_vfs api, posix 标准接口** +- device: msc 支持 SCSI_readCapacity16 命令 +- host: **重构 audio 驱动和 API,volume 配置范围改成 0~ 100,audio sample rate 最大支持 8个默认** +- host: **serial 增加 RX 流控** +- host: **简化 net class rx 接收,最大不再超过 16K** +- host: **rndis msg resp 处理统一到 usbh_rndis_parse_resp** +- host: rndis 驱动增加 Android RNDIS class code (0xEF/0x04/0x01) 匹配规则 +- host: 修复 hid API 漏掉的 **hport->intf** +- host: only release hport in disconnect +- port: **renesas 从机支持** +- port: **esp32s31 支持** +- port: **N32H49X和N32H7XX USBHS 支持** +- port: **N32H4x (N32H47x_48x / N32H49x) FSDEV 支持** +- port: **删除旧版本 wch 驱动,重构 usbfs,usbhs 主从驱动支持** +- port: 统一 cache 处理到 usbh_submit_urb +- port: 将部分 glue 文件放到厂家文件夹中 +- port: 修复 ehci setup cache 和 qh,qtd cache 处理 +- port: **fix usbd_ep_close for out ep, set global nak first then can disable ep** +- port: **musb 增加 sifli 自定义 pipe 申请规则,修复 usbh_kill_urb 时错误关闭 ep0 中断和 flush 错误问题** +- port: low level api from weak to extern, 防止用户没有实现而使用 weak api +- platform: **zmk 支持** +- platform: **zephyr 主机多 msc 设备支持** +- platform: fix idf fatfs 旧版本兼容 +- platform: 修复 rtthread 驱动旧版本支持 +- platform: **rtthread adb shell 和 sync 支持** +- **demo 删除 CONFIG_USB_HS,新增 config fs,hs 和 other speed 支持** +- **video 宏中的 frame interval 改成只支持一个** +- 新增 AUDIO_FEEDBACK_TO_BUF_HS_INTERVAL/AUDIO_FEEDBACK_TO_BUF_FS_INTERVAL 宏 +- 更新 usb 测速工具 +- CI 功能新增 wch,sifli,phytium 支持 +- osal 的部分修复 +- 安全性代码检查
\ No newline at end of file |
