CMSIS-DAP plumbing

This commit is contained in:
Triss 2021-09-20 20:26:32 +02:00
parent a539988745
commit 808b7b1a8f
5 changed files with 11 additions and 9 deletions

View File

@ -236,6 +236,7 @@ typedef struct {
uint8_t fast_clock; // Fast Clock Flag
uint8_t padding[2];
uint32_t clock_delay; // Clock Delay
uint32_t clock_freq; // Clock Frequency
uint32_t timestamp; // Last captured Timestamp
struct { // Transfer Configuration
uint8_t idle_cycles; // Idle cycles after transfer

View File

@ -227,7 +227,7 @@ static uint32_t DAP_Connect(const uint8_t *request, uint8_t *response) {
} else {
port = *request;
}
switch (port) {
#if (DAP_SWD != 0)
case DAP_PORT_SWD:
@ -398,6 +398,7 @@ static uint32_t DAP_SWJ_Clock(const uint8_t *request, uint8_t *response) {
return ((4U << 16) | 1U);
}
DAP_Data.clock_freq = clock;
if (clock >= MAX_SWJ_CLOCK(DELAY_FAST_CYCLES)) {
DAP_Data.fast_clock = 1U;
DAP_Data.clock_delay = 1U;

View File

@ -45,7 +45,7 @@ file to the MDK-ARM project under the file group Configuration.
\return number of bytes in response (lower 16 bits)
number of bytes in request (upper 16 bits)
*/
uint32_t DAP_ProcessVendorCommand(const uint8_t *request, uint8_t *response) {
__WEAK uint32_t DAP_ProcessVendorCommand(const uint8_t *request, uint8_t *response) {
uint32_t num = (1U << 16) | 1U;
*response++ = *request; // copy Command ID

View File

@ -75,7 +75,7 @@
// tdi: pointer to TDI generated data
// tdo: pointer to TDO captured data
// return: none
void JTAG_Sequence (uint32_t info, const uint8_t *tdi, uint8_t *tdo) {
__WEAK void JTAG_Sequence (uint32_t info, const uint8_t *tdi, uint8_t *tdo) {
uint32_t i_val;
uint32_t o_val;
uint32_t bit;
@ -264,7 +264,7 @@ JTAG_TransferFunction(Slow)
// JTAG Read IDCODE register
// return: value read
uint32_t JTAG_ReadIDCode (void) {
__WEAK uint32_t JTAG_ReadIDCode (void) {
uint32_t bit;
uint32_t val;
uint32_t n;
@ -300,7 +300,7 @@ uint32_t JTAG_ReadIDCode (void) {
// JTAG Write ABORT register
// data: value to write
// return: none
void JTAG_WriteAbort (uint32_t data) {
__WEAK void JTAG_WriteAbort (uint32_t data) {
uint32_t n;
PIN_TMS_SET();
@ -345,7 +345,7 @@ void JTAG_WriteAbort (uint32_t data) {
// JTAG Set IR
// ir: IR value
// return: none
void JTAG_IR (uint32_t ir) {
__WEAK void JTAG_IR (uint32_t ir) {
if (DAP_Data.fast_clock) {
JTAG_IR_Fast(ir);
} else {
@ -358,7 +358,7 @@ void JTAG_IR (uint32_t ir) {
// request: A[3:2] RnW APnDP
// data: DATA[31:0]
// return: ACK[2:0]
uint8_t JTAG_Transfer(uint32_t request, uint32_t *data) {
__WEAK uint8_t JTAG_Transfer(uint32_t request, uint32_t *data) {
if (DAP_Data.fast_clock) {
return JTAG_TransferFast(request, data);
} else {

View File

@ -62,7 +62,7 @@
// data: pointer to sequence bit data
// return: none
#if ((DAP_SWD != 0) || (DAP_JTAG != 0))
void SWJ_Sequence (uint32_t count, const uint8_t *data) {
__WEAK void SWJ_Sequence (uint32_t count, const uint8_t *data) {
uint32_t val;
uint32_t n;
@ -274,7 +274,7 @@ SWD_TransferFunction(Slow)
// request: A[3:2] RnW APnDP
// data: DATA[31:0]
// return: ACK[2:0]
uint8_t SWD_Transfer(uint32_t request, uint32_t *data) {
__WEAK uint8_t SWD_Transfer(uint32_t request, uint32_t *data) {
if (DAP_Data.fast_clock) {
return SWD_TransferFast(request, data);
} else {