version.rst 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151
  1. 版本说明
  2. ==============================
  3. 如果没有特别情况,请使用最新版本。下面只列举比较重要的更新,详细更新说明请参考 https://github.com/cherry-embedded/CherryUSB/releases。
  4. <= v0.10.2 初代版本
  5. ----------------------
  6. - **用于定基本的主从机框架,仅支持单 USB IP**。
  7. - **host 驱动每个 ep 占用一个 硬件 pipe,不支持动态使用硬件 pipe**。
  8. - 相关 porting 需要使用此版本,后续不再支持(比如 ch32,rp2040),以及旧版本pusb2 和 xhci(新版本不再提供源码)。
  9. v1.0.0 过度版本
  10. ----------------------
  11. - **host 支持动态使用硬件 pipe,不再固定**
  12. v1.1.0 过度版本
  13. ----------------------
  14. - **主从机支持多 USB IP 且要相同 IP**
  15. - **host 增加 bluetooth, ch340, ftdi, cp210x, asix 驱动**
  16. - device msc 支持多 lun,并且 CONFIG_USBDEV_MSC_BLOCK_SIZE 修改为 CONFIG_USBDEV_MSC_MAX_BUFSIZE
  17. v1.2.0
  18. ----------------------
  19. - **host 增加 rtl8152,cdc ncm 驱动**
  20. - host 增加 timer 去控制中断传输(hub修改为 timer 控制)
  21. - porting 增加 esp,aic 主机驱动
  22. - **优化 DWC2 优化代码方便阅读,并增加一些 FIFO 配置宏给用户(因为 dwc2 fifo 大小有限,以及配置方式很多,所以导出给用户配置,方便合理控制性能)**
  23. - 优化 ehci 驱动(qtd不再使用动态申请,绑定 qh),方便代码运行的更快
  24. v1.3.0
  25. ----------------------
  26. - **device 支持多种速度描述符自动选择功能(开启 CONFIG_USBDEV_ADVANCE_DESC)**
  27. - device core 代码统一 ep0 buffer 的使用,用于美化代码
  28. - host 增加 pl2303 驱动;采用 id table 来支持多个 vid,pid;增加 user_data 给用户使用
  29. - host 网络 class 驱动增加 tx、rx buffer 的宏,增加 LWIP_TCPIP_CORE_LOCKING_INPUT 的使用,以便实现数据的零拷贝
  30. - porting 导入 bouffalo,aic,stm32f723 device驱动
  31. - **porting 中主机部分 urb->timeout 清0 的处理有点问题(大数据量传输时会出现 no pipe alloc 异常,主要原因是刚启动传输就完成了,还没判断 timeout就被修改为0了,没有进入 take sem 流程),此版本已修复**
  32. - ehci enable iaad in usbh_kill_urb,read ehci hcor offset from hccr caplength,enable ohci for ehci
  33. - 适配 nuttx os
  34. v1.3.1
  35. ----------------------
  36. - bugfix(audio,video,cdc ecm 相关宏,结构体,api)
  37. - **host hub 枚举线程删除,使用 psc 线程,枚举方式更改为队列模式,取消同时枚举多个设备的功能**
  38. - host 扫描驱动信息和 instance 采用递归模式,删除链表扫描
  39. - host 网络 class 驱动优化,支持接收 16K 以上的数据(cdc ecm 不支持),采用高级 memcpy api
  40. - **device 协议栈中打印删除(中断中不再做打印)**
  41. - porting 中 musb fifo配置修改为从 fifo table 获取(此代码参考 linux),适配 es32,sunxi,beken
  42. v1.4.0
  43. ----------------------
  44. - **device 开始支持 remote wakeup 功能, hid request(0x21),完善 GET STATUS 请求(此版本开始可以通过 USB3CV 测试)**
  45. - device 增加 UF2, ADB, WEBUSB 功能; msc 增加裸机的读写 polling 功能,将读写放在 while1中执行; usbd_cdc 改名为 usbd_cdc_acm
  46. - host 增加 usbwifi(bl616), xbox驱动; **重构 USB3.0 枚举逻辑**
  47. - **host 中 cdc_acm,hid,msc,serial 传输共享 buffer,如果存在多个相同的设备会有问题,修改为单独的 buffer**
  48. - **porting 重构 XHCI/PUSB2 驱动,不开源**;ehci 和 ohci 文件改名;增加 remote wakeup api
  49. - esp 组件库支持
  50. - **chipidea 从机驱动支持,nxp mcx 系列主从支持**
  51. - threadx os 支持
  52. v1.4.1
  53. ----------------------
  54. - **修复device 模式下使用多个 altsetting 时重复关闭端点问题,改成 altsetting 为0时关闭**
  55. - **重构主机 audio 解析描述符**
  56. - **增加 kinetis usbip**
  57. - 主机下 usbh_msc_get_maxlun 请求部分 U 盘不支持,不做错误返回
  58. - 主机下 usbh_hid_get_report_descriptor 导出给用户调用
  59. - 静态代码检查
  60. - github action 功能
  61. v1.4.2
  62. ----------------------
  63. - device 实现 USB_REQUEST_GET_INTERFACE 请求
  64. - **device video 传输重构,增加双缓冲功能**
  65. - device ecm 重构,保持和 rndis 类似 API
  66. - device 和 host audio 音量配置功能重构
  67. - host 增加 AOA 驱动
  68. - 兼容 C++ 相关修改
  69. - fsdev 不支持 ISO 和 DWC2 高速 hub 不支持全速低速检查
  70. - **通用 OHCI 代码更新**
  71. v1.4.3
  72. ----------------------
  73. - **device ep0 处理增加线程模式**
  74. - device audio feedback 宏和demo
  75. - device rndis 增加透传功能(无LWIP)
  76. - **host msc 将 scsi 初始化从枚举线程中移出,在mount阶段调用,并增加了testunity 多次尝试,兼容一部分 U 盘**
  77. - rp2040 主从支持
  78. - **nuttx fs,serial,net 组件支持**
  79. - dwc2、ehci、ohci 主机 dcache功能支持(v1.5.0 完善)
  80. - t113、MCXA156、CH585 、 **stm32h7r 支持**
  81. - 修复 v1.4.1 中 altsetting 为0时应该关闭所有端点的问题
  82. v1.5.0
  83. ----------------------
  84. - **协议栈内部全局 buffer 需要使用 USB_ALIGN_UP 对齐, 用于开启 dcache 并且不使能 nocache 时使用**
  85. - **完善 ehci/ohci dcache 模式下的处理**, add CONFIG_USB_EHCI_DESC_DCACHE_ENABLE for qh&qtd&itd, add CONFIG_USB_OHCI_DESC_DCACHE_ENABLE for ed&td
  86. - **平台代码更新,平台相关转移到 platform,增加 lvgl 键鼠支持,blackmagic 支持,filex 支持, zephyr disk支持,esp-idf netif支持**
  87. - **device sof callback 支持**
  88. - **dwc2 、fsdev st 下实现底层 API 和中断,直接调用 HAL_PCD_MSP 和 HAL_HCD_MSP,不需要用户复制粘贴**
  89. - **DWC2 实现 SPLIT 功能,高速模式下支持外部高速 hub 对接 FS/LS 设备**
  90. - liteos-m, zephyr os 支持
  91. - device msc 裸机读写采用变量模式,而不是ringbuffer
  92. - ehci qtd 使用 qtd alloc & free,节省内存,目前是 qh 携带 qtd
  93. - rndis/ECM device, msc demo 更新,支持 rt-thread 下免修改
  94. - **memcpy 全部使用 usb_memcpy 替换,arm 库存在非对其访问问题**
  95. - **重构 device mtp 驱动(收费使用)**
  96. - **device tmc 驱动(收费使用)**
  97. - **重构device video 传输,直接在图像数据中填充 uvc header,达到zero memcpy**
  98. - **增加 usb_osal_thread_schedule_other api,用于在释放 class 资源之前,先释放所有 class 线程,避免释放 class 资源以后线程还在使用该 class 资源**
  99. - **dwc2 device 增加 dcache 功能,可用于 cortex-M7/ESP32P4**
  100. - **bouffalo/hpm/esp/st/nxp dcache api 支持**
  101. - ch32 device iso 更新,IP 目录重新分类
  102. - cmake,scons,kconfig 更新
  103. - 使用 USB_ASSERT_MSG 对部分代码检查,全面性 warning 修复
  104. - N32H4/MM32F5 device 支持
  105. - 默认使能 CONFIG_USBDEV_ADVANCE_DESC
  106. v1.5.1
  107. ----------------------
  108. - 支持 rt-thread 下使用 adb shell,host serial/device cdc_acm 对接 rtdevice 框架
  109. - **dwc2 增加多个 usbport 不同参数的配置功能,比如一个全速一个高速,fifo配置和phy配置不同**
  110. - **ehci 在控制传输中如果没有 nodata 阶段会导致 data qtd 未释放,导致内存泄漏**
  111. - **dwc2 读取 setup 使用 usbd_get_next_ep0_state 去判断,避免 setup 和 ep0 out 使用在 USB_OTG_DOEPINT_XFRC 状态下冲突**
  112. - sifli usb device 初步支持
  113. v1.5.2
  114. ----------------------
  115. - 对 1.5.1 下 rt-thread 组件的一些 bugfix
  116. - idf timer osal 替换为 esp timer,freertos timer会有启动失败的可能性;xTaskCreate 使用 xTaskCreatePinnedToCore 替换,方便多核使用
  117. - 主机枚举中,删除描述符溢出相关的 ASSERT 操作,改成返回错误。获取字符串描述符改成支持才获取。2 ms 延时改成 10ms,因为一些 os 使用的是 100hz,会造成延时失效
  118. - **dwc2 ep mult 支持,split 传输代码优化,对 split 相关的 cache 处理修改**
  119. - **dwc2 halt 中不能清除 USB_OTG_HCCHAR_EPDIR,reset port 中使用超时机制,防止在枚举时由于拔出而造成死等**
  120. - 更新 DWC2 中 at32,stm32,kendryte,espressif glue 代码
  121. - musb 对于标准的 IP 结构采用独立 EP 控制寄存器组,不使用 EPIDX 寄存器去控制
  122. - 删除所有 CONFIG_USBDEV_EP_NUM & CONFIG_USBHOST_PIPE_NUM,不再使用,因为 IP 本身会携带这些信息,或者厂家 SDK 提供了对应的宏
  123. - CONFIG_USBHOST_MAX_INTF_ALTSETTINGS 默认使用 2 减少内存,只有 UVC 和UAC 使用(商业收费),所以不需要开很大
  124. - urb interval 从 u8 改 u32,最大支持 2^15 * 125us