You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
3.7 KiB
136 lines
3.7 KiB
/* |
|
* Copyright (c) 2018-2019 PHYTEC Messtechnik GmbH |
|
* |
|
* SPDX-License-Identifier: Apache-2.0 |
|
*/ |
|
|
|
/* |
|
* This file is based on DAP.c from CMSIS-DAP Source (Revision: V2.0.0) |
|
* https://github.com/ARM-software/CMSIS_5/tree/develop/CMSIS/DAP/Firmware |
|
* Copyright (c) 2013-2017 ARM Limited. All rights reserved. |
|
* SPDX-License-Identifier: Apache-2.0 |
|
*/ |
|
|
|
/** |
|
* @file |
|
* @brief DAP controller private header |
|
*/ |
|
|
|
#ifndef ZEPHYR_INCLUDE_CMSIS_DAP_H_ |
|
#define ZEPHYR_INCLUDE_CMSIS_DAP_H_ |
|
|
|
#include <zephyr/kernel.h> |
|
|
|
/* Firmware Version */ |
|
#define DAP_FW_VER "2.1.0" |
|
|
|
/* DAP Command IDs */ |
|
#define ID_DAP_INFO 0x00U |
|
#define ID_DAP_HOST_STATUS 0x01U |
|
#define ID_DAP_CONNECT 0x02U |
|
#define ID_DAP_DISCONNECT 0x03U |
|
#define ID_DAP_TRANSFER_CONFIGURE 0x04U |
|
#define ID_DAP_TRANSFER 0x05U |
|
#define ID_DAP_TRANSFER_BLOCK 0x06U |
|
#define ID_DAP_TRANSFER_ABORT 0x07U |
|
#define ID_DAP_WRITE_ABORT 0x08U |
|
#define ID_DAP_DELAY 0x09U |
|
#define ID_DAP_RESET_TARGET 0x0AU |
|
|
|
#define ID_DAP_SWJ_PINS 0x10U |
|
#define ID_DAP_SWJ_CLOCK 0x11U |
|
#define ID_DAP_SWJ_SEQUENCE 0x12U |
|
|
|
#define ID_DAP_SWDP_CONFIGURE 0x13U |
|
#define ID_DAP_SWDP_SEQUENCE 0x1DU |
|
|
|
#define ID_DAP_JTAG_SEQUENCE 0x14U |
|
#define ID_DAP_JTAG_CONFIGURE 0x15U |
|
#define ID_DAP_JTAG_IDCODE 0x16U |
|
|
|
#define ID_DAP_SWO_TRANSPORT 0x17U |
|
#define ID_DAP_SWO_MODE 0x18U |
|
#define ID_DAP_SWO_BAUDRATE 0x19U |
|
#define ID_DAP_SWO_CONTROL 0x1AU |
|
#define ID_DAP_SWO_STATUS 0x1BU |
|
#define ID_DAP_SWO_DATA 0x1CU |
|
|
|
#define ID_DAP_UART_TRANSPORT 0x1FU |
|
#define ID_DAP_UART_CONFIGURE 0x20U |
|
#define ID_DAP_UART_CONTROL 0x22U |
|
#define ID_DAP_UART_STATUS 0x23U |
|
#define ID_DAP_UART_TRANSFER 0x21U |
|
|
|
#define ID_DAP_QUEUE_COMMANDS 0x7EU |
|
#define ID_DAP_EXECUTE_COMMANDS 0x7FU |
|
|
|
/* DAP Vendor Command IDs */ |
|
#define ID_DAP_VENDOR0 0x80U |
|
#define ID_DAP_VENDOR31 0x9FU |
|
#define ID_DAP_INVALID 0xFFU |
|
|
|
/* DAP Status Code */ |
|
#define DAP_OK 0U |
|
#define DAP_ERROR 0xFFU |
|
|
|
/* DAP ID */ |
|
#define DAP_ID_VENDOR 0x01U |
|
#define DAP_ID_PRODUCT 0x02U |
|
#define DAP_ID_SER_NUM 0x03U |
|
#define DAP_ID_FW_VER 0x04U |
|
#define DAP_ID_DEVICE_VENDOR 0x05U |
|
#define DAP_ID_DEVICE_NAME 0x06U |
|
#define DAP_ID_BOARD_VENDOR 0x07U |
|
#define DAP_ID_BOARD_NAME 0x08U |
|
#define DAP_ID_PRODUCT_FW_VER 0x09U |
|
#define DAP_ID_CAPABILITIES 0xF0U |
|
#define DAP_ID_TIMESTAMP_CLOCK 0xF1U |
|
#define DAP_ID_UART_RX_BUFFER_SIZE 0xFBU |
|
#define DAP_ID_UART_TX_BUFFER_SIZE 0xFCU |
|
#define DAP_ID_SWO_BUFFER_SIZE 0xFDU |
|
#define DAP_ID_PACKET_COUNT 0xFEU |
|
#define DAP_ID_PACKET_SIZE 0xFFU |
|
|
|
/* DAP Host Status */ |
|
#define DAP_DEBUGGER_CONNECTED 0U |
|
#define DAP_TARGET_RUNNING 1U |
|
|
|
/* DAP Port */ |
|
#define DAP_PORT_AUTODETECT 0U |
|
#define DAP_PORT_DISABLED 0U |
|
#define DAP_PORT_SWD 1U |
|
#define DAP_PORT_JTAG 2U |
|
|
|
/* DAP transfer request bits */ |
|
#define DAP_TRANSFER_MATCH_VALUE BIT(4) |
|
#define DAP_TRANSFER_MATCH_MASK BIT(5) |
|
|
|
/* DAP transfer response bits */ |
|
#define DAP_TRANSFER_MISMATCH BIT(4) |
|
|
|
/* DAP controller capabilities */ |
|
#define DAP_DP_SUPPORTS_SWD BIT(0) |
|
#define DAP_DP_SUPPORTS_JTAG BIT(1) |
|
#define DAP_SWO_SUPPORTS_UART BIT(2) |
|
#define DAP_SWO_SUPPORTS_MANCHESTER BIT(3) |
|
#define DAP_SUPPORTS_ATOMIC_COMMANDS BIT(4) |
|
#define DAP_SUPPORTS_TIMESTAMP_CLOCK BIT(5) |
|
#define DAP_SWO_SUPPORTS_STREAM BIT(6) |
|
|
|
/* DP Register (DPv1) */ |
|
#define DP_IDCODE 0x00U |
|
#define DP_ABORT 0x00U |
|
#define DP_CTRL_STAT 0x04U |
|
#define DP_SELECT 0x08U |
|
#define DP_RESEND 0x08U |
|
#define DP_RDBUFF 0x0CU |
|
|
|
#define DAP_MBMSG_REGISTER_IFACE 0x0U |
|
#define DAP_MBMSG_FROM_IFACE 0x1U |
|
#define DAP_MBMSG_FROM_CONTROLLER 0x2U |
|
|
|
/* Keep it internal until an other interface has been implemented. */ |
|
int dap_setup(const struct device *const dev); |
|
uint32_t dap_execute_cmd(const uint8_t *request, uint8_t *response); |
|
|
|
#endif /* ZEPHYR_INCLUDE_CMSIS_DAP_H_ */
|
|
|