CMSIS-DAP的移植只需包含很少的文件,首先需要从github上[下载](https://github.com/ARM-software/CMSIS-DAP),为简化移植,我们只使用SWD接口。需要的文件有**Firmware\Source**目录下的DAP.c,DAP_vendor.c,SW_DP.c和**Firmware\Include**目录下的DAP.h,**Firmware\Config**目录下的DAP_config.h
CMSIS-DAP采用的是接收命令->执行命令->返回结果的运行方式。为加速运行,我们使用了FIFO式的环形队列,接收,执行,发送同时进行。另外,还使用了硬件SPI加速SWD接口
在上一篇WINUSB移植中,程序的框架已经完成了,我们只需将OUT端点接收到的数据使用DAP_ExecuteCommand执行,将返回值发送会电脑即可。关于环形队列的使用,大家可以对照程序理解
引脚分配
SWD数据包如下
参考**ARM® Debug Interface v5 Architecture Specification**,可以看到能使用SPI优化的只有两处:一个8bit的写操作,一个32bit的读或写操作,我们使用CPHA=1,CPOL=1进行模拟,剩下的ACK,Trn,Parity使用软件模拟,具体可以查看HWDAP.c和SW_DP.c文件
连接目标芯片的时候尽量在SWDIO和SWCLK之间间隔一个地线不然连接不太稳定
最后,我们开发板自带的AT-Link对比测试一下速度吧。均为下载一个494KB的文件至HC32F460JEUA中,时钟频率为10MHz
HS-CMSIS-DAP.zip
(1.31 MB)
|