Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

优化CDC-UART兼容性

Compare
Choose a tag to compare
@talpachen talpachen released this 19 Oct 01:41
· 59 commits to master since this release

变更:

  1. USBD访问存在临界区冲突,在串口流上增加EDA,用于规避此类问题。
  2. 修复Bootloader中对SP的检查BUG,GD32F350芯片若要更新此版本APP,需先更新Bootloader。

测试场景1:通过CDC-UART为ESP32芯片下载固件
测试场景2:使用SSCON5测试CDC-UART高速回传

固件后缀说明:
***_bootloader_12KB.bin:仅Bootloader部分
***_app.bin:仅APP部分,用于DFU更新
***_full.bin:Bootloader + APP整合

补充说明:
关于同时启用双路串口后,CDC-UART无法正常完成ESP32下载操作的问题分析:
GD32F350/E103仅提供4个逻辑端点,而一个CDC接口便需要占用两个端点,在启用双路串口后,会将用不着的cdc notify端点设为4或更高。
在理想情况下,notify端点将一直保持NAK,但实际情况并非如此。
由于ESP32下载操作基于Pyserial,而Pyserial在通讯过程中频繁通过控制端点操作,进而导致notify端点与控制0端点数据上出现了一些干涉,这种干涉一旦出现,USB数据便立即出错,下载操作进而失败。
此问题在C开发端很难处理,后续基于GD32E103的固件默认将关闭CDC-SHELL。