Skip to content

Commit 097de17

Browse files
committed
DAP: update to v2.1 reference code.
- Merge in v2.1 changes. - Update DAP_config.h for all HICs.
1 parent bb18a22 commit 097de17

File tree

20 files changed

+1490
-388
lines changed

20 files changed

+1490
-388
lines changed

source/daplink/cmsis-dap/DAP.c

Lines changed: 52 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2013-2020 ARM Limited. All rights reserved.
2+
* Copyright (c) 2013-2021 ARM Limited. All rights reserved.
33
* Copyright 2019, Cypress Semiconductor Corporation
44
* or a subsidiary of Cypress Semiconductor Corporation.
55
*
@@ -63,10 +63,6 @@ volatile uint8_t DAP_TransferAbort; // Transfer Abort Flag
6363

6464
static const char DAP_FW_Ver [] = DAP_FW_VER;
6565

66-
#if TARGET_DEVICE_FIXED
67-
static const char TargetDeviceVendor [] = TARGET_DEVICE_VENDOR;
68-
static const char TargetDeviceName [] = TARGET_DEVICE_NAME;
69-
#endif
7066

7167

7268
// Get DAP Information
@@ -86,24 +82,24 @@ static uint8_t DAP_Info(uint8_t id, uint8_t *info) {
8682
case DAP_ID_SER_NUM:
8783
length = DAP_GetSerNumString((char *)info);
8884
break;
89-
case DAP_ID_CMSIS_DAP_VER:
85+
case DAP_ID_DAP_FW_VER:
9086
length = (uint8_t)sizeof(DAP_FW_Ver);
9187
memcpy(info, DAP_FW_Ver, length);
9288
break;
9389
case DAP_ID_DEVICE_VENDOR:
94-
#if TARGET_DEVICE_FIXED
95-
length = (uint8_t)sizeof(TargetDeviceVendor);
96-
memcpy(info, TargetDeviceVendor, length);
97-
#endif
90+
length = DAP_GetTargetDeviceVendorString((char *)info);
9891
break;
9992
case DAP_ID_DEVICE_NAME:
100-
#if TARGET_DEVICE_FIXED
101-
length = (uint8_t)sizeof(TargetDeviceName);
102-
memcpy(info, TargetDeviceName, length);
103-
#endif
93+
length = DAP_GetTargetDeviceNameString((char *)info);
94+
break;
95+
case DAP_ID_BOARD_VENDOR:
96+
length = DAP_GetTargetBoardVendorString((char *)info);
97+
break;
98+
case DAP_ID_BOARD_NAME:
99+
length = DAP_GetTargetBoardNameString((char *)info);
104100
break;
105101
case DAP_ID_PRODUCT_FW_VER:
106-
length = DAP_ProductFirmwareVerString((char *)info);
102+
length = DAP_GetProductFirmwareVersionString((char *)info);
107103
break;
108104
case DAP_ID_CAPABILITIES:
109105
info[0] = ((DAP_SWD != 0) ? (1U << 0) : 0U) |
@@ -112,8 +108,11 @@ static uint8_t DAP_Info(uint8_t id, uint8_t *info) {
112108
((SWO_MANCHESTER != 0) ? (1U << 3) : 0U) |
113109
/* Atomic Commands */ (1U << 4) |
114110
((TIMESTAMP_CLOCK != 0U) ? (1U << 5) : 0U) |
115-
((SWO_STREAM != 0U) ? (1U << 6) : 0U);
116-
length = 1U;
111+
((SWO_STREAM != 0U) ? (1U << 6) : 0U) |
112+
((DAP_UART != 0U) ? (1U << 7) : 0U);
113+
114+
info[1] = ((DAP_UART_USB_COM_PORT != 0) ? (1U << 0) : 0U);
115+
length = 2U;
117116
break;
118117
case DAP_ID_TIMESTAMP_CLOCK:
119118
#if (TIMESTAMP_CLOCK != 0U)
@@ -122,6 +121,24 @@ static uint8_t DAP_Info(uint8_t id, uint8_t *info) {
122121
info[2] = (uint8_t)(TIMESTAMP_CLOCK >> 16);
123122
info[3] = (uint8_t)(TIMESTAMP_CLOCK >> 24);
124123
length = 4U;
124+
#endif
125+
break;
126+
case DAP_ID_UART_RX_BUFFER_SIZE:
127+
#if (DAP_UART != 0)
128+
info[0] = (uint8_t)(DAP_UART_RX_BUFFER_SIZE >> 0);
129+
info[1] = (uint8_t)(DAP_UART_RX_BUFFER_SIZE >> 8);
130+
info[2] = (uint8_t)(DAP_UART_RX_BUFFER_SIZE >> 16);
131+
info[3] = (uint8_t)(DAP_UART_RX_BUFFER_SIZE >> 24);
132+
length = 4U;
133+
#endif
134+
break;
135+
case DAP_ID_UART_TX_BUFFER_SIZE:
136+
#if (DAP_UART != 0)
137+
info[0] = (uint8_t)(DAP_UART_TX_BUFFER_SIZE >> 0);
138+
info[1] = (uint8_t)(DAP_UART_TX_BUFFER_SIZE >> 8);
139+
info[2] = (uint8_t)(DAP_UART_TX_BUFFER_SIZE >> 16);
140+
info[3] = (uint8_t)(DAP_UART_TX_BUFFER_SIZE >> 24);
141+
length = 4U;
125142
#endif
126143
break;
127144
case DAP_ID_SWO_BUFFER_SIZE:
@@ -1744,6 +1761,24 @@ uint32_t DAP_ProcessCommand(const uint8_t *request, uint8_t *response) {
17441761
break;
17451762
#endif
17461763

1764+
#if (DAP_UART != 0)
1765+
case ID_DAP_UART_Transport:
1766+
num = UART_Transport(request, response);
1767+
break;
1768+
case ID_DAP_UART_Configure:
1769+
num = UART_Configure(request, response);
1770+
break;
1771+
case ID_DAP_UART_Control:
1772+
num = UART_Control(request, response);
1773+
break;
1774+
case ID_DAP_UART_Status:
1775+
num = UART_Status(response);
1776+
break;
1777+
case ID_DAP_UART_Transfer:
1778+
num = UART_Transfer(request, response);
1779+
break;
1780+
#endif
1781+
17471782
default:
17481783
*(response-1) = ID_DAP_Invalid;
17491784
return ((1U << 16) | 1U);

source/daplink/cmsis-dap/DAP.h

Lines changed: 59 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2013-2020 ARM Limited. All rights reserved.
2+
* Copyright (c) 2013-2021 ARM Limited. All rights reserved.
33
* Copyright 2019, Cypress Semiconductor Corporation
44
* or a subsidiary of Cypress Semiconductor Corporation.
55
*
@@ -19,8 +19,8 @@
1919
*
2020
* ----------------------------------------------------------------------
2121
*
22-
* $Date: 26. November 2019
23-
* $Revision: V2.0.0
22+
* $Date: 26. May 2021
23+
* $Revision: V2.1.0
2424
*
2525
* Project: CMSIS-DAP Include
2626
* Title: DAP.h Definitions
@@ -33,9 +33,9 @@
3333

3434
// DAP Firmware Version
3535
#ifdef DAP_FW_V1
36-
#define DAP_FW_VER "1.2.0"
36+
#define DAP_FW_VER "1.3.0"
3737
#else
38-
#define DAP_FW_VER "2.0.0"
38+
#define DAP_FW_VER "2.1.0"
3939
#endif
4040

4141
// DAP Command IDs
@@ -65,6 +65,11 @@
6565
#define ID_DAP_SWO_Status 0x1BU
6666
#define ID_DAP_SWO_ExtendedStatus 0x1EU
6767
#define ID_DAP_SWO_Data 0x1CU
68+
#define ID_DAP_UART_Transport 0x1FU
69+
#define ID_DAP_UART_Configure 0x20U
70+
#define ID_DAP_UART_Control 0x22U
71+
#define ID_DAP_UART_Status 0x23U
72+
#define ID_DAP_UART_Transfer 0x21U
6873

6974
#define ID_DAP_QueueCommands 0x7EU
7075
#define ID_DAP_ExecuteCommands 0x7FU
@@ -118,13 +123,16 @@
118123
#define DAP_ID_VENDOR 1U
119124
#define DAP_ID_PRODUCT 2U
120125
#define DAP_ID_SER_NUM 3U
121-
#define DAP_ID_CMSIS_DAP_VER 4U
122-
#define DAP_ID_FW_VER 4U // Deprecated alias of DAP_ID_CMSIS_DAP_VER for backwards compatibility.
126+
#define DAP_ID_DAP_FW_VER 4U
123127
#define DAP_ID_DEVICE_VENDOR 5U
124128
#define DAP_ID_DEVICE_NAME 6U
125-
#define DAP_ID_PRODUCT_FW_VER 7U
129+
#define DAP_ID_BOARD_VENDOR 7U
130+
#define DAP_ID_BOARD_NAME 8U
131+
#define DAP_ID_PRODUCT_FW_VER 9U
126132
#define DAP_ID_CAPABILITIES 0xF0U
127133
#define DAP_ID_TIMESTAMP_CLOCK 0xF1U
134+
#define DAP_ID_UART_RX_BUFFER_SIZE 0xFBU
135+
#define DAP_ID_UART_TX_BUFFER_SIZE 0xFCU
128136
#define DAP_ID_SWO_BUFFER_SIZE 0xFDU
129137
#define DAP_ID_PACKET_COUNT 0xFEU
130138
#define DAP_ID_PACKET_SIZE 0xFFU
@@ -174,6 +182,30 @@
174182
#define DAP_SWO_STREAM_ERROR (1U<<6)
175183
#define DAP_SWO_BUFFER_OVERRUN (1U<<7)
176184

185+
// DAP UART Transport
186+
#define DAP_UART_TRANSPORT_NONE 0U
187+
#define DAP_UART_TRANSPORT_USB_COM_PORT 1U
188+
#define DAP_UART_TRANSPORT_DAP_COMMAND 2U
189+
190+
// DAP UART Control
191+
#define DAP_UART_CONTROL_RX_ENABLE (1U<<0)
192+
#define DAP_UART_CONTROL_RX_DISABLE (1U<<1)
193+
#define DAP_UART_CONTROL_RX_BUF_FLUSH (1U<<2)
194+
#define DAP_UART_CONTROL_TX_ENABLE (1U<<4)
195+
#define DAP_UART_CONTROL_TX_DISABLE (1U<<5)
196+
#define DAP_UART_CONTROL_TX_BUF_FLUSH (1U<<6)
197+
198+
// DAP UART Status
199+
#define DAP_UART_STATUS_RX_ENABLED (1U<<0)
200+
#define DAP_UART_STATUS_RX_DATA_LOST (1U<<1)
201+
#define DAP_UART_STATUS_FRAMING_ERROR (1U<<2)
202+
#define DAP_UART_STATUS_PARITY_ERROR (1U<<3)
203+
#define DAP_UART_STATUS_TX_ENABLED (1U<<4)
204+
205+
// DAP UART Configure Error
206+
#define DAP_UART_CFG_ERROR_DATA_BITS (1U<<0)
207+
#define DAP_UART_CFG_ERROR_PARITY (1U<<1)
208+
#define DAP_UART_CFG_ERROR_STOP_BITS (1U<<2)
177209

178210
// Debug Port Register Addresses
179211
#define DP_IDCODE 0x00U // IDCODE Register (SW Read only)
@@ -272,17 +304,25 @@ extern void SWO_QueueTransfer (uint8_t *buf, uint32_t num);
272304
extern void SWO_AbortTransfer (void);
273305
extern void SWO_TransferComplete (void);
274306

275-
extern uint32_t UART_SWO_Mode (uint32_t enable);
276-
extern uint32_t UART_SWO_Baudrate (uint32_t baudrate);
277-
extern uint32_t UART_SWO_Control (uint32_t active);
278-
extern void UART_SWO_Capture (uint8_t *buf, uint32_t num);
279-
extern uint32_t UART_SWO_GetCount (void);
280-
281-
extern uint32_t Manchester_SWO_Mode (uint32_t enable);
282-
extern uint32_t Manchester_SWO_Baudrate (uint32_t baudrate);
283-
extern uint32_t Manchester_SWO_Control (uint32_t active);
284-
extern void Manchester_SWO_Capture (uint8_t *buf, uint32_t num);
285-
extern uint32_t Manchester_SWO_GetCount (void);
307+
extern uint32_t SWO_Mode_UART (uint32_t enable);
308+
extern uint32_t SWO_Baudrate_UART (uint32_t baudrate);
309+
extern uint32_t SWO_Control_UART (uint32_t active);
310+
extern void SWO_Capture_UART (uint8_t *buf, uint32_t num);
311+
extern uint32_t SWO_GetCount_UART (void);
312+
313+
extern uint32_t SWO_Mode_Manchester (uint32_t enable);
314+
extern uint32_t SWO_Baudrate_Manchester (uint32_t baudrate);
315+
extern uint32_t SWO_Control_Manchester (uint32_t active);
316+
extern void SWO_Capture_Manchester (uint8_t *buf, uint32_t num);
317+
extern uint32_t SWO_GetCount_Manchester (void);
318+
319+
extern uint32_t UART_Transport (const uint8_t *request, uint8_t *response);
320+
extern uint32_t UART_Configure (const uint8_t *request, uint8_t *response);
321+
extern uint32_t UART_Control (const uint8_t *request, uint8_t *response);
322+
extern uint32_t UART_Status (uint8_t *response);
323+
extern uint32_t UART_Transfer (const uint8_t *request, uint8_t *response);
324+
325+
extern uint8_t USB_COM_PORT_Activate (uint32_t cmd);
286326

287327
extern uint32_t DAP_ProcessVendorCommand (const uint8_t *request, uint8_t *response);
288328
extern uint32_t DAP_ProcessCommand (const uint8_t *request, uint8_t *response);

0 commit comments

Comments
 (0)