Repostiory containing DAPLink source code with Reset Pin workaround for HANI_IOT board.

Upstream: https://github.com/ARMmbed/DAPLink

Revision:
0:01f31e923fe2
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/source/daplink/cmsis-dap/debug_cm.h	Tue Apr 07 12:55:42 2020 +0200
@@ -0,0 +1,168 @@
+/**
+ * @file    debug_cm.h
+ * @brief   Access to ARM DAP (Cortex-M) using CMSIS-DAP protocol
+ *
+ * DAPLink Interface Firmware
+ * Copyright (c) 2009-2016, ARM Limited, All Rights Reserved
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may
+ * not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef DEBUG_CM_H
+#define DEBUG_CM_H
+
+#include "DAP.h"
+
+// SWD register access
+#define SWD_REG_AP        (1)
+#define SWD_REG_DP        (0)
+#define SWD_REG_R         (1<<1)
+#define SWD_REG_W         (0<<1)
+#define SWD_REG_ADR(a)    (a & 0x0c)
+
+// Abort Register definitions
+#define DAPABORT       0x00000001  // DAP Abort
+#define STKCMPCLR      0x00000002  // Clear STICKYCMP Flag (SW Only)
+#define STKERRCLR      0x00000004  // Clear STICKYERR Flag (SW Only)
+#define WDERRCLR       0x00000008  // Clear WDATAERR Flag (SW Only)
+#define ORUNERRCLR     0x00000010  // Clear STICKYORUN Flag (SW Only)
+
+// Debug Control and Status definitions
+#define ORUNDETECT     0x00000001  // Overrun Detect
+#define STICKYORUN     0x00000002  // Sticky Overrun
+#define TRNMODE        0x0000000C  // Transfer Mode Mask
+#define TRNNORMAL      0x00000000  // Transfer Mode: Normal
+#define TRNVERIFY      0x00000004  // Transfer Mode: Pushed Verify
+#define TRNCOMPARE     0x00000008  // Transfer Mode: Pushed Compare
+#define STICKYCMP      0x00000010  // Sticky Compare
+#define STICKYERR      0x00000020  // Sticky Error
+#define READOK         0x00000040  // Read OK (SW Only)
+#define WDATAERR       0x00000080  // Write Data Error (SW Only)
+#define MASKLANE       0x00000F00  // Mask Lane Mask
+#define MASKLANE0      0x00000100  // Mask Lane 0
+#define MASKLANE1      0x00000200  // Mask Lane 1
+#define MASKLANE2      0x00000400  // Mask Lane 2
+#define MASKLANE3      0x00000800  // Mask Lane 3
+#define TRNCNT         0x001FF000  // Transaction Counter Mask
+#define CDBGRSTREQ     0x04000000  // Debug Reset Request
+#define CDBGRSTACK     0x08000000  // Debug Reset Acknowledge
+#define CDBGPWRUPREQ   0x10000000  // Debug Power-up Request
+#define CDBGPWRUPACK   0x20000000  // Debug Power-up Acknowledge
+#define CSYSPWRUPREQ   0x40000000  // System Power-up Request
+#define CSYSPWRUPACK   0x80000000  // System Power-up Acknowledge
+
+// Debug Select Register definitions
+#define CTRLSEL        0x00000001  // CTRLSEL (SW Only)
+#define APBANKSEL      0x000000F0  // APBANKSEL Mask
+#define APSEL          0xFF000000  // APSEL Mask
+
+// Access Port Register Addresses
+#define AP_CSW         0x00        // Control and Status Word
+#define AP_TAR         0x04        // Transfer Address
+#define AP_DRW         0x0C        // Data Read/Write
+#define AP_BD0         0x10        // Banked Data 0
+#define AP_BD1         0x14        // Banked Data 1
+#define AP_BD2         0x18        // Banked Data 2
+#define AP_BD3         0x1C        // Banked Data 3
+#define AP_ROM         0xF8        // Debug ROM Address
+#define AP_IDR         0xFC        // Identification Register
+
+// AP Control and Status Word definitions
+#define CSW_SIZE       0x00000007  // Access Size: Selection Mask
+#define CSW_SIZE8      0x00000000  // Access Size: 8-bit
+#define CSW_SIZE16     0x00000001  // Access Size: 16-bit
+#define CSW_SIZE32     0x00000002  // Access Size: 32-bit
+#define CSW_ADDRINC    0x00000030  // Auto Address Increment Mask
+#define CSW_NADDRINC   0x00000000  // No Address Increment
+#define CSW_SADDRINC   0x00000010  // Single Address Increment
+#define CSW_PADDRINC   0x00000020  // Packed Address Increment
+#define CSW_DBGSTAT    0x00000040  // Debug Status
+#define CSW_TINPROG    0x00000080  // Transfer in progress
+#define CSW_HPROT      0x02000000  // User/Privilege Control
+#define CSW_MSTRTYPE   0x20000000  // Master Type Mask
+#define CSW_MSTRCORE   0x00000000  // Master Type: Core
+#define CSW_MSTRDBG    0x20000000  // Master Type: Debug
+#define CSW_RESERVED   0x01000000  // Reserved Value
+
+// Core Debug Register Address Offsets
+#define DBG_OFS        0x0DF0      // Debug Register Offset inside NVIC
+#define DBG_HCSR_OFS   0x00        // Debug Halting Control & Status Register
+#define DBG_CRSR_OFS   0x04        // Debug Core Register Selector Register
+#define DBG_CRDR_OFS   0x08        // Debug Core Register Data Register
+#define DBG_EMCR_OFS   0x0C        // Debug Exception & Monitor Control Register
+
+// Core Debug Register Addresses
+#define DBG_HCSR       (DBG_Addr + DBG_HCSR_OFS)
+#define DBG_CRSR       (DBG_Addr + DBG_CRSR_OFS)
+#define DBG_CRDR       (DBG_Addr + DBG_CRDR_OFS)
+#define DBG_EMCR       (DBG_Addr + DBG_EMCR_OFS)
+
+// Debug Halting Control and Status Register definitions
+#define C_DEBUGEN      0x00000001  // Debug Enable
+#define C_HALT         0x00000002  // Halt
+#define C_STEP         0x00000004  // Step
+#define C_MASKINTS     0x00000008  // Mask Interrupts
+#define C_SNAPSTALL    0x00000020  // Snap Stall
+#define S_REGRDY       0x00010000  // Register R/W Ready Flag
+#define S_HALT         0x00020000  // Halt Flag
+#define S_SLEEP        0x00040000  // Sleep Flag
+#define S_LOCKUP       0x00080000  // Lockup Flag
+#define S_RETIRE_ST    0x01000000  // Sticky Retire Flag
+#define S_RESET_ST     0x02000000  // Sticky Reset Flag
+#define DBGKEY         0xA05F0000  // Debug Key
+
+// Debug Exception and Monitor Control Register definitions
+#define VC_CORERESET   0x00000001  // Reset Vector Catch
+#define VC_MMERR       0x00000010  // Debug Trap on MMU Fault
+#define VC_NOCPERR     0x00000020  // Debug Trap on No Coprocessor Fault
+#define VC_CHKERR      0x00000040  // Debug Trap on Checking Error Fault
+#define VC_STATERR     0x00000080  // Debug Trap on State Error Fault
+#define VC_BUSERR      0x00000100  // Debug Trap on Bus Error Fault
+#define VC_INTERR      0x00000200  // Debug Trap on Interrupt Error Fault
+#define VC_HARDERR     0x00000400  // Debug Trap on Hard Fault
+#define MON_EN         0x00010000  // Monitor Enable
+#define MON_PEND       0x00020000  // Monitor Pend
+#define MON_STEP       0x00040000  // Monitor Step
+#define MON_REQ        0x00080000  // Monitor Request
+#define TRCENA         0x01000000  // Trace Enable (DWT, ITM, ETM, TPIU)
+
+// NVIC: Interrupt Controller Type Register
+#define NVIC_ICT       (NVIC_Addr + 0x0004)
+#define INTLINESNUM    0x0000001F  // Interrupt Line Numbers
+
+// NVIC: CPUID Base Register
+#define NVIC_CPUID     (NVIC_Addr + 0x0D00)
+#define CPUID_PARTNO   0x0000FFF0  // Part Number Mask
+#define CPUID_REVISION 0x0000000F  // Revision Mask
+#define CPUID_VARIANT  0x00F00000  // Variant Mask
+
+// NVIC: Application Interrupt/Reset Control Register
+#define NVIC_AIRCR     (NVIC_Addr + 0x0D0C)
+#define VECTRESET      0x00000001  // Reset Cortex-M (except Debug)
+#define VECTCLRACTIVE  0x00000002  // Clear Active Vector Bit
+#define SYSRESETREQ    0x00000004  // Reset System (except Debug)
+#define VECTKEY        0x05FA0000  // Write Key
+
+// NVIC: Debug Fault Status Register
+#define NVIC_DFSR      (NVIC_Addr + 0x0D30)
+#define HALTED         0x00000001  // Halt Flag
+#define BKPT           0x00000002  // BKPT Flag
+#define DWTTRAP        0x00000004  // DWT Match
+#define VCATCH         0x00000008  // Vector Catch Flag
+#define EXTERNAL       0x00000010  // External Debug Request
+
+// Data Watchpoint and Trace unit
+#define DWT_PCSR       0xe000101c  // DWT PC Sampling Register
+
+#endif