0
0
Fork 0
wireless-proxy-esp32/README_CN.md

8.3 KiB
Raw Blame History

image

Build Status master  Build Status develop

 PRs Welcome %e2%9d%a4

简介

只需要一枚ESP8266即可实现的无线调试器通过USBIP协议栈和CMSIS-DAP协议栈实现。

👉在5M速度范围下擦除并下载100kb大小的固件(Hex固件) 实测图:

特性

  1. 支持的调试协议模式和调试接口:

    • SWD(SW-DP)
    • JTAG(JTAG-DP)
    • SWJ-DP
  2. 支持的USB通信协议

    • USB-HID
    • WCID & WinUSB (Default)
  3. 支持的调试跟踪器:

    • UART Serial Wire Output(SWO)
    • SWO Streaming Trace
  4. 其它

    • 通过SPI接口加速的SWD协议
    • ...

连接你的开发板

WIFI连接

    固件默认的WIFI SSID是DAP,密码是12345678。你可以在wifi_configuration.h文件中修改WIFI_SSID WIFI_PASS字段来修改ESP8266连接的目标WIFI。你还可以在上面的配置文件中修改IP地址但是我们更推荐你通过在路由器上绑定静态IP地址

WIFI

调试接口连接

SWD接口 ESP8266引脚
SWCLK GPIO14
SWDIO GPIO13
LED_CONNECTED GPIO2
LED_RUNNING GPIO15
TVCC 3V3
GND GND

JTAG接口 ESP8266引脚
TCK GPIO14
TMS GPIO13
TDI GPIO4
TDO GPIO16
nTRST optional GPIO0*
nRESET GPIO5
LED_CONNECTED GPIO2
LED_RUNNING GPIO15
TVCC 3V3
GND GND

硬件参考电路

我们为你提供了一个简单的硬件电路例子作为参考:

sch

除此之外,你也可以像我们一开始给出的那张图片直接用杜邦线连接开发板,这就不需要额外的电路。

如果你想修改接口的引脚或者是LED的引脚请小心地参考指示在DAP_config.h文件中修改。

此外,你还可以从贡献者那里获得一个完整的硬件参考电路,详见 circuit文件夹。


编译固件并烧写

你可以在本地构建或使用Github Action在线构建固件然后下载固件进行烧写。

使用Github Action在线构建固件

详见:Build with Github Action

在本地构建并烧写

下面展示的是在Ubuntu20.04中使用终端安装依赖软件并编译烧录固件的操作流程。

  1. 下载本仓库到本地:
    $ sudo apt update && sudo apt install -y cmake git
    $ git clone https://github.com/windowsair/wireless-esp8266-dap.git && cd wireless-esp8266-dap*
    
  2. 获取ESP8266 RTOS软件开发套件
    $ git submodule init && git submodule update && cd ESP8266_RTOS_SDK
    
  3. 安装ESP8266 RTOS软件开发套件
    $ sudo apt install -y python3 python3-pip
    $ ./install.sh && . ./export.sh && cd ..
    
  4. 编译并烧录固件:
    # 编译固件
    $ python3 ./idf.py build
    # 烧录固件,“/dev/ttyS5”需要改成你对应的串口
    $ python3 ./idf.py -p /dev/ttyS5 flash
    

我们也提供了已经编译好的固件用于快速评估。在Releases中查看详细信息。

使用

  1. 获取USBIP项目
  • Windows: usbip-win
  • LinuxUSBIP作为Linux内核的一部分发布但我们还没有在Linux平台上测试下面的说明都是在Windows平台下的。
  1. 启动ESP8266并且把ESP8266连接到同一个WIFI下。

  2. 通过USBIP连接ESP8266

# 仅HID模式用于SourceForge上的预编译版本或者旧的USBIP版本。
.\usbip.exe -D -a <your-esp8266-ip-address>  1-1

# 👉 推荐。HID模式或者WinUSB模式。用于usbip-win 0.3.0 kmdf ude版本。
.\usbip.exe attach_ude -r <your-esp8266-ip-address> -b 1-1

如果一切顺利,你应该看到你的设备被连接,如下图所示。

image

下面我们用keil MDK来测试

target


速度性能

单独使用ESP8266通用IO时的最大翻转速率只有大概2MHz。当你选择最大时钟时我们需要采取以下操作

  • clock < 2Mhz :与你选择的时钟速度类似。
  • 2MHz <= clock < 10MHz 使用最快的纯IO速度。
  • clock >= 10MHz 使用40MHz时钟的SPI加速。

请注意这个项目最重要的速度制约因素仍然是TCP连接速度。

开发

  1. 检查其他分支以了解最新的开发进展。
  2. 使用WinUSB模式默认启用。 在dap_configuration.h修改 USE_WINUSB 宏。

目前TCP传输速度还需要进一步提高如果你有什么想法欢迎在下面提出

版本修订信息

2020.12.1

TCP传输速度需要进一步提高。

2020.11.11

现在可以使用Winusb了但它非常慢。

2020.2.4

由于USB-HID的限制不知道是USBIP的问题还是Windows的问题现在每个URB数据包只能达到255字节约1MBps带宽还没有达到ESP8266传输带宽的上限。

我现在有一个想法,在两者之间构建一个中间人来转发流量,从而增加每次传输的带宽。

2020.1.31

目前对WCID、WinUSB等的适配已经全部完成。然而当在端点上传输数据时我们收到了来自USBIP的错误信息。这很可能是USBIP项目本身的问题。

由于USBIP协议文件的完整性我们还没有理解它在批量传输过程中的作用这也可能导致后续过程中的错误。

我们将继续努力使其在USB HID上发挥作用。一旦USBIP的问题得到解决我们将立即将其转移到WinUSB上工作


致谢

归功于以下项目、人员和组织。

许可证

MIT 许可证