老规矩,先上链接:

--------------------
不知道大家是否还记得【重开旧坑】8051上的CMSIS-DAP调试器——TinyDAP开发过程记录 这个项目
虽然很可惜这个项目因为种种原因未能完成(主要是把之前的代码丢了,以及懒),但是时隔5年之后,我们终于等到了更好的芯片:CH570/CH572,而且AI能力的提升让时间不再成为瓶颈——对于DIY调试器来说,这就是最好的时代。
为什么说CH570/CH572是这个项目的最好选择呢?我觉得至少有以下几点戳中了我的需求:
首先,最重要的当然就是价格足够便宜:零售单价在1元左右,可以预见批量价肯定不会高于1元,完美接替8051的地位(而且性能更强!),感谢RISC-V为我们带来了性价比更高的选择。
其次,这样的价格不仅有全速USB(端点数量足够将CMSIS-DAP v1 + v2 + 串口完全塞入),而且还有2.4 GHz无线通信,四舍五入相当于白送(
CH570/CH572的主频足够高,100 MHz就算是4分频还有25 MHz,特别适合DAP这种高速I/O需求。
虽然CH570/CH572的Flash运行速度有点拉(仅相当于3.125 MHz或6.25 MHz,取决于指令位宽),但是12 KB的SRAM又很好地弥补了这一点,只要能在SRAM运行就能发挥高主频(几乎)全部的实力。
最后,我觉得CH570/CH572自带3.3 V的LDO是画龙点睛之笔:对于5 V输入的USB应用场景,3.3 V的LDO是刚需,自带LDO就意味着进一步缩减外围电路,像TinyDongle这样直接塞进USB接收器已经不再是遥不可及的梦想了。
这里顺便贴一下测试速度(哇酷好像没有Markdown表格功能,凑合看看),可以看到已经全面秒杀之前的TinyDAP,并且还有串口和无线两大功能的支持:
注:以下数据基于AirDAP v1.0固件进行,单位为kB/s(1 kB/s = 1000 B/s),所有速度均为有效数据吞吐。DAP部分连接STM32F103C8T6,线速度分别为25 MHz(SWD)和6.25 MHz(JTAG)。
“接收丢包率”指的是单向接收时因串口接收处理不及时造成丢包的比例
“收发速度”指的是同时收发时的发送速度和接收速度
“收发丢包率”指的是同时收发时因串口接收处理不及时造成丢包的比例(发送不丢包)
有线串口
| 波特率 | 发送速度 | 接收速度 | 接收丢包率 | 收发速度 | 收发丢包率 |
| --- | --- | --- | --- | --- | --- |
| 115200 | 11.47 | 11.47 | 0% | 11.47 / 11.47 | 0% |
| 230400 | 23.15 | 23.15 | 0% | 23.15 / 23.15 | 0% |
| 460800 | 46.30 | 46.30 | 0% | 46.30 / 46.30 | 0% |
| 921600 | 93.75 | 93.75 | 0% | 93.75 / 93.75 | 0% |
| 125000 | 12.50 | 12.50 | 0% | 12.50 / 12.50 | 0% |
| 250000 | 25.00 | 25.00 | 0% | 25.00 / 25.00 | 0% |
| 500000 | 50.00 | 50.00 | 0% | 50.00 / 50.00 | 0% |
| 750000 | 75.00 | 74.99 | 0% | 75.00 / 75.01 | 0% |
| 1000000 | 100.00 | 100.00 | 0% | 100.00 / 100.00 | 0% |
| 1500000 | 150.00 | 150.00 | 0% | 150.00 / 150.02 | 0% |
无线串口
| 波特率 | 发送速度 | 接收速度 | 接收丢包率 | 收发速度 | 收发丢包率 |
| --- | --- | --- | --- | --- | --- |
| 115200 | 11.47 | 11.47 | 0% | 11.47 / 11.47 | 0% |
| 230400 | 23.15 | 23.15 | 0% | 23.02 / 23.04 | 0% |
| 460800 | 46.30 | 46.28 | 0% | 36.87 / 34.15 | 7.1394% |
| 921600 | 92.10 | 89.94 | 5.0295% | 50.39 / 46.28 | 6.7357% |
| 125000 | 12.50 | 12.50 | 0% | 12.50 / 12.50 | 0% |
| 250000 | 25.00 | 25.01 | 0% | 24.52 / 24.55 | 0.0854% |
| 500000 | 49.90 | 50.05 | 0% | 39.19 / 35.27 | 8.2486% |
| 750000 | 74.38 | 73.80 | 1.3967% | 48.27 / 46.80 | 2.3578% |
| 1000000 | 96.59 | 80.15 | 18.8294% | 49.79 / 45.78 | 6.6796% |
| 1500000 | 109.45 | 94.27 | 36.2340% | 53.43 / 48.83 | 8.4864% |
有线DAP
| 上位机 | DAP协议 (HID or Bulk) | SWD SRAM读速度 | SWD SRAM写速度 | JTAG SRAM读速度 | JTAG SRAM写速度 |
| --- | --- | --- | --- | --- | --- |
| OpenOCD dev | HID | 28.81 | 27.19 | 2.62 | 2.56 |
| pyOCD | HID | 28.38 | 26.87 | 28.38 | 26.74 |
| probe-rs | HID | 24.73 | 24.73 | 4.27 | 4.26 |
| OpenOCD dev | Bulk | 434.07 | 438.17 | 10.85 | 10.61 |
| pyOCD | Bulk | 417.20 | 407.49 | 195.06 | 220.15 |
| probe-rs | Bulk | 280.85 | 280.12 | 20.28 | 20.30 |
无线DAP
| 上位机 | DAP协议 (HID or Bulk) | SWD SRAM读速度 | SWD SRAM写速度 | JTAG SRAM读速度 | JTAG SRAM写速度 |
| --- | --- | --- | --- | --- | --- |
| OpenOCD dev | HID | 26.20 | 25.00 | 1.19 | 1.19 |
| pyOCD | HID | 25.59 | 24.90 | 25.65 | 24.76 |
| probe-rs | HID | 21.35 | 21.63 | 2.21 | 2.21 |
| OpenOCD dev | Bulk | 51.68 | 52.96 | 1.85 | 1.85 |
| pyOCD | Bulk | 74.61 | 76.54 | 60.51 | 61.37 |
| probe-rs | Bulk | 50.55 | 53.19 | 3.23 | 3.24 |
那么废话不多说,项目已经全部开源,欢迎大家使用交流~
离线