结合ARM文档ADIv5,分析一下ARM提供的CMSIS DAP的开源代码,写点个人心得。
1.USB的整个传输有2个全局变量二维数组用作缓冲区,如下:
static uint8_t USB_Request [DAP_PACKET_COUNT][DAP_PACKET_SIZE]; // Request Buffer
static uint8_t USB_Response[DAP_PACKET_COUNT][DAP_PACKET_SIZE]; // Response Buffer
分别是输入缓冲和输出缓冲,固件从上位机接收数据后都会存放在这两个缓冲区,之后才会对缓冲区中的数据慢慢进行处理。
2.大概分析了一下SWD通信协议下,USB请求的结构被定义成为uint8_t类型的数组:
1)Request[0]:DAP Command IDs,该变量取值为
/* DAP Command IDs */
#define ID_DAP_Info 0x00
#