├── SRC ├── Uart.c ├── CH552.H ├── Debug.C ├── Debug.H ├── SW_DP.c ├── Main_Usb.C ├── Uart.h ├── SW_DP_asm.a51 ├── DAP.h └── DAP.c ├── PCB ├── CH552DAPLINk.PDF ├── CH552DAPLINK.PcbDoc └── CH552DAPLINK.SchDoc ├── README.md ├── KEIL ├── STARTUP.A51 ├── CH55x_DAPLink.uvopt └── CH55x_DAPLink.uvproj ├── CH55x_DAPLink_3V3_IO_16M.hex ├── CH55x_DAPLink_5V_IO_24M.hex ├── CH55x_DAPLink_5V_SPI_24M.hex └── LICENSE /SRC/Uart.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posystorage/CH55x_HS_DAP-Link-v2/HEAD/SRC/Uart.c -------------------------------------------------------------------------------- /SRC/CH552.H: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posystorage/CH55x_HS_DAP-Link-v2/HEAD/SRC/CH552.H -------------------------------------------------------------------------------- /SRC/Debug.C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posystorage/CH55x_HS_DAP-Link-v2/HEAD/SRC/Debug.C -------------------------------------------------------------------------------- /SRC/Debug.H: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posystorage/CH55x_HS_DAP-Link-v2/HEAD/SRC/Debug.H -------------------------------------------------------------------------------- /SRC/SW_DP.c: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posystorage/CH55x_HS_DAP-Link-v2/HEAD/SRC/SW_DP.c -------------------------------------------------------------------------------- /SRC/Main_Usb.C: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posystorage/CH55x_HS_DAP-Link-v2/HEAD/SRC/Main_Usb.C -------------------------------------------------------------------------------- /PCB/CH552DAPLINk.PDF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posystorage/CH55x_HS_DAP-Link-v2/HEAD/PCB/CH552DAPLINk.PDF -------------------------------------------------------------------------------- /PCB/CH552DAPLINK.PcbDoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posystorage/CH55x_HS_DAP-Link-v2/HEAD/PCB/CH552DAPLINK.PcbDoc -------------------------------------------------------------------------------- /PCB/CH552DAPLINK.SchDoc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/posystorage/CH55x_HS_DAP-Link-v2/HEAD/PCB/CH552DAPLINK.SchDoc -------------------------------------------------------------------------------- /SRC/Uart.h: -------------------------------------------------------------------------------- 1 | #ifndef __UART_H__ 2 | #define __UART_H__ 3 | 4 | #define USE_UART0 1 5 | #define USE_UART1 0 6 | 7 | #ifndef UART_BUAD 8 | #define UART_BUAD 115200 9 | #endif 10 | 11 | 12 | void UART_Setup(void); 13 | void UART_Get_USB_Data(UINT8 Nums); 14 | 15 | 16 | 17 | #endif 18 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CH55x_HS_DAP-Link-v2 2 | 基于CH55x低成本USB单片机实现的汇编级优化高速DAP-Link-v2 3 | 4 | 介绍见:开源CH551/2实现的汇编优化高速DAP-Link (CMSIS-DAP v2)https://whycan.com/t_7786.html 5 | 6 | SWD引脚 P1.5和P1.6需并联 7 | 8 | SWC引脚 P1.7 9 | 10 | 串口引脚 P3.0 P3.1 11 | 12 | 5V下使用应该接1T45电平转换芯片 SWC-DIR P3.4 SWD-DIR P3.2 13 | 14 | LED P1.1 15 | 16 | 复位1.4(接三极管) 17 | 18 | 拉高RST重新进ISP 19 | 20 | 使用3.3V供电时需要将两个供电脚短接(CH55xG的15和16脚)一坨锡 21 | -------------------------------------------------------------------------------- /SRC/SW_DP_asm.a51: -------------------------------------------------------------------------------- 1 | $NOMOD51 2 | NAME SW_DP_ASM 3 | 4 | SWC_PIN BIT 090H.7 5 | SWD_PIN BIT 090H.5 6 | SWD_PIN_DIR BIT 0B0H.2 7 | SWD_PMOD_OC DATA 092H 8 | SWD_PDIR_PU DATA 093H 9 | P2 DATA 0A0H 10 | ;Pn_MOD_OC Pn_DIR_PU 11 | ; 0 0 Input 12 | ; 0 1 PP_Output 13 | ; 1 0 OC_Output 14 | ; 1 1 OC_PU_Output 15 | 16 | ?PR?SWD_Write_Byte?SW_DP_ASM SEGMENT CODE 17 | ?PR?_SWJ_Sequence?SW_DP_ASM SEGMENT CODE 18 | ?PR?_SWD_IN_Sequence?SW_DP_ASM SEGMENT CODE 19 | ?PR?_SWD_Transfer?SW_DP_ASM SEGMENT CODE 20 | 21 | EXTRN IDATA (data_phase) 22 | EXTRN IDATA (idle_cycles) 23 | ;EXTRN IDATA (turnaround) 24 | PUBLIC _SWJ_Sequence 25 | PUBLIC _SWD_IN_Sequence 26 | PUBLIC _SWD_Transfer 27 | 28 | ;ACC = data 29 | ;R0 = Bits 30 | RSEG ?PR?SWD_Write_Byte?SW_DP_ASM 31 | SWD_Write_Byte: 32 | MOV R0,#8 33 | SWD_Write_Bits: 34 | SETB SWC_PIN 35 | RRC A 36 | MOV SWD_PIN,C 37 | CLR SWC_PIN 38 | DJNZ R0,SWD_Write_Bits 39 | SETB SWC_PIN 40 | RET 41 | 42 | SWD_Read_Byte: 43 | MOV R0,#8 44 | SWD_Read_Bits: 45 | CLR SWC_PIN 46 | MOV C,SWD_PIN 47 | RRC A 48 | SETB SWC_PIN 49 | DJNZ R0,SWD_Read_Bits 50 | RET 51 | 52 | ;R1~R3 = datas Addr 53 | ;R7 = Count 54 | RSEG ?PR?_SWJ_Sequence?SW_DP_ASM 55 | _SWJ_Sequence: 56 | MOV P2,R2 57 | SWJ_Next_Byte: 58 | MOV A,R7 59 | CLR C 60 | SUBB A,#9 61 | JC SWJ_Last_Bits 62 | INC A 63 | MOV R7,A 64 | MOVX A,@R1 65 | Call SWD_Write_Byte 66 | INC R1 67 | SJMP SWJ_Next_Byte 68 | SWJ_Last_Bits: 69 | MOV A,R7 70 | MOV R0,A 71 | MOVX A,@R1 72 | Call SWD_Write_Bits 73 | RET 74 | 75 | 76 | ;R1~R3 = datas Addr 77 | ;R7 = Count 78 | RSEG ?PR?_SWD_IN_Sequence?SW_DP_ASM 79 | _SWD_IN_Sequence: 80 | SETB SWD_PIN 81 | ORL SWD_PMOD_OC,#20H ;PP_Output->OC_PU_Output->PU_Input ;P1.5 82 | CLR SWD_PIN_DIR 83 | MOV P2,R2 84 | SWD_IN_Next_Byte: 85 | MOV A,R7 86 | CLR C 87 | SUBB A,#9 88 | JC SWD_IN_Last_Bits 89 | INC A 90 | MOV R7,A 91 | Call SWD_Read_Byte 92 | MOVX @R1,A 93 | INC R1 94 | SJMP SWD_IN_Next_Byte 95 | SWD_IN_Last_Bits: 96 | MOV A,R7 97 | MOV R0,A 98 | Call SWD_Read_Bits 99 | MOVX @R1,A 100 | SETB SWD_PIN_DIR 101 | ANL SWD_PMOD_OC,#0DFH ;PU_Input->PP_Output ;P1.5 102 | RET 103 | 104 | ;R5 = datas Addr(Idata) 105 | ;R7 = Req 106 | RSEG ?PR?_SWD_Transfer?SW_DP_ASM 107 | _SWD_Transfer: 108 | MOV A,R5 109 | MOV R1,A 110 | SWD_T1: 111 | MOV A,R7 112 | ANL ACC,#0FH 113 | RL A 114 | JNB PSW.0,SWD_T2 115 | SETB ACC.5 116 | SWD_T2: 117 | ORL ACC,#81H 118 | call SWD_Write_Byte ;Start->Park 119 | SETB SWD_PIN 120 | ORL SWD_PMOD_OC,#20H ;PP_Output->OC_PU_Output->PU_Input ;P1.5 121 | ;ANL SWD_PDIR_PU,#0DFH ;PP_Output->Input 122 | CLR SWD_PIN_DIR 123 | MOV R0,#4 124 | call SWD_Read_Bits ;Trn+3bit_ASK 125 | SWAP A 126 | RR A 127 | ANL ACC,#07H 128 | XCH A,R7;R7=ACK[2:0](for return) A=request 129 | CJNE R7,#01H,SWD_T3;ACK=001b WAIT=010b FAULT=100b (LSB) 130 | JB ACC.1,SWD_TR1 131 | ;write 132 | CLR SWC_PIN ;Trn 133 | NOP 134 | NOP 135 | SETB SWC_PIN 136 | MOV R5,#0 ;PARITY 137 | SETB SWD_PIN_DIR 138 | ANL SWD_PMOD_OC,#0DFH ;PU_Input->PP_Output ;P1.5 139 | ;ORL SWD_PDIR_PU,#20H 140 | ;write 33bits 141 | MOV A,@R1 142 | JNB PSW.0,SWD_TW1 143 | INC R5 144 | SWD_TW1: 145 | CALL SWD_Write_Byte 146 | INC R1 147 | MOV A,@R1 148 | JNB PSW.0,SWD_TW2 149 | INC R5 150 | SWD_TW2: 151 | CALL SWD_Write_Byte 152 | INC R1 153 | MOV A,@R1 154 | JNB PSW.0,SWD_TW3 155 | INC R5 156 | SWD_TW3: 157 | CALL SWD_Write_Byte 158 | INC R1 159 | MOV A,@R1 160 | JNB PSW.0,SWD_TW4 161 | INC R5 162 | SWD_TW4: 163 | CALL SWD_Write_Byte 164 | MOV A,R5 165 | RRC A 166 | MOV SWD_PIN,C;PARITY bit 167 | SJMP SWD_TR7 168 | SWD_TR1: ;read 169 | ;read 33bits 170 | MOV R5,#0 ;PARITY 171 | CALL SWD_Read_Byte 172 | JNB PSW.0,SWD_TR2 173 | INC R5 174 | SWD_TR2: 175 | MOV @R1,A 176 | INC R1 177 | CALL SWD_Read_Byte 178 | JNB PSW.0,SWD_TR3 179 | INC R5 180 | SWD_TR3: 181 | MOV @R1,A 182 | INC R1 183 | CALL SWD_Read_Byte 184 | JNB PSW.0,SWD_TR4 185 | INC R5 186 | SWD_TR4: 187 | MOV @R1,A 188 | INC R1 189 | CALL SWD_Read_Byte 190 | JNB PSW.0,SWD_TR5 191 | INC R5 192 | SWD_TR5: 193 | MOV @R1,A 194 | CLR SWC_PIN 195 | CLR A 196 | MOV C,SWD_PIN 197 | RLC A 198 | SETB SWC_PIN 199 | XRL A,R5 200 | JNB ACC.0,SWD_TR6 201 | MOV R7,#08H 202 | SWD_TR6: 203 | SETB SWD_PIN_DIR 204 | ANL SWD_PMOD_OC,#0DFH ;PU_Input->PP_Output ;P1.5 205 | ;ORL SWD_PDIR_PU,#20H 206 | SWD_TR7: 207 | ;MOV R0,#LOW (idle_cycles) 208 | ;INC R0 209 | ;MOV R0,#01H 210 | ;SWD_TR8: 211 | CLR SWC_PIN 212 | NOP 213 | NOP 214 | SETB SWC_PIN 215 | ;DJNZ R0,SWD_TR8 216 | RET 217 | 218 | SWD_T3: ; wait/fault/error 219 | ;Dummy write/read 220 | CJNE R7,#02H,SWD_TE1 ;010b wait 221 | SJMP SWD_TE3 222 | SWD_TE1: 223 | CJNE R7,#02H,SWD_TE2 ;100b fault 224 | SJMP SWD_TE3 225 | SWD_TE2: 226 | MOV R7,#010H ;others:MISMATCH 227 | MOV R0,#022H 228 | SJMP SWD_TE4 229 | SWD_TE3: 230 | ; MOV R0,#022H 231 | ; MOV A,#LOW (data_phase) 232 | ; JNZ SWD_TE4 233 | MOV R0,#01H 234 | SWD_TE4: 235 | CLR SWC_PIN 236 | NOP 237 | NOP 238 | SETB SWC_PIN 239 | DJNZ R0,SWD_TE4 240 | SETB SWD_PIN_DIR 241 | ANL SWD_PMOD_OC,#0DFH ;PU_Input->PP_Output ;P1.5 242 | ;ORL SWD_PDIR_PU,#20H 243 | RET 244 | 245 | END -------------------------------------------------------------------------------- /KEIL/STARTUP.A51: -------------------------------------------------------------------------------- 1 | $NOMOD51 2 | ;------------------------------------------------------------------------------ 3 | ; This file is part of the C51 Compiler package 4 | ; Copyright (c) 1988-2005 Keil Elektronik GmbH and Keil Software, Inc. 5 | ; Version 8.01 6 | ; 7 | ; *** <<< Use Configuration Wizard in Context Menu >>> *** 8 | ;------------------------------------------------------------------------------ 9 | ; STARTUP.A51: This code is executed after processor reset. 10 | ; 11 | ; To translate this file use A51 with the following invocation: 12 | ; 13 | ; A51 STARTUP.A51 14 | ; 15 | ; To link the modified STARTUP.OBJ file to your application use the following 16 | ; Lx51 invocation: 17 | ; 18 | ; Lx51 your object file list, STARTUP.OBJ controls 19 | ; 20 | ;------------------------------------------------------------------------------ 21 | ; 22 | ; User-defined Power-On Initialization of Memory 23 | ; 24 | ; With the following EQU statements the initialization of memory 25 | ; at processor reset can be defined: 26 | ; 27 | ; IDATALEN: IDATA memory size <0x0-0x100> 28 | ; Note: The absolute start-address of IDATA memory is always 0 29 | ; The IDATA space overlaps physically the DATA and BIT areas. 30 | IDATALEN EQU 80H 31 | ; 32 | ; XDATASTART: XDATA memory start address <0x0-0xFFFF> 33 | ; The absolute start address of XDATA memory 34 | XDATASTART EQU 0 35 | ; 36 | ; XDATALEN: XDATA memory size <0x0-0xFFFF> 37 | ; The length of XDATA memory in bytes. 38 | XDATALEN EQU 0 39 | ; 40 | ; PDATASTART: PDATA memory start address <0x0-0xFFFF> 41 | ; The absolute start address of PDATA memory 42 | PDATASTART EQU 0H 43 | ; 44 | ; PDATALEN: PDATA memory size <0x0-0xFF> 45 | ; The length of PDATA memory in bytes. 46 | PDATALEN EQU 0H 47 | ; 48 | ; 49 | ;------------------------------------------------------------------------------ 50 | ; 51 | ; Reentrant Stack Initialization 52 | ; 53 | ; The following EQU statements define the stack pointer for reentrant 54 | ; functions and initialized it: 55 | ; 56 | ; Stack Space for reentrant functions in the SMALL model. 57 | ; IBPSTACK: Enable SMALL model reentrant stack 58 | ; Stack space for reentrant functions in the SMALL model. 59 | IBPSTACK EQU 0 ; set to 1 if small reentrant is used. 60 | ; IBPSTACKTOP: End address of SMALL model stack <0x0-0xFF> 61 | ; Set the top of the stack to the highest location. 62 | IBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1 63 | ; 64 | ; 65 | ; Stack Space for reentrant functions in the LARGE model. 66 | ; XBPSTACK: Enable LARGE model reentrant stack 67 | ; Stack space for reentrant functions in the LARGE model. 68 | XBPSTACK EQU 0 ; set to 1 if large reentrant is used. 69 | ; XBPSTACKTOP: End address of LARGE model stack <0x0-0xFFFF> 70 | ; Set the top of the stack to the highest location. 71 | XBPSTACKTOP EQU 0xFFFF +1 ; default 0FFFFH+1 72 | ; 73 | ; 74 | ; Stack Space for reentrant functions in the COMPACT model. 75 | ; PBPSTACK: Enable COMPACT model reentrant stack 76 | ; Stack space for reentrant functions in the COMPACT model. 77 | PBPSTACK EQU 0 ; set to 1 if compact reentrant is used. 78 | ; 79 | ; PBPSTACKTOP: End address of COMPACT model stack <0x0-0xFFFF> 80 | ; Set the top of the stack to the highest location. 81 | PBPSTACKTOP EQU 0xFF +1 ; default 0FFH+1 82 | ; 83 | ; 84 | ;------------------------------------------------------------------------------ 85 | ; 86 | ; Memory Page for Using the Compact Model with 64 KByte xdata RAM 87 | ; Compact Model Page Definition 88 | ; 89 | ; Define the XDATA page used for PDATA variables. 90 | ; PPAGE must conform with the PPAGE set in the linker invocation. 91 | ; 92 | ; Enable pdata memory page initalization 93 | PPAGEENABLE EQU 0 ; set to 1 if pdata object are used. 94 | ; 95 | ; PPAGE number <0x0-0xFF> 96 | ; uppermost 256-byte address of the page used for PDATA variables. 97 | PPAGE EQU 0 98 | ; 99 | ; SFR address which supplies uppermost address byte <0x0-0xFF> 100 | ; most 8051 variants use P2 as uppermost address byte 101 | PPAGE_SFR DATA 0A0H 102 | ; 103 | ; 104 | ;------------------------------------------------------------------------------ 105 | 106 | ; Standard SFR Symbols 107 | ACC DATA 0E0H 108 | B DATA 0F0H 109 | SP DATA 81H 110 | DPL DATA 82H 111 | DPH DATA 83H 112 | 113 | NAME ?C_STARTUP 114 | 115 | 116 | ?C_C51STARTUP SEGMENT CODE 117 | ?STACK SEGMENT IDATA 118 | 119 | RSEG ?STACK 120 | DS 1 121 | 122 | EXTRN CODE (?C_START) 123 | PUBLIC ?C_STARTUP 124 | 125 | CSEG AT 0 126 | ?C_STARTUP: LJMP STARTUP1 127 | 128 | RSEG ?C_C51STARTUP 129 | 130 | STARTUP1: 131 | 132 | IF IDATALEN <> 0 133 | MOV R0,#IDATALEN - 1 134 | CLR A 135 | IDATALOOP: MOV @R0,A 136 | DJNZ R0,IDATALOOP 137 | ENDIF 138 | 139 | IF XDATALEN <> 0 140 | MOV DPTR,#XDATASTART 141 | MOV R7,#LOW (XDATALEN) 142 | IF (LOW (XDATALEN)) <> 0 143 | MOV R6,#(HIGH (XDATALEN)) +1 144 | ELSE 145 | MOV R6,#HIGH (XDATALEN) 146 | ENDIF 147 | CLR A 148 | XDATALOOP: MOVX @DPTR,A 149 | INC DPTR 150 | DJNZ R7,XDATALOOP 151 | DJNZ R6,XDATALOOP 152 | ENDIF 153 | 154 | IF PPAGEENABLE <> 0 155 | MOV PPAGE_SFR,#PPAGE 156 | ENDIF 157 | 158 | IF PDATALEN <> 0 159 | MOV R0,#LOW (PDATASTART) 160 | MOV R7,#LOW (PDATALEN) 161 | CLR A 162 | PDATALOOP: MOVX @R0,A 163 | INC R0 164 | DJNZ R7,PDATALOOP 165 | ENDIF 166 | 167 | IF IBPSTACK <> 0 168 | EXTRN DATA (?C_IBP) 169 | 170 | MOV ?C_IBP,#LOW IBPSTACKTOP 171 | ENDIF 172 | 173 | IF XBPSTACK <> 0 174 | EXTRN DATA (?C_XBP) 175 | 176 | MOV ?C_XBP,#HIGH XBPSTACKTOP 177 | MOV ?C_XBP+1,#LOW XBPSTACKTOP 178 | ENDIF 179 | 180 | IF PBPSTACK <> 0 181 | EXTRN DATA (?C_PBP) 182 | MOV ?C_PBP,#LOW PBPSTACKTOP 183 | ENDIF 184 | 185 | MOV SP,#?STACK-1 186 | 187 | ; This code is required if you use L51_BANK.A51 with Banking Mode 4 188 | ; Code Banking 189 | ; Select Bank 0 for L51_BANK.A51 Mode 4 190 | #if 0 191 | ; Initialize bank mechanism to code bank 0 when using L51_BANK.A51 with Banking Mode 4. 192 | EXTRN CODE (?B_SWITCH0) 193 | CALL ?B_SWITCH0 ; init bank mechanism to code bank 0 194 | #endif 195 | ; 196 | LJMP ?C_START 197 | 198 | END 199 | -------------------------------------------------------------------------------- /SRC/DAP.h: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013-2017 ARM Limited. All rights reserved. 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the License); you may 7 | * not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an AS IS BASIS, WITHOUT 14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | * 18 | * ---------------------------------------------------------------------- 19 | * 20 | * $Date: 1. December 2017 21 | * $Revision: V2.0.0 22 | * 23 | * Project: CMSIS-DAP Include 24 | * Title: DAP.h Definitions 25 | * 26 | *---------------------------------------------------------------------------*/ 27 | 28 | #ifndef __DAP_H__ 29 | #define __DAP_H__ 30 | 31 | #include "CH552.H" 32 | #include 33 | #include 34 | #include 35 | 36 | // DAP Firmware Version 37 | #define DAP_FW_VER "2.0.0" 38 | 39 | // DAP Command IDs 40 | #define ID_DAP_Info 0x00U 41 | #define ID_DAP_HostStatus 0x01U 42 | #define ID_DAP_Connect 0x02U 43 | #define ID_DAP_Disconnect 0x03U 44 | #define ID_DAP_TransferConfigure 0x04U 45 | #define ID_DAP_Transfer 0x05U 46 | #define ID_DAP_TransferBlock 0x06U 47 | #define ID_DAP_TransferAbort 0x07U 48 | #define ID_DAP_WriteABORT 0x08U 49 | #define ID_DAP_Delay 0x09U 50 | #define ID_DAP_ResetTarget 0x0AU 51 | #define ID_DAP_SWJ_Pins 0x10U 52 | #define ID_DAP_SWJ_Clock 0x11U 53 | #define ID_DAP_SWJ_Sequence 0x12U 54 | #define ID_DAP_SWD_Configure 0x13U 55 | #define ID_DAP_SWD_Sequence 0x1DU 56 | #define ID_DAP_JTAG_Sequence 0x14U 57 | #define ID_DAP_JTAG_Configure 0x15U 58 | #define ID_DAP_JTAG_IDCODE 0x16U 59 | #define ID_DAP_SWO_Transport 0x17U 60 | #define ID_DAP_SWO_Mode 0x18U 61 | #define ID_DAP_SWO_Baudrate 0x19U 62 | #define ID_DAP_SWO_Control 0x1AU 63 | #define ID_DAP_SWO_Status 0x1BU 64 | #define ID_DAP_SWO_ExtendedStatus 0x1EU 65 | #define ID_DAP_SWO_Data 0x1CU 66 | 67 | #define ID_DAP_QueueCommands 0x7EU 68 | #define ID_DAP_ExecuteCommands 0x7FU 69 | 70 | // DAP Vendor Command IDs 71 | #define ID_DAP_Vendor0 0x80U 72 | #define ID_DAP_Vendor1 0x81U 73 | #define ID_DAP_Vendor2 0x82U 74 | #define ID_DAP_Vendor3 0x83U 75 | #define ID_DAP_Vendor4 0x84U 76 | #define ID_DAP_Vendor5 0x85U 77 | #define ID_DAP_Vendor6 0x86U 78 | #define ID_DAP_Vendor7 0x87U 79 | #define ID_DAP_Vendor8 0x88U 80 | #define ID_DAP_Vendor9 0x89U 81 | #define ID_DAP_Vendor10 0x8AU 82 | #define ID_DAP_Vendor11 0x8BU 83 | #define ID_DAP_Vendor12 0x8CU 84 | #define ID_DAP_Vendor13 0x8DU 85 | #define ID_DAP_Vendor14 0x8EU 86 | #define ID_DAP_Vendor15 0x8FU 87 | #define ID_DAP_Vendor16 0x90U 88 | #define ID_DAP_Vendor17 0x91U 89 | #define ID_DAP_Vendor18 0x92U 90 | #define ID_DAP_Vendor19 0x93U 91 | #define ID_DAP_Vendor20 0x94U 92 | #define ID_DAP_Vendor21 0x95U 93 | #define ID_DAP_Vendor22 0x96U 94 | #define ID_DAP_Vendor23 0x97U 95 | #define ID_DAP_Vendor24 0x98U 96 | #define ID_DAP_Vendor25 0x99U 97 | #define ID_DAP_Vendor26 0x9AU 98 | #define ID_DAP_Vendor27 0x9BU 99 | #define ID_DAP_Vendor28 0x9CU 100 | #define ID_DAP_Vendor29 0x9DU 101 | #define ID_DAP_Vendor30 0x9EU 102 | #define ID_DAP_Vendor31 0x9FU 103 | 104 | #define ID_DAP_Invalid 0xFFU 105 | 106 | // DAP Status Code 107 | #define DAP_OK 0U 108 | #define DAP_ERROR 0xFFU 109 | 110 | // DAP ID 111 | #define DAP_ID_VENDOR 1U 112 | #define DAP_ID_PRODUCT 2U 113 | #define DAP_ID_SER_NUM 3U 114 | #define DAP_ID_FW_VER 4U 115 | #define DAP_ID_DEVICE_VENDOR 5U 116 | #define DAP_ID_DEVICE_NAME 6U 117 | #define DAP_ID_CAPABILITIES 0xF0U 118 | #define DAP_ID_TIMESTAMP_CLOCK 0xF1U 119 | #define DAP_ID_SWO_BUFFER_SIZE 0xFDU 120 | #define DAP_ID_PACKET_COUNT 0xFEU 121 | #define DAP_ID_PACKET_SIZE 0xFFU 122 | 123 | // DAP Host Status 124 | #define DAP_DEBUGGER_CONNECTED 0U 125 | #define DAP_TARGET_RUNNING 1U 126 | 127 | // DAP Port 128 | #define DAP_PORT_AUTODETECT 0U // Autodetect Port 129 | #define DAP_PORT_DISABLED 0U // Port Disabled (I/O pins in High-Z) 130 | #define DAP_PORT_SWD 1U // SWD Port (SWCLK, SWDIO) + nRESET 131 | #define DAP_PORT_JTAG 2U // JTAG Port (TCK, TMS, TDI, TDO, nTRST) + nRESET 132 | 133 | // DAP SWJ Pins 134 | #define DAP_SWJ_SWCLK_TCK 0 // SWCLK/TCK 135 | #define DAP_SWJ_SWDIO_TMS 1 // SWDIO/TMS 136 | #define DAP_SWJ_TDI 2 // TDI 137 | #define DAP_SWJ_TDO 3 // TDO 138 | #define DAP_SWJ_nTRST 5 // nTRST 139 | #define DAP_SWJ_nRESET 7 // nRESET 140 | 141 | #define DAP_SWJ_SWCLK_TCK_BIT 0x01 // SWCLK/TCK 142 | #define DAP_SWJ_SWDIO_TMS_BIT 0x02 // SWDIO/TMS 143 | #define DAP_SWJ_TDI_BIT 0x04 // TDI 144 | #define DAP_SWJ_TDO_BIT 0x08 // TDO 145 | #define DAP_SWJ_nTRST_BIT 0x20 // nTRST 146 | #define DAP_SWJ_nRESET_BIT 0x80 // nRESET 147 | 148 | // DAP Transfer Request 149 | #define DAP_TRANSFER_APnDP (1U << 0) 150 | #define DAP_TRANSFER_RnW (1U << 1) 151 | #define DAP_TRANSFER_A2 (1U << 2) 152 | #define DAP_TRANSFER_A3 (1U << 3) 153 | #define DAP_TRANSFER_MATCH_VALUE (1U << 4) 154 | #define DAP_TRANSFER_MATCH_MASK (1U << 5) 155 | #define DAP_TRANSFER_TIMESTAMP (1U << 7) 156 | 157 | // DAP Transfer Response 158 | #define DAP_TRANSFER_OK (1U << 0) 159 | #define DAP_TRANSFER_WAIT (1U << 1) 160 | #define DAP_TRANSFER_FAULT (1U << 2) 161 | #define DAP_TRANSFER_ERROR (1U << 3) 162 | #define DAP_TRANSFER_MISMATCH (1U << 4) 163 | 164 | // DAP SWO Trace Mode 165 | #define DAP_SWO_OFF 0U 166 | #define DAP_SWO_UART 1U 167 | #define DAP_SWO_MANCHESTER 2U 168 | 169 | // DAP SWO Trace Status 170 | #define DAP_SWO_CAPTURE_ACTIVE (1U << 0) 171 | #define DAP_SWO_CAPTURE_PAUSED (1U << 1) 172 | #define DAP_SWO_STREAM_ERROR (1U << 6) 173 | #define DAP_SWO_BUFFER_OVERRUN (1U << 7) 174 | 175 | // Debug Port Register Addresses 176 | #define DP_IDCODE 0x00U // IDCODE Register (SW Read only) 177 | #define DP_ABORT 0x00U // Abort Register (SW Write only) 178 | #define DP_CTRL_STAT 0x04U // Control & Status 179 | #define DP_WCR 0x04U // Wire Control Register (SW Only) 180 | #define DP_SELECT 0x08U // Select Register (JTAG R/W & SW W) 181 | #define DP_RESEND 0x08U // Resend (SW Read Only) 182 | #define DP_RDBUFF 0x0CU // Read Buffer (Read Only) 183 | 184 | // JTAG IR Codes 185 | #define JTAG_ABORT 0x08U 186 | #define JTAG_DPACC 0x0AU 187 | #define JTAG_APACC 0x0BU 188 | #define JTAG_IDCODE 0x0EU 189 | #define JTAG_BYPASS 0x0FU 190 | 191 | // JTAG Sequence Info 192 | #define JTAG_SEQUENCE_TCK 0x3FU // TCK count 193 | #define JTAG_SEQUENCE_TMS 0x40U // TMS value 194 | #define JTAG_SEQUENCE_TDO 0x80U // TDO capture 195 | 196 | // SWD Sequence Info 197 | #define SWD_SEQUENCE_CLK 0x3FU // SWCLK count 198 | #define SWD_SEQUENCE_DIN 0x80U // SWDIO capture 199 | 200 | #define DAP_PACKET_COUNT 4 201 | #define DAP_PACKET_SIZE 64 //THIS_ENDP0_SIZE 202 | #define DAP_DEFAULT_PORT DAP_PORT_SWD 203 | 204 | sbit RST = P1 ^ 4; 205 | sbit SWK = P1 ^ 7; 206 | sbit SWD = P1 ^ 5; 207 | sbit LED = P1 ^ 1; 208 | sbit DIR_SWK = P3 ^ 4; 209 | sbit DIR_SWD = P3 ^ 2; 210 | extern BOOL DAP_LED_BUSY; 211 | 212 | extern UINT8I Ep2Oi; 213 | extern UINT8I Ep2Oo; 214 | extern UINT8I Ep3Ii; 215 | extern UINT8I Ep3Io; 216 | extern UINT8I Ep3Is[]; 217 | 218 | extern UINT8X Ep2BufferO[]; 219 | extern UINT8X Ep3BufferI[]; 220 | 221 | extern UINT8I turnaround; 222 | extern UINT8I data_phase; 223 | extern UINT8I idle_cycles; 224 | 225 | extern void DAP_Thread(void); 226 | extern void PORT_SWD_SETUP(void); 227 | extern void PORT_SWD_OFF(void); 228 | extern void SWD_ResetTarget_Soft(void); 229 | extern UINT8I SWD_Transfer(UINT8 reqI, UINT8I *datas); 230 | extern void SWJ_Sequence(UINT8I count, const UINT8 *datas); 231 | //extern void SWD_Sequence(UINT8I info, const UINT8 *swdo, UINT8 *swdi); 232 | extern void SWD_IN_Sequence(UINT8I count, UINT8 *swdi); 233 | 234 | #endif /* __DAP_H__ */ 235 | -------------------------------------------------------------------------------- /KEIL/CH55x_DAPLink.uvopt: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1.0 5 | 6 |
### uVision Project, (C) Keil Software
7 | 8 | 9 | *.c 10 | *.s*; *.src; *.a* 11 | *.obj; *.o 12 | *.lib 13 | *.txt; *.h; *.inc; *.md 14 | *.plm 15 | *.cpp; *.cc; *.cxx 16 | 0 17 | 18 | 19 | 20 | 0 21 | 0 22 | 23 | 24 | 25 | Target 1 26 | 0x0 27 | MCS-51 28 | 29 | 24000000 30 | 31 | 1 32 | 1 33 | 1 34 | 0 35 | 0 36 | 37 | 38 | 0 39 | 65535 40 | 0 41 | 0 42 | 0 43 | 44 | 45 | 120 46 | 65 47 | 8 48 | .\Listings\ 49 | 50 | 51 | 1 52 | 1 53 | 1 54 | 0 55 | 1 56 | 1 57 | 0 58 | 1 59 | 1 60 | 0 61 | 0 62 | 0 63 | 64 | 65 | 1 66 | 1 67 | 1 68 | 1 69 | 1 70 | 1 71 | 1 72 | 0 73 | 0 74 | 75 | 76 | 1 77 | 0 78 | 1 79 | 80 | 0 81 | 82 | 0 83 | 1 84 | 1 85 | 1 86 | 1 87 | 1 88 | 1 89 | 1 90 | 1 91 | 1 92 | 0 93 | 1 94 | 1 95 | 1 96 | 0 97 | 1 98 | 1 99 | 1 100 | 1 101 | 0 102 | 0 103 | 1 104 | 0 105 | 0 106 | 12 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | BIN\CH55xISP.dll 118 | 119 | 120 | 121 | 0 122 | CH55xISP 123 | -S1 -B115200 -O3072 124 | 125 | 126 | 127 | 128 | 0 129 | 130 | 131 | 0 132 | 1 133 | 0 134 | 0 135 | 0 136 | 0 137 | 0 138 | 0 139 | 0 140 | 0 141 | 0 142 | 0 143 | 0 144 | 0 145 | 0 146 | 0 147 | 0 148 | 0 149 | 0 150 | 0 151 | 0 152 | 0 153 | 0 154 | 0 155 | 156 | 157 | 158 | 0 159 | 0 160 | 0 161 | 162 | 163 | 164 | 165 | 166 | 167 | 168 | 169 | 170 | 171 | 172 | 173 | Source Group 1 174 | 1 175 | 0 176 | 0 177 | 0 178 | 179 | 1 180 | 1 181 | 1 182 | 0 183 | 0 184 | 0 185 | ..\SRC\DAP.c 186 | DAP.c 187 | 0 188 | 0 189 | 190 | 191 | 1 192 | 2 193 | 1 194 | 0 195 | 0 196 | 0 197 | ..\SRC\Debug.C 198 | Debug.C 199 | 0 200 | 0 201 | 202 | 203 | 1 204 | 3 205 | 1 206 | 0 207 | 0 208 | 0 209 | ..\SRC\Main_Usb.C 210 | Main_Usb.C 211 | 0 212 | 0 213 | 214 | 215 | 1 216 | 4 217 | 1 218 | 0 219 | 0 220 | 0 221 | ..\SRC\SW_DP.c 222 | SW_DP.c 223 | 0 224 | 0 225 | 226 | 227 | 1 228 | 5 229 | 2 230 | 0 231 | 0 232 | 0 233 | ..\SRC\SW_DP_asm.a51 234 | SW_DP_asm.a51 235 | 0 236 | 0 237 | 238 | 239 | 1 240 | 6 241 | 1 242 | 0 243 | 0 244 | 0 245 | ..\SRC\Uart.c 246 | Uart.c 247 | 0 248 | 0 249 | 250 | 251 | 252 |
253 | -------------------------------------------------------------------------------- /KEIL/CH55x_DAPLink.uvproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 1.1 5 | 6 |
### uVision Project, (C) Keil Software
7 | 8 | 9 | 10 | Target 1 11 | 0x0 12 | MCS-51 13 | 0 14 | 15 | 16 | CH552 17 | WCH 18 | IRAM(0-0xFF) XRAM(0-0x3FF) IROM(0-0x3FFF) CLOCK(24000000) 19 | 20 | "LIB\STARTUP.A51" ("Standard 8051 Startup Code") 21 | 22 | 0 23 | CH552.H 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 0 35 | 0 36 | 37 | 38 | 39 | WCH\ 40 | WCH\ 41 | 42 | 0 43 | 0 44 | 0 45 | 0 46 | 1 47 | 48 | .\Objects\ 49 | CH55x_DAPLink 50 | 1 51 | 0 52 | 1 53 | 1 54 | 1 55 | .\Listings\ 56 | 0 57 | 0 58 | 0 59 | 60 | 0 61 | 0 62 | 63 | 64 | 0 65 | 0 66 | 0 67 | 0 68 | 69 | 70 | 0 71 | 0 72 | 73 | 74 | 0 75 | 0 76 | 0 77 | 0 78 | 79 | 80 | 0 81 | 0 82 | 83 | 84 | 0 85 | 0 86 | 0 87 | 0 88 | 89 | 0 90 | 91 | 92 | 93 | 0 94 | 0 95 | 0 96 | 0 97 | 0 98 | 1 99 | 0 100 | 0 101 | 0 102 | 0 103 | 3 104 | 105 | 106 | 1 107 | 65535 108 | 109 | 110 | S8051.DLL 111 | 112 | DP51.DLL 113 | -pDR8051 114 | S8051.DLL 115 | 116 | TP51.DLL 117 | -p51 118 | 119 | 120 | 121 | 0 122 | 0 123 | 0 124 | 0 125 | 16 126 | 127 | 128 | 0 129 | 1 130 | 1 131 | 1 132 | 1 133 | 1 134 | 1 135 | 1 136 | 0 137 | 1 138 | 139 | 140 | 1 141 | 1 142 | 0 143 | 1 144 | 1 145 | 1 146 | 0 147 | 1 148 | 1 149 | 1 150 | 151 | 0 152 | 12 153 | 154 | 155 | 156 | 157 | 158 | 159 | 160 | 161 | 162 | 163 | 164 | 165 | 166 | BIN\CH55xISP.dll 167 | 168 | 169 | 170 | 171 | 1 172 | 0 173 | 0 174 | 0 175 | 1 176 | -1 177 | 178 | 1 179 | 180 | "" () 181 | 182 | 183 | 184 | 185 | 0 186 | 187 | 188 | 189 | 0 190 | 0 191 | 2 192 | 0 193 | 0 194 | 0 195 | 0 196 | 0 197 | 0 198 | 1 199 | 1 200 | 1 201 | 0 202 | 0 203 | 0 204 | 0 205 | 0 206 | 0 207 | 0 208 | 0 209 | 0 210 | 0 211 | 0 212 | 0 213 | 0 214 | 0 215 | 0 216 | 0 217 | 0 218 | 0 219 | 0 220 | 0 221 | 0 222 | 0 223 | 0 224 | 0 225 | 0 226 | 0 227 | 0 228 | 0 229 | 0 230 | 0 231 | 0 232 | 233 | 234 | 0 235 | 0x0 236 | 0xffff 237 | 238 | 239 | 0 240 | 0x0 241 | 0x0 242 | 243 | 244 | 0 245 | 0x0 246 | 0x0 247 | 248 | 249 | 0 250 | 0x0 251 | 0x0 252 | 253 | 254 | 0 255 | 0x0 256 | 0x0 257 | 258 | 259 | 0 260 | 0x0 261 | 0x0 262 | 263 | 264 | 0 265 | 0x0 266 | 0x0 267 | 268 | 269 | 0 270 | 0x0 271 | 0x0 272 | 273 | 274 | 1 275 | 0x0 276 | 0x4000 277 | 278 | 279 | 0 280 | 0x0 281 | 0x100 282 | 283 | 284 | 0 285 | 0x0 286 | 0x400 287 | 288 | 289 | 0 290 | 0x0 291 | 0x0 292 | 293 | 294 | 0 295 | 0x0 296 | 0x0 297 | 298 | 299 | 0 300 | 0x0 301 | 0x0 302 | 303 | 304 | 0 305 | 0x0 306 | 0x0 307 | 308 | 309 | 310 | 311 | 0 312 | 0 313 | 1 314 | 0 315 | 1 316 | 3 317 | 8 318 | 2 319 | 1 320 | 1 321 | 0 322 | 0 323 | 324 | 325 | 326 | 327 | 328 | 329 | 330 | 331 | 0 332 | 1 333 | 0 334 | 0 335 | 336 | 337 | 338 | 339 | 340 | 341 | 342 | 343 | 0 344 | 0 345 | 1 346 | 0 347 | 2 348 | 1 349 | 350 | 351 | 352 | 353 | 354 | 355 | 356 | 357 | 358 | 359 | 360 | 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | 369 | 370 | 371 | 372 | 373 | 374 | 375 | 376 | 377 | Source Group 1 378 | 379 | 380 | DAP.c 381 | 1 382 | ..\SRC\DAP.c 383 | 384 | 385 | Debug.C 386 | 1 387 | ..\SRC\Debug.C 388 | 389 | 390 | Main_Usb.C 391 | 1 392 | ..\SRC\Main_Usb.C 393 | 394 | 395 | SW_DP.c 396 | 1 397 | ..\SRC\SW_DP.c 398 | 399 | 400 | SW_DP_asm.a51 401 | 2 402 | ..\SRC\SW_DP_asm.a51 403 | 404 | 405 | Uart.c 406 | 1 407 | ..\SRC\Uart.c 408 | 409 | 410 | 2 411 | 0 412 | 0 413 | 0 414 | 0 415 | 2 416 | 2 417 | 1 418 | 1 419 | 2 420 | 11 421 | 422 | 423 | 1 424 | 65535 425 | 426 | 427 | 428 | 2 429 | 2 430 | 2 431 | 2 432 | 2 433 | 8 434 | 10 435 | 3 436 | 2 437 | 2 438 | 2 439 | 0 440 | 441 | 442 | 443 | 444 | 445 | 446 | 447 | 448 | 449 | 450 | 451 | 452 | 453 | 454 | 455 | 456 |
457 | -------------------------------------------------------------------------------- /CH55x_DAPLink_3V3_IO_16M.hex: -------------------------------------------------------------------------------- 1 | :061BEF00322E302E300002 2 | :031B1B00019C002A 3 | :06163F008B2E8A2F89307A 4 | :10164500E4781CF6EF24FE60171460161460162467 5 | :1016550014602B24F2605514603424FE705D800202 6 | :101665008000E48024781C7606E6FF7E00A830AC76 7 | :101675002FAD2E7BFF7A1B79EF120B1B803DAB2E16 8 | :10168500AA2FA9307401120B87781CF6802DAB2E7A 9 | :10169500AA2FA9307440120B87AB2EAA2FA9309020 10 | :1016A5000001E4120B99781C7602800FAB2EAA2F4D 11 | :0F16B500A9307404120B87781C7601781CE6FFAD 12 | :0116C4002203 13 | :101A2F00900001120B5AFE120B41FDEE781CF6EDE1 14 | :101A3F0008F6781C08E616187001161486064E7004 15 | :0C1A4F00F1AB31AA32A933120B877F01E2 16 | :011A5B002268 17 | :101A8800120B4114600304700B900001120B5A13DF 18 | :101A98009202800AAB31AA32A93374FF8007AB31B6 19 | :0B1AA800AA32A933E4120B877F012251 20 | :1019A200120B41FF781C700476018002A607781C96 21 | :1019B200E6147009789576011219D28004E4781C35 22 | :0F19C200F6781CE6AB31AA32A933120B877F01EE 23 | :0119D10022F3 24 | :100026008B2E8A2F8930E47895F6121BB8AB2EAA50 25 | :0A0036002FA930E4120B877F01228E 26 | :100003008B2E8A2F8930121811AB2EAA2FA930906C 27 | :0D0013000001E4120B99E4120B877F02221A 28 | :10151500120B41781CF6900001120B5A781DF690BB 29 | :101525000003120B5AFE900002120B5AFDEE781EB4 30 | :10153500F6ED08F6900004120B5A7008900005129B 31 | :101545000B5A6009781EE64480F608E6F6781DE633 32 | :10155500FF5401600C18E654016004D2978002C262 33 | :1015650097EF5402600D781CE654026004D2958012 34 | :1015750002C295781DE65480600F18E65402600497 35 | :10158500C2948005121811D294A295E43325E0FF88 36 | :10159500A297E4334F781CF6209404E64480F6784D 37 | :0D15A5001CE6AB31AA32A933120B877F017F 38 | :0115B2002216 39 | :101B4C00120B417892F6E4F67881F6AB31AA32A901 40 | :071B5C0033120B877F012209 41 | :06196D008B2E8A2F893049 42 | :101973000530E5307002052F14F9120B41781CF67F 43 | :10198300E6700276FF781CE6FFAB2EAA2FA9301271 44 | :0E1993001B34AB31AA32A933E4120B877F015B 45 | :0119A1002223 46 | :101AB300120B41781CF6E6FF540304789AF6EF54B0 47 | :101AC3000460047F0180027F00788CA607AB31AAF3 48 | :091AD30032A933E4120B877F01F4 49 | :011ADC0022E7 50 | :0612E5008B2E8A2F8930D8 51 | :1012EB00AB310533E533AA327002053214F9E4123F 52 | :1012FB000B87781E7601AB2E0530E530AA2F7002D6 53 | :10130B00052F14F9120B4118F6781DE6167003021F 54 | :10131B0013A3AB2E0530E530AA2F7002052F14F95D 55 | :10132B00120B4118F6E6FF543F781FF67002764019 56 | :10133B00EF54806034781FE6FFAB31AA32A9331229 57 | :10134B001ADD781FE62407FFE433FEEF7803CEC3E4 58 | :10135B0013CE13D8F9781FF6E6FF2533F533E435B2 59 | :10136B0032F53218EF26F680A0781FE6FFAB2EAAD7 60 | :10137B002FA930121B34781FE62407FFE433FEEF4E 61 | :10138B007803CEC313CE13D8F9781FF62530F5307A 62 | :0C139B00E4352FF52F021314781EE6FF36 63 | :0113A7002223 64 | :1018F800120B417882F6900002120B5AFE900001FA 65 | :10190800120B5AFDEE7898F6ED08F6900004120BCB 66 | :101918005AFE900003120B5AFDEE7893F6ED08F686 67 | :0D192800AB31AA32A933E4120B877F0122F4 68 | :060046008B348A35893677 69 | :10004C008B3A8A3B893CE47880F6789BF685373D81 70 | :10005C0085383E85393F74022539F539E43538F554 71 | :10006C0038E408F6781DF608F6042536F536E4353E 72 | :10007C0035F535AB340536E536AA35700205351441 73 | :10008C00F9120B41788DF6788DE670030204DAAB29 74 | :10009C00340536E536AA357002053514F9120B41D4 75 | :1000AC007883F6E6FF5402700302039C781DE67019 76 | :1000BC00030201807898E6FC08E6FD7896A6040811 77 | :1000CC00A605EF5411640170267883E6FF7D841237 78 | :1000DC0013A8789BEFF66402703B789608E6161826 79 | :1000EC0086067001164E602D789CE660DC80267DBD 80 | :1000FC00847F0E1213A8789BEFF664027013789627 81 | :10010C0008E6161886067001164E6005789CE660A7 82 | :10011C00DEE4781DF6789BE6640160030204DA786D 83 | :10012C0084E6FFAB370539E539AA38700205381477 84 | :10013C00F9EF120B8708E6FFAB370539E539AA381A 85 | :10014C007002053814F9EF120B8708E6FFAB370580 86 | :10015C0039E539AA387002053814F9EF120B870803 87 | :10016C00E6FFAB370539E539AA387002053814F9C2 88 | :10017C00EF120B877883E6FF541070030202BEABBC 89 | :10018C0034AA35A936120B417888F6900001120B6F 90 | :10019C005A7889F6900002120B5A788AF69000036E 91 | :1001AC00120B5A788BF674042536F536E43535F592 92 | :1001BC00357893E6FC08E6FD18A60408A605EF546E 93 | :1001CC0001603D7898E6FE08E6FF7896A60608A63C 94 | :1001DC00077883E6FFE4FD1213A8789BEFF67E0008 95 | :1001EC0064027013789608E6161886047001164C93 96 | :1001FC006005789CE660DAEF64014E60030204DA75 97 | :10020C007898E6FE08E6FF7896A60608A607788397 98 | :10021C00E6FF7D841213A8789BEFF67E00640270D3 99 | :10022C0013789608E6161886047001164C6005784B 100 | :10023C009CE660DAEF64014E703C7984E7788E5668 101 | :10024C00788866701E09E7788F567889667014096D 102 | :10025C00E7789056788A66700A09E7789156788B19 103 | :10026C00666013789308E6161886067001164E60C1 104 | :10027C0005789CE6608A7984E7788E567888667073 105 | :10028C001E09E7788F56788966701409E7789056BE 106 | :10029C00788A66700A09E7789156788B66600678DA 107 | :1002AC009BE64410F6789BE664017003020395020A 108 | :1002BC0004DA7898E6FE08E6FF7896A60608A60704 109 | :1002CC007883E65401603E781DE66003020395785E 110 | :1002DC0083E6FFE4FD1213A8789BEFF67E00640220 111 | :1002EC007013789608E6161886047001164C600593 112 | :1002FC00789CE660DAEF64014E60030204DA781D44 113 | :10030C0076010203957883E6FF7D841213A8789B0F 114 | :10031C00EFF67E0064027013789608E616188604D1 115 | :10032C007001164C6005789CE660DAEF64014E6053 116 | :10033C00030204DA7884E6FFAB370539E539AA38CD 117 | :10034C007002053814F9EF120B8708E6FFAB37057E 118 | :10035C0039E539AA387002053814F9EF120B870801 119 | :10036C00E6FFAB370539E539AA387002053814F9C0 120 | :10037C00EF120B8708E6FFAB370539E539AA387061 121 | :10038C0002053814F9EF120B87E4781EF60204CC40 122 | :10039C00781DE670030204387898E6FE08E6FF78CC 123 | :1003AC0096A60608A6077D847F0E1213A8789BEFED 124 | :1003BC00F67E0064027013789608E61618860470B0 125 | :1003CC0001164C6005789CE660DCEF64014E60031E 126 | :1003DC000204DA7884E6FFAB370539E539AA3870C0 127 | :1003EC0002053814F9EF120B8708E6FFAB37053915 128 | :1003FC00E539AA387002053814F9EF120B8708E6B4 129 | :10040C00FFAB370539E539AA387002053814F9EF16 130 | :10041C00120B8708E6FFAB370539E539AA387002AD 131 | :10042C00053814F9EF120B87E4781DF6AB34AA35B6 132 | :10043C00A936120B417884F6900001120B5A78857C 133 | :10044C00F6900002120B5A7886F6900003120B5AA3 134 | :10045C007887F674042536F536E43535F53578832A 135 | :10046C00E65420601D08E6788EF67885E6788FF6DF 136 | :10047C007886E67890F67887E67891F6789B760120 137 | :10048C00803E7898E6FE08E6FF7896A60608A60752 138 | :10049C007883E6FF7D841213A8789BEFF67E0064C8 139 | :1004AC00027013789608E6161886047001164C60D4 140 | :1004BC0005789CE660DAEF64014E7012781E7601C6 141 | :1004CC00788006789CE67006788D16020093788DFD 142 | :1004DC00E66031AB340536E536AA357002053514C5 143 | :1004EC00F9120B417883F6E6FF54026007EF5410C3 144 | :1004FC00600D800074042536F536E43535F5357815 145 | :10050C008D1680CA789BE6640160030205E9781DAC 146 | :10051C00E670030205B47898E6FE08E6FF7896A626 147 | :10052C000608A6077D847F0E1213A8789BEFF67E33 148 | :10053C000064027013789608E6161886047001168B 149 | :10054C004C6005789CE660DCEF64014E60030205AC 150 | :10055C00E97884E6FFAB370539E539AA387002052E 151 | :10056C003814F9EF120B8708E6FFAB370539E5397C 152 | :10057C00AA387002053814F9EF120B8708E6FFABA6 153 | :10058C00370539E539AA387002053814F9EF120B22 154 | :10059C008708E6FFAB370539E539AA38700205380C 155 | :1005AC0014F9EF120B878035781EE660307898E6E8 156 | :1005BC00FE08E6FF7896A60608A607E4FD7F0E1255 157 | :1005CC0013A8789BEFF664027013789608E6161859 158 | :1005DC0086067001164E6005789CE660DE7880E633 159 | :1005EC00AB3DAA3EA93F120B87789BE6AB3DAA3EDA 160 | :0D05FC00A93F900001120B99C3E53999FF4A 161 | :0106090022CE 162 | :101B7A00E4781CF6853137853238853339120046C8 163 | :041B8A00781CEFF6DE 164 | :011B8E002234 165 | :060D04008B348A358936AC 166 | :100D0A00E47880F6789BF685373A85383B85393C16 167 | :100D1A0074032539F539E43538F538E408F604253D 168 | :100D2A0036F536E43535F535AB34FAA93690000197 169 | :100D3A00120B5A120B41FF788DF674022536F536DE 170 | :100D4A00E43535F535EF7003020F08AB340536E5A7 171 | :100D5A0036AA357002053514F9120B417883F6E686 172 | :100D6A00FF54027003020E61EF5401603D7898E669 173 | :100D7A00FE08E6FF7896A60608A6077883E6FFE44B 174 | :100D8A00FD1213A8789BEFF67E0064027013789622 175 | :100D9A0008E6161886047001164C6005789CE66011 176 | :100DAA00DAEF64014E6003020F08788DE6167003CD 177 | :100DBA00020F08E670097883E654016002760E781D 178 | :100DCA0098E6FE08E6FF7896A60608A6077883E660 179 | :100DDA00FF7D841213A8789BEFF67E0064027013DD 180 | :100DEA00789608E6161886047001164C6005789CF9 181 | :100DFA00E660DAEF64014E6003020F087884E6FFCA 182 | :100E0A00AB370539E539AA387002053814F9EF12FB 183 | :100E1A000B8708E6FFAB370539E539AA38700205B2 184 | :100E2A003814F9EF120B8708E6FFAB370539E539B5 185 | :100E3A00AA387002053814F9EF120B8708E6FFABDF 186 | :100E4A00370539E539AA387002053814F9EF120B5B 187 | :100E5A0087788006020DB4788DE6166071AB34AAE5 188 | :100E6A0035A936120B417884F6900001120B5A7894 189 | :100E7A0085F6900002120B5A7886F6900003120B40 190 | :100E8A005A7887F674042536F536E43535F535781B 191 | :100E9A0098E6FE08E6FF7896A60608A6077883E68F 192 | :100EAA00FF7D841213A8789BEFF67E00640270130C 193 | :100EBA00789608E6161886047001164C6005789C28 194 | :100ECA00E660DAEF64014E7035788006808978989A 195 | :100EDA00E6FE08E6FF7896A60608A607E4FD7F0E5A 196 | :100EEA001213A8789BEFF664027013789608E61638 197 | :100EFA001886067001164E6005789CE660DE7880DA 198 | :100F0A00E6AB3AAA3BA93C120B87AB3AAA3BA93CEF 199 | :100F1A00900001E4120B99789BE6900002120B995B 200 | :050F2A00C3E53999FF49 201 | :010F2F00229F 202 | :0616C5008B2E8A2F8930F4 203 | :1016CB007895E6147018853137853238853339AB08 204 | :1016DB002EAA2FA930120D04781CA6078021AB313E 205 | :1016EB00AA32A933E4120B87AB31AA32A93390008B 206 | :1016FB0001120B99900002E4120B99781C7603AB44 207 | :10170B002EAA2FA930900003120B5A5402600678B0 208 | :10171B001CE6F68025900002120B5A900001120B6A 209 | :10172B005A75F004A42404FFE435F0FEEF7810C3DF 210 | :0E173B0033CE33CED8F9781C46F6781CE6FF84 211 | :01174900227D 212 | :10193500900001120B5A7884F6900002120B5A7827 213 | :1019450085F6900003120B5A7886F6900004120B68 214 | :101955005A7887F67D84E4FF1213A8AB37AA38A915 215 | :0819650039E4120B877F012217 216 | :101A5C007895E61470128531378532388533391212 217 | :101A6C001935781CA607800FAB31AA32A93374FF45 218 | :0B1A7C00120B87781C7601781CE6FF37 219 | :011A8700223C 220 | :0C0F300078A6E6FF78A066700302111C92 221 | :100F3C007E0074002FF9EE3401752801F529892AF9 222 | :100F4C00789FE62400F9EE3402752B01F52C892DDF 223 | :100F5C0078A6744026F6AB28AA29A92A120B41FFC1 224 | :100F6C00AB2B052DE52DAA2C7002052C14F9EF12D4 225 | :100F7C000B87AB28052AE52AAA297002052914F942 226 | :100F8C00120B41120CD80FED00101601102B021091 227 | :100F9C00400310D1040FC3050FD80610E508104C00 228 | :100FAC000910610A106D1010811110951210A913FF 229 | :100FBC0010BD1D000010FD852B31852C32852D3385 230 | :100FCC00AB28AA29A92A121B7A0210F7852B318586 231 | :100FDC002C32852D33AB28AA29A92A1216C502104A 232 | :100FEC00F7AB28AA29A92A120B41FFAB2BE52D241C 233 | :100FFC0001F9E4352CFA12163F781BEFF6AB2BAA4D 234 | :10100C002CA92D120B870602110F852B31852C3242 235 | :10101C00852D33AB28AA29A92A121A880210F78524 236 | :10102C002B31852C32852D33AB28AA29A92A1219EC 237 | :10103C00A20210F7AB2BAA2CA92D1200260210F736 238 | :10104C00852B31852C32852D33AB28AA29A92A1260 239 | :10105C001A2F0210F7AB2BAA2CA92D120003021089 240 | :10106C00F7852B31852C32852D33AB28AA29A92A5B 241 | :10107C001215158076852B31852C32852D33AB28B6 242 | :10108C00AA29A92A121B4C8062852B31852C32850A 243 | :10109C002D33AB28AA29A92A12196D804E852B3124 244 | :1010AC00852C32852D33AB28AA29A92A121AB38094 245 | :1010BC003A852B31852C32852D33AB28AA29A92AC8 246 | :1010CC001212E58026852B31852C32852D33AB28E9 247 | :1010DC00AA29A92A1218F88012852B31852C328561 248 | :1010EC002D33AB28AA29A92A121A5C781BA60780D3 249 | :1010FC0012AB2BAA2CA92D90FFFF74FF120B997821 250 | :10110C001B7601781BE60479A2F7789F744026F6CB 251 | :01111C0022B0 252 | :101B8F0075A15575A1AAE5B954F84405F5B943B146 253 | :051B9F0002E4F5A122A3 254 | :101BCB00EF4E600D05A105A105A1EF1F70F21E8060 255 | :021BDB00EF22F7 256 | :101B6300AD07AC06ED4C600E7FE87E03121BCBED98 257 | :071B73001D70F11C80EE2241 258 | :10111D0012011002EF020140280D0402000101022C 259 | :10112D0003010902620003010080FA0904000002B4 260 | :10113D00FF0000040705020240000007058302407E 261 | :10114D000000080B02020202010509040200020A56 262 | :10115D000000000705010240000007058102400064 263 | :10116D00000904030001020201000524001001051D 264 | :10117D00240100010424020205240603020705844C 265 | :10118D00030800FF040309040803410052004D0049 266 | :10119D0024034400410050004C0069006E006B00B8 267 | :1011AD00200043004D005300490053002D00440022 268 | :1011BD00410050001A033300560033002D00490042 269 | :1011CD004F002D00310032003300340035001A037A 270 | :1011DD0043004D005300490053002D0044004100D1 271 | :1011ED0050002000760032001E03440041005000E4 272 | :1011FD004C0069006E006B002D004300440043005D 273 | :10120D00450078007400050F280002071002000049 274 | :10121D0000001C100500DF60DDD88945C74C9CD24D 275 | :10122D00659D9E648A9F00000306AA0020000A00A7 276 | :10123D00000000000306AA00080002000000A00044 277 | :10124D001400030057494E555342000000000000A2 278 | :10125D00000000008400040007002A00440065001F 279 | :10126D00760069006300650049006E00740065003A 280 | :10127D00720066006100630065004700550049007B 281 | :10128D0044007300000050007B0043004400420006 282 | :10129D00330042003500410044002D00320039007A 283 | :1012AD00330042002D0034003600360033002D008F 284 | :1012BD0041004100330036002D0031004100410056 285 | :1012CD004500340036003400360033003700370057 286 | :0812DD0036007D000000000056 287 | :101B1E0001B20002A7000007AB00E10000000008C0 288 | :051B2E00031500380062 289 | :10186500C2EAE4F5E275D18053D1FB53E2BF75EDD1 290 | :101875000075EC0053EAF375DC0275EF0075EE4078 291 | :1018850043EAC053EAEF75D21275E50175E40075B8 292 | :10189500E70275E60043EB4853EBEE75D41275D6B7 293 | :1018A5001AF5E343E22943D10175D8FF75E107D263 294 | :0218B500EA2225 295 | :0300430002060AA8 296 | :0D060A00C0E0C0F0C083C082C0D075D00831 297 | :1006170020D903020A18E5D9543F70030209EA14E6 298 | :10062700604D24E1700302098A14603324FE601DC3 299 | :1006370024F36049242E6003020A1620DE03020A0F 300 | :100647001678A0744026F6E6F5E4020A1678B27624 301 | :100657000075D700E5D654FC4402F5D6020A167594 302 | :10066700D300C201E5D254FC4402F5D2020A162097 303 | :10067700DE03020A16AFDB1218B7020A1685DB2162 304 | :10068700E5216408600302095C900006E078A9F69A 305 | :10069700A3E0600276FF752100900001E078AAF6DA 306 | :1006A700900000E0546024E070030208C024E0706A 307 | :1006B700030208E82440600302090F78AAE6B40B96 308 | :1006C7000040030208BE9006D4F828287302089F4A 309 | :1006D7000207E40208BE02081F0208BE0207AB02B7 310 | :1006E70006F50208BE0207B50207D10209129000FB 311 | :1006F70003E024FE602014602C24F47003020799A1 312 | :10070700240E60030207A87512FF75131175141DD7 313 | :100717007521120209127512FF75131175142F75C1 314 | :100727002162020912900002E014601F14602B146A 315 | :10073700603714603F14604B240570657512FF75B0 316 | :1007470013117514917521040209127512FF75139F 317 | :10075700117514957521080209127512FF75131189 318 | :1007670075149D7521240209127512FF75131175F1 319 | :1007770014C180097512FF7513117514DB75211AE1 320 | :100787000209127512FF7513117514F575211E02F2 321 | :1007970009127512FF7513127514137521280209B2 322 | :1007A7001202090F900002E078A9F6020912789D5B 323 | :1007B700E6900000F078A9E6C39401748094805015 324 | :1007C70003020912752101020912900002E0789DC7 325 | :1007D700F6700302091278B376010209129000003D 326 | :1007E700E0541F6402702E900004E024FE601D2474 327 | :1007F70081600E14701CE5D454BC4402F5D4020980 328 | :1008070012E5D254BC4402F5D202091253D4730242 329 | :10081700091202090F02090F900000E0541FFD7C26 330 | :10082700007020900003E0FE900002E0FBEB640103 331 | :100837004E700D9011369330E50302091202090F2D 332 | :1008470002090FED64024C704D900003E0FE90002A 333 | :1008570002E0FDED4E703D900005E0FE900004E0E3 334 | :10086700FDEDFFEE702CEF24FE6012248160191459 335 | :100877007020E5D454BF4403F5D4020912E5D454DB 336 | :100887007F440CF5D4020912E5D254BF4403F5D2D4 337 | :1008970080798074807280707512007513007514EA 338 | :1008A700A778A9E6FFC39402748094804005752158 339 | :1008B7000280588F218054804F900000E0541F64BD 340 | :1008C70001704878AAE624E0604124FE603D047088 341 | :1008D7000E7512007513007514AB752107802C80F7 342 | :1008E70027900000E0541F702278AAE624E07016D3 343 | :1008F700900004E0640770137512FF7513127514E6 344 | :100907003B7521AA800580007521FFAF21EF604864 345 | :10091700F4604578A9E6D395214002A62178A9E697 346 | :10092700FFC394407480948040047F4080008F21EF 347 | :100937007E0078007C007D01AB12AA13A914120B6C 348 | :100947001BC378A9E69521F6E5212514F514E435AE 349 | :1009570013F51380037521FFAF217E00EFF4700AB2 350 | :1009670078AA76FF75DCCF020A16D3EF9440EE64BF 351 | :1009770080948050058521DD800375DD0075DCC01E 352 | :10098700020A1678AAE624FB604624E56004241AC6 353 | :10099700704978A9E6FFC394407480948040047F2F 354 | :1009A7004080008F217E0078007C007D01AB12AA79 355 | :1009B70013A914120B1BC378A9E69521F6E5212587 356 | :1009C70014F514E43513F5138521DD63DC40803F0E 357 | :1009D700E5E3548078A946F5E3800375DD0075DC0F 358 | :1009E70002802C85DB2178AAE66420701F30DE1C8C 359 | :1009F700AFDBFE087C00FD7B017A007900120B1B40 360 | :100A07007B007A0079AB1217AE75DD0063DC80C21C 361 | :100A1700D930D81675DC0275D21075D41275E3007B 362 | :100A2700C2DAC2D978B27600C2D830DA09C2DAE5BA 363 | :090A3700DA30E205800375D8FFF6 364 | :0B0A4000D0D0D082D083D0F0D0E032C4 365 | :10146700E4F527121B8F7F057E00121B6312186598 366 | :10147700121A015392EF4393105392DF439320D2F2 367 | :10148700AFE4F5D3F5D578B3F678A0F678A6F67875 368 | :101497009FF678A1F678B2F6C202F510F511789D9D 369 | :1014A700E660FB120F3078B2E66401601C78A1E6B3 370 | :1014B700FF789F66601378B2760178A2E6F5D78F3A 371 | :1014C700E653D6FC18744026F6300209C291E4F5BB 372 | :1014D70010F511801F0511E51170020510AF107E80 373 | :1014E70000EF64107002D291EF64C04E7006F510E1 374 | :1014F700F511C291E5B930E3AAE4F5E275D1807F31 375 | :0E1507000AFE121B63AA16A917120CFE80958D 376 | :1017AE00E4F525F524F523F522900003120B5AF5E6 377 | :1017BE0022900002120B5AF523900001120B5AF5DB 378 | :1017CE0024120B41F525C2ACE47F08FEFDFCAB25CF 379 | :1017DE00AA24A923A822120BBBE42FFFEE3424FE69 380 | :1017EE00ED34F4FDE43CFCE47B10FAF9F8120C46FF 381 | :1017FE00AB25AA24A923A822120C46EFF404F58DDA 382 | :02180E00D2AC5A 383 | :0118100022B5 384 | :1019D20053927F439380D2975392DF439320D295C1 385 | :1019E2005392BF5393BFC2945392EF439310D2B416 386 | :0F19F2005396EF439710D2B25396FB43970422BC 387 | :101BB800C2945392DF5393DF53927F53937FC2B4FF 388 | :031BC800C2B22284 389 | :1018110075341EE4F535F536F5377D34FF1213A81E 390 | :10182100E4F5347D347F081213A87534127537231B 391 | :101831007D347F011213A875340C7535EDE4F5364E 392 | :101841007537E07D347F051213A8753407E4F5354B 393 | :101851007536FA7537057D347F0D1213A87D347FF7 394 | :041861000E0213A8B8 395 | :101B01007808D297139295C297D8F7D2972278087E 396 | :0A1B1100C297A29513D297D8F722CD 397 | :101B34008AA0EFC39409400904FFE3121B01098042 398 | :081B4400F1EFF8E3121B03228C 399 | :101ADD00D295439220C2B28AA0EFC3940940090463 400 | :101AED00FF121B0FF30980F1EFF8121B11F3D2B2A5 401 | :041AFD005392DF22FF 402 | :1013A800EDF9EF53E00F2330D002D2E543E081128C 403 | :1013B8001B01D295439220C2B27804121B11C403B8 404 | :1013C80053E007CFBF017820E136C2970000D297DB 405 | :1013D8007D00D2B25392DFE730D0010D121B010914 406 | :1013E800E730D0010D121B0109E730D0010D121BA7 407 | :1013F8000109E730D0010D121B01ED1392958038D9 408 | :101408007D00121B0F30D0010DF709121B0F30D0D1 409 | :10141800010DF709121B0F30D0010DF709121B0F30 410 | :1014280030D0010DF7C297E4A29533D2976D30E022 411 | :10143800027F08D2B25392DFC2970000D29722BF30 412 | :101448000202800BBF020280067F10782280027899 413 | :0F14580001C2970000D297D8F8D2B25392DF2288 414 | :101A0100E4F519F518F51AC200C20143960343978C 415 | :101A110003C2CDC2CC438780E589540F4420F589A8 416 | :0E1A210043C9A0758DF7D28E759850D2AC22B5 417 | :1018B7008F22900040C3E518951914C39F402875DF 418 | :1018C700A003A819E0F2A308DFFA8819200009A8E5 419 | :1018D70018E2F5990518D200C3E518951914C394B1 420 | :1018E70040400453D2F322E5D254F34408F5D22200 421 | :0118F70022CE 422 | :101BDD008F26784005A290008015A2E608A5DFFBB0 423 | :021BED002222B2 424 | :101BA400E51A600FFF121BDD851AD3E4F51A53D230 425 | :041BB400FCD201223C 426 | :0300230002174A77 427 | :10174A00C0E0C0F0C083C082C0D075D008309821F4 428 | :10175A007440251AF8A699051AD3E51A944074809C 429 | :10176A0094804003751A00C29820012D121BA48090 430 | :10177A0028309925E5186519600D75830385188247 431 | :10178A00E0F59905188002C200C3E518951914C33B 432 | :10179A009440400353D2F3C299D0D0D082D083D0A0 433 | :0417AA00F0D0E03269 434 | :030000000215B333 435 | :0C15B300787FE4F6D8FD7581B30215FACC 436 | :100A4B00E709F608DFFA8046E709F208DFFA803E8D 437 | :100A5B0088828C83E709F0A3DFFA8032E309F6087A 438 | :100A6B00DFFA8078E309F208DFFA807088828C83E2 439 | :100A7B00E309F0A3DFFA806489828A83E0A3F60896 440 | :100A8B00DFFA805889828A83E0A3F208DFFA804C70 441 | :100A9B0080D280FA80C680D4806980F28033801047 442 | :100AAB0080A680EA809A80A880DA80E280CA8033B0 443 | :100ABB0089828A83ECFAE493A3C8C582C8CCC58328 444 | :100ACB00CCF0A3C8C582C8CCC583CCDFE9DEE780F8 445 | :100ADB000D89828A83E493A3F608DFF9ECFAA9F077 446 | :100AEB00EDFB2289828A83ECFAE0A3C8C582C8CCCD 447 | :100AFB00C583CCF0A3C8C582C8CCC583CCDFEADEE6 448 | :100B0B00E880DB89828A83E493A3F208DFF980CC47 449 | :100B1B0088F0EF60010E4E60C388F0ED2402B40440 450 | :100B2B000050B9F582EB2402B4040050AF232345E7 451 | :060B3B008223900A9B7367 452 | :100B4100BB010689828A83E0225002E722BBFE02B2 453 | :090B5100E32289828A83E49322E5 454 | :100B5A00BB010CE58229F582E5833AF583E0225050 455 | :100B6A0006E92582F8E622BBFE06E92582F8E2229A 456 | :0D0B7A00E58229F582E5833AF583E49322B4 457 | :100B8700BB010689828A83F0225002F722BBFE014D 458 | :020B9700F32247 459 | :100B9900F8BB010DE58229F582E5833AF583E8F092 460 | :100BA900225006E92582C8F622BBFE05E92582C83E 461 | :020BB900F22226 462 | :100BBB00E88FF0A4CC8BF0A42CFCE98EF0A42CFCD9 463 | :100BCB008AF0EDA42CFCEA8EF0A4CDA8F08BF0A457 464 | :100BDB002DCC3825F0FDE98FF0A42CCD35F0FCEBB6 465 | :100BEB008EF0A4FEA9F0EB8FF0A4CFC5F02ECD397B 466 | :0F0BFB00FEE43CFCEAA42DCE35F0FDE43CFC22E8 467 | :100C0A0075F008758200EF2FFFEE33FECD33CDCCA1 468 | :100C1A0033CCC58233C5829BED9AEC99E582984024 469 | :100C2A000CF582EE9BFEED9AFDEC99FC0FD5F0D601 470 | :100C3A00E4CEFBE4CDFAE4CCF9A88222B800C1B92B 471 | :100C4A000059BA002DEC8BF084CFCECDFCE5F0CB69 472 | :100C5A00F97818EF2FFFEE33FEED33FDEC33FCEBA2 473 | :100C6A0033FB10D703994004EB99FB0FD8E5E4F95D 474 | :100C7A00FA227818EF2FFFEE33FEED33FDEC33FC4A 475 | :100C8A00C933C910D7059BE99A4007EC9BFCE99A3E 476 | :100C9A00F90FD8E0E4C9FAE4CCFB2275F010EF2F83 477 | :100CAA00FFEE33FEED33FDCC33CCC833C810D70783 478 | :100CBA009BEC9AE899400AED9BFDEC9AFCE899F8BE 479 | :0E0CCA000FD5F0DAE4CDFBE4CCFAE4C8F92251 480 | :100CD800D083D082F8E4937012740193700DA3A3AB 481 | :100CE80093F8740193F5828883E4737402936860BF 482 | :060CF800EFA3A3A380DFBF 483 | :060CFE008A838982E47381 484 | :1015BF00021467E493A3F8E493A34003F68001F2C7 485 | :1015CF0008DFF48029E493A3F85407240CC8C3332D 486 | :1015DF00C4540F4420C8834004F456800146F6DFFC 487 | :1015EF00E4800B0102040810204080901B1BE47E56 488 | :1015FF00019360BCA3FF543F30E509541FFEE493F1 489 | :10160F00A360010ECF54C025E060A840B8E493A3B7 490 | :10161F00FAE493A3F8E493A3C8C582C8CAC583CAE2 491 | :10162F00F0A3C8C582C8CAC583CADFE9DEE780BE9A 492 | :011B330000B1 493 | :00000001FF 494 | -------------------------------------------------------------------------------- /CH55x_DAPLink_5V_IO_24M.hex: -------------------------------------------------------------------------------- 1 | :061BF500322E302E3000FC 2 | :031B3600019C000F 3 | :06163F008B2E8A2F89307A 4 | :10164500E4781CF6EF24FE60171460161460162467 5 | :1016550014602B24F2605514603424FE705D800202 6 | :101665008000E48024781C7606E6FF7E00A830AC76 7 | :101675002FAD2E7BFF7A1B79F5120B1B803DAB2E10 8 | :10168500AA2FA9307401120B87781CF6802DAB2E7A 9 | :10169500AA2FA9307440120B87AB2EAA2FA9309020 10 | :1016A5000001E4120B99781C7602800FAB2EAA2F4D 11 | :0F16B500A9307404120B87781C7601781CE6FFAD 12 | :0116C4002203 13 | :101A3000900001120B5AFE120B41FDEE781CF6EDE0 14 | :101A400008F6781C08E616187001161486064E7003 15 | :0C1A5000F1AB31AA32A933120B877F01E1 16 | :011A5C002267 17 | :101A8900120B4114600304700B900001120B5A13DE 18 | :101A99009202800AAB31AA32A93374FF8007AB31B5 19 | :0B1AA900AA32A933E4120B877F012250 20 | :1019A300120B41FF781C700476018002A607781C95 21 | :1019B300E6147009789576011219D38004E4781C33 22 | :0F19C300F6781CE6AB31AA32A933120B877F01ED 23 | :0119D20022F2 24 | :100026008B2E8A2F8930E47895F6121BBEAB2EAA4A 25 | :0A0036002FA930E4120B877F01228E 26 | :100003008B2E8A2F8930121812AB2EAA2FA930906B 27 | :0D0013000001E4120B99E4120B877F02221A 28 | :10151500120B41781CF6900001120B5A781DF690BB 29 | :101525000003120B5AFE900002120B5AFDEE781EB4 30 | :10153500F6ED08F6900004120B5A7008900005129B 31 | :101545000B5A6009781EE64480F608E6F6781DE633 32 | :10155500FF5401600C18E654016004D2978002C262 33 | :1015650097EF5402600D781CE654026004D2958012 34 | :1015750002C295781DE65480600F18E65402600497 35 | :10158500C2948005121812D294A295E43325E0FF87 36 | :10159500A297E4334F781CF6209404E64480F6784D 37 | :0D15A5001CE6AB31AA32A933120B877F017F 38 | :0115B2002216 39 | :101B6700120B417892F6E4F67881F6AB31AA32A9E6 40 | :071B770033120B877F0122EE 41 | :06196E008B2E8A2F893048 42 | :101974000530E5307002052F14F9120B41781CF67E 43 | :10198400E6700276FF781CE6FFAB2EAA2FA9301270 44 | :0E1994001B4FAB31AA32A933E4120B877F013F 45 | :0119A2002222 46 | :101AB400120B41781CF6E6FF540304789AF6EF54AF 47 | :101AC4000460047F0180027F00788CA607AB31AAF2 48 | :091AD40032A933E4120B877F01F3 49 | :011ADD0022E6 50 | :0612E5008B2E8A2F8930D8 51 | :1012EB00AB310533E533AA327002053214F9E4123F 52 | :1012FB000B87781E7601AB2E0530E530AA2F7002D6 53 | :10130B00052F14F9120B4118F6781DE6167003021F 54 | :10131B0013A3AB2E0530E530AA2F7002052F14F95D 55 | :10132B00120B4118F6E6FF543F781FF67002764019 56 | :10133B00EF54806034781FE6FFAB31AA32A9331229 57 | :10134B001ADE781FE62407FFE433FEEF7803CEC3E3 58 | :10135B0013CE13D8F9781FF6E6FF2533F533E435B2 59 | :10136B0032F53218EF26F680A0781FE6FFAB2EAAD7 60 | :10137B002FA930121B4F781FE62407FFE433FEEF33 61 | :10138B007803CEC313CE13D8F9781FF62530F5307A 62 | :0C139B00E4352FF52F021314781EE6FF36 63 | :0113A7002223 64 | :1018F900120B417882F6900002120B5AFE900001F9 65 | :10190900120B5AFDEE7898F6ED08F6900004120BCA 66 | :101919005AFE900003120B5AFDEE7893F6ED08F685 67 | :0D192900AB31AA32A933E4120B877F0122F3 68 | :060046008B348A35893677 69 | :10004C008B3A8A3B893CE47880F6789BF685373D81 70 | :10005C0085383E85393F74022539F539E43538F554 71 | :10006C0038E408F6781DF608F6042536F536E4353E 72 | :10007C0035F535AB340536E536AA35700205351441 73 | :10008C00F9120B41788DF6788DE670030204DAAB29 74 | :10009C00340536E536AA357002053514F9120B41D4 75 | :1000AC007883F6E6FF5402700302039C781DE67019 76 | :1000BC00030201807898E6FC08E6FD7896A6040811 77 | :1000CC00A605EF5411640170267883E6FF7D841237 78 | :1000DC0013A8789BEFF66402703B789608E6161826 79 | :1000EC0086067001164E602D789CE660DC80267DBD 80 | :1000FC00847F0E1213A8789BEFF664027013789627 81 | :10010C0008E6161886067001164E6005789CE660A7 82 | :10011C00DEE4781DF6789BE6640160030204DA786D 83 | :10012C0084E6FFAB370539E539AA38700205381477 84 | :10013C00F9EF120B8708E6FFAB370539E539AA381A 85 | :10014C007002053814F9EF120B8708E6FFAB370580 86 | :10015C0039E539AA387002053814F9EF120B870803 87 | :10016C00E6FFAB370539E539AA387002053814F9C2 88 | :10017C00EF120B877883E6FF541070030202BEABBC 89 | :10018C0034AA35A936120B417888F6900001120B6F 90 | :10019C005A7889F6900002120B5A788AF69000036E 91 | :1001AC00120B5A788BF674042536F536E43535F592 92 | :1001BC00357893E6FC08E6FD18A60408A605EF546E 93 | :1001CC0001603D7898E6FE08E6FF7896A60608A63C 94 | :1001DC00077883E6FFE4FD1213A8789BEFF67E0008 95 | :1001EC0064027013789608E6161886047001164C93 96 | :1001FC006005789CE660DAEF64014E60030204DA75 97 | :10020C007898E6FE08E6FF7896A60608A607788397 98 | :10021C00E6FF7D841213A8789BEFF67E00640270D3 99 | :10022C0013789608E6161886047001164C6005784B 100 | :10023C009CE660DAEF64014E703C7984E7788E5668 101 | :10024C00788866701E09E7788F567889667014096D 102 | :10025C00E7789056788A66700A09E7789156788B19 103 | :10026C00666013789308E6161886067001164E60C1 104 | :10027C0005789CE6608A7984E7788E567888667073 105 | :10028C001E09E7788F56788966701409E7789056BE 106 | :10029C00788A66700A09E7789156788B66600678DA 107 | :1002AC009BE64410F6789BE664017003020395020A 108 | :1002BC0004DA7898E6FE08E6FF7896A60608A60704 109 | :1002CC007883E65401603E781DE66003020395785E 110 | :1002DC0083E6FFE4FD1213A8789BEFF67E00640220 111 | :1002EC007013789608E6161886047001164C600593 112 | :1002FC00789CE660DAEF64014E60030204DA781D44 113 | :10030C0076010203957883E6FF7D841213A8789B0F 114 | :10031C00EFF67E0064027013789608E616188604D1 115 | :10032C007001164C6005789CE660DAEF64014E6053 116 | :10033C00030204DA7884E6FFAB370539E539AA38CD 117 | :10034C007002053814F9EF120B8708E6FFAB37057E 118 | :10035C0039E539AA387002053814F9EF120B870801 119 | :10036C00E6FFAB370539E539AA387002053814F9C0 120 | :10037C00EF120B8708E6FFAB370539E539AA387061 121 | :10038C0002053814F9EF120B87E4781EF60204CC40 122 | :10039C00781DE670030204387898E6FE08E6FF78CC 123 | :1003AC0096A60608A6077D847F0E1213A8789BEFED 124 | :1003BC00F67E0064027013789608E61618860470B0 125 | :1003CC0001164C6005789CE660DCEF64014E60031E 126 | :1003DC000204DA7884E6FFAB370539E539AA3870C0 127 | :1003EC0002053814F9EF120B8708E6FFAB37053915 128 | :1003FC00E539AA387002053814F9EF120B8708E6B4 129 | :10040C00FFAB370539E539AA387002053814F9EF16 130 | :10041C00120B8708E6FFAB370539E539AA387002AD 131 | :10042C00053814F9EF120B87E4781DF6AB34AA35B6 132 | :10043C00A936120B417884F6900001120B5A78857C 133 | :10044C00F6900002120B5A7886F6900003120B5AA3 134 | :10045C007887F674042536F536E43535F53578832A 135 | :10046C00E65420601D08E6788EF67885E6788FF6DF 136 | :10047C007886E67890F67887E67891F6789B760120 137 | :10048C00803E7898E6FE08E6FF7896A60608A60752 138 | :10049C007883E6FF7D841213A8789BEFF67E0064C8 139 | :1004AC00027013789608E6161886047001164C60D4 140 | :1004BC0005789CE660DAEF64014E7012781E7601C6 141 | :1004CC00788006789CE67006788D16020093788DFD 142 | :1004DC00E66031AB340536E536AA357002053514C5 143 | :1004EC00F9120B417883F6E6FF54026007EF5410C3 144 | :1004FC00600D800074042536F536E43535F5357815 145 | :10050C008D1680CA789BE6640160030205E9781DAC 146 | :10051C00E670030205B47898E6FE08E6FF7896A626 147 | :10052C000608A6077D847F0E1213A8789BEFF67E33 148 | :10053C000064027013789608E6161886047001168B 149 | :10054C004C6005789CE660DCEF64014E60030205AC 150 | :10055C00E97884E6FFAB370539E539AA387002052E 151 | :10056C003814F9EF120B8708E6FFAB370539E5397C 152 | :10057C00AA387002053814F9EF120B8708E6FFABA6 153 | :10058C00370539E539AA387002053814F9EF120B22 154 | :10059C008708E6FFAB370539E539AA38700205380C 155 | :1005AC0014F9EF120B878035781EE660307898E6E8 156 | :1005BC00FE08E6FF7896A60608A607E4FD7F0E1255 157 | :1005CC0013A8789BEFF664027013789608E6161859 158 | :1005DC0086067001164E6005789CE660DE7880E633 159 | :1005EC00AB3DAA3EA93F120B87789BE6AB3DAA3EDA 160 | :0D05FC00A93F900001120B99C3E53999FF4A 161 | :0106090022CE 162 | :101B9500E4781CF6853137853238853339120046AD 163 | :041BA500781CEFF6C3 164 | :011BA9002219 165 | :060D04008B348A358936AC 166 | :100D0A00E47880F6789BF685373A85383B85393C16 167 | :100D1A0074032539F539E43538F538E408F604253D 168 | :100D2A0036F536E43535F535AB34FAA93690000197 169 | :100D3A00120B5A120B41FF788DF674022536F536DE 170 | :100D4A00E43535F535EF7003020F08AB340536E5A7 171 | :100D5A0036AA357002053514F9120B417883F6E686 172 | :100D6A00FF54027003020E61EF5401603D7898E669 173 | :100D7A00FE08E6FF7896A60608A6077883E6FFE44B 174 | :100D8A00FD1213A8789BEFF67E0064027013789622 175 | :100D9A0008E6161886047001164C6005789CE66011 176 | :100DAA00DAEF64014E6003020F08788DE6167003CD 177 | :100DBA00020F08E670097883E654016002760E781D 178 | :100DCA0098E6FE08E6FF7896A60608A6077883E660 179 | :100DDA00FF7D841213A8789BEFF67E0064027013DD 180 | :100DEA00789608E6161886047001164C6005789CF9 181 | :100DFA00E660DAEF64014E6003020F087884E6FFCA 182 | :100E0A00AB370539E539AA387002053814F9EF12FB 183 | :100E1A000B8708E6FFAB370539E539AA38700205B2 184 | :100E2A003814F9EF120B8708E6FFAB370539E539B5 185 | :100E3A00AA387002053814F9EF120B8708E6FFABDF 186 | :100E4A00370539E539AA387002053814F9EF120B5B 187 | :100E5A0087788006020DB4788DE6166071AB34AAE5 188 | :100E6A0035A936120B417884F6900001120B5A7894 189 | :100E7A0085F6900002120B5A7886F6900003120B40 190 | :100E8A005A7887F674042536F536E43535F535781B 191 | :100E9A0098E6FE08E6FF7896A60608A6077883E68F 192 | :100EAA00FF7D841213A8789BEFF67E00640270130C 193 | :100EBA00789608E6161886047001164C6005789C28 194 | :100ECA00E660DAEF64014E7035788006808978989A 195 | :100EDA00E6FE08E6FF7896A60608A607E4FD7F0E5A 196 | :100EEA001213A8789BEFF664027013789608E61638 197 | :100EFA001886067001164E6005789CE660DE7880DA 198 | :100F0A00E6AB3AAA3BA93C120B87AB3AAA3BA93CEF 199 | :100F1A00900001E4120B99789BE6900002120B995B 200 | :050F2A00C3E53999FF49 201 | :010F2F00229F 202 | :0616C5008B2E8A2F8930F4 203 | :1016CB007895E6147018853137853238853339AB08 204 | :1016DB002EAA2FA930120D04781CA6078021AB313E 205 | :1016EB00AA32A933E4120B87AB31AA32A93390008B 206 | :1016FB0001120B99900002E4120B99781C7603AB44 207 | :10170B002EAA2FA930900003120B5A5402600678B0 208 | :10171B001CE6F68025900002120B5A900001120B6A 209 | :10172B005A75F004A42404FFE435F0FEEF7810C3DF 210 | :0E173B0033CE33CED8F9781C46F6781CE6FF84 211 | :01174900227D 212 | :10193600900001120B5A7884F6900002120B5A7826 213 | :1019460085F6900003120B5A7886F6900004120B67 214 | :101956005A7887F67D84E4FF1213A8AB37AA38A914 215 | :0819660039E4120B877F012216 216 | :101A5D007895E61470128531378532388533391211 217 | :101A6D001936781CA607800FAB31AA32A93374FF43 218 | :0B1A7D00120B87781C7601781CE6FF36 219 | :011A8800223B 220 | :0C0F300078A6E6FF78A066700302111C92 221 | :100F3C007E0074002FF9EE3401752801F529892AF9 222 | :100F4C00789FE62400F9EE3402752B01F52C892DDF 223 | :100F5C0078A6744026F6AB28AA29A92A120B41FFC1 224 | :100F6C00AB2B052DE52DAA2C7002052C14F9EF12D4 225 | :100F7C000B87AB28052AE52AAA297002052914F942 226 | :100F8C00120B41120CD80FED00101601102B021091 227 | :100F9C00400310D1040FC3050FD80610E508104C00 228 | :100FAC000910610A106D1010811110951210A913FF 229 | :100FBC0010BD1D000010FD852B31852C32852D3385 230 | :100FCC00AB28AA29A92A121B950210F7852B31856B 231 | :100FDC002C32852D33AB28AA29A92A1216C502104A 232 | :100FEC00F7AB28AA29A92A120B41FFAB2BE52D241C 233 | :100FFC0001F9E4352CFA12163F781BEFF6AB2BAA4D 234 | :10100C002CA92D120B870602110F852B31852C3242 235 | :10101C00852D33AB28AA29A92A121A890210F78523 236 | :10102C002B31852C32852D33AB28AA29A92A1219EC 237 | :10103C00A30210F7AB2BAA2CA92D1200260210F735 238 | :10104C00852B31852C32852D33AB28AA29A92A1260 239 | :10105C001A300210F7AB2BAA2CA92D120003021088 240 | :10106C00F7852B31852C32852D33AB28AA29A92A5B 241 | :10107C001215158076852B31852C32852D33AB28B6 242 | :10108C00AA29A92A121B678062852B31852C3285EF 243 | :10109C002D33AB28AA29A92A12196E804E852B3123 244 | :1010AC00852C32852D33AB28AA29A92A121AB48093 245 | :1010BC003A852B31852C32852D33AB28AA29A92AC8 246 | :1010CC001212E58026852B31852C32852D33AB28E9 247 | :1010DC00AA29A92A1218F98012852B31852C328560 248 | :1010EC002D33AB28AA29A92A121A5D781BA60780D2 249 | :1010FC0012AB2BAA2CA92D90FFFF74FF120B997821 250 | :10110C001B7601781BE60479A2F7789F744026F6CB 251 | :01111C0022B0 252 | :101BD10075A15575A1AAE5B954F84406F5B9E4F51E 253 | :021BE100A1223F 254 | :101B0200EF4E601505A105A105A105A105A105A13D 255 | :0A1B120005A1EF1F70EA1E80E72214 256 | :101B7E00AD07AC06ED4C600E7FE87E03121B02ED46 257 | :071B8E001D70F11C80EE2226 258 | :10111D0012011002EF020140280D0402000101022C 259 | :10112D0003010902620003010080FA0904000002B4 260 | :10113D00FF0000040705020240000007058302407E 261 | :10114D000000080B02020202010509040200020A56 262 | :10115D000000000705010240000007058102400064 263 | :10116D00000904030001020201000524001001051D 264 | :10117D00240100010424020205240603020705844C 265 | :10118D00030800FF040309040803410052004D0049 266 | :10119D0024034400410050004C0069006E006B00B8 267 | :1011AD00200043004D005300490053002D00440022 268 | :1011BD00410050001A033500560030002D00490043 269 | :1011CD004F002D00310032003300340035001A037A 270 | :1011DD0043004D005300490053002D0044004100D1 271 | :1011ED0050002000760032001E03440041005000E4 272 | :1011FD004C0069006E006B002D004300440043005D 273 | :10120D00450078007400050F280002071002000049 274 | :10121D0000001C100500DF60DDD88945C74C9CD24D 275 | :10122D00659D9E648A9F00000306AA0020000A00A7 276 | :10123D00000000000306AA00080002000000A00044 277 | :10124D001400030057494E555342000000000000A2 278 | :10125D00000000008400040007002A00440065001F 279 | :10126D00760069006300650049006E00740065003A 280 | :10127D00720066006100630065004700550049007B 281 | :10128D0044007300000050007B0043004400420006 282 | :10129D00330042003500410044002D00320039007A 283 | :1012AD00330042002D0034003600360033002D008F 284 | :1012BD0041004100330036002D0031004100410056 285 | :1012CD004500340036003400360033003700370057 286 | :0812DD0036007D000000000056 287 | :101B390001B20002A7000007AB00E10000000008A5 288 | :051B4900031500380047 289 | :10186600C2EAE4F5E275D18053D1FB53E2BF75EDD0 290 | :101876000075EC0053EAF375DC0275EF0075EE4077 291 | :1018860043EAC053EAEF75D21275E50175E40075B7 292 | :10189600E70275E60043EB4853EBEE75D41275D6B6 293 | :1018A6001AF5E343E22943D10175D8FF75E107D262 294 | :0218B600EA2224 295 | :0300430002060AA8 296 | :0D060A00C0E0C0F0C083C082C0D075D00831 297 | :1006170020D903020A18E5D9543F70030209EA14E6 298 | :10062700604D24E1700302098A14603324FE601DC3 299 | :1006370024F36049242E6003020A1620DE03020A0F 300 | :100647001678A0744026F6E6F5E4020A1678B27624 301 | :100657000075D700E5D654FC4402F5D6020A167594 302 | :10066700D300C201E5D254FC4402F5D2020A162097 303 | :10067700DE03020A16AFDB1218B8020A1685DB2161 304 | :10068700E5216408600302095C900006E078A9F69A 305 | :10069700A3E0600276FF752100900001E078AAF6DA 306 | :1006A700900000E0546024E070030208C024E0706A 307 | :1006B700030208E82440600302090F78AAE6B40B96 308 | :1006C7000040030208BE9006D4F828287302089F4A 309 | :1006D7000207E40208BE02081F0208BE0207AB02B7 310 | :1006E70006F50208BE0207B50207D10209129000FB 311 | :1006F70003E024FE602014602C24F47003020799A1 312 | :10070700240E60030207A87512FF75131175141DD7 313 | :100717007521120209127512FF75131175142F75C1 314 | :100727002162020912900002E014601F14602B146A 315 | :10073700603714603F14604B240570657512FF75B0 316 | :1007470013117514917521040209127512FF75139F 317 | :10075700117514957521080209127512FF75131189 318 | :1007670075149D7521240209127512FF75131175F1 319 | :1007770014C180097512FF7513117514DB75211AE1 320 | :100787000209127512FF7513117514F575211E02F2 321 | :1007970009127512FF7513127514137521280209B2 322 | :1007A7001202090F900002E078A9F6020912789D5B 323 | :1007B700E6900000F078A9E6C39401748094805015 324 | :1007C70003020912752101020912900002E0789DC7 325 | :1007D700F6700302091278B376010209129000003D 326 | :1007E700E0541F6402702E900004E024FE601D2474 327 | :1007F70081600E14701CE5D454BC4402F5D4020980 328 | :1008070012E5D254BC4402F5D202091253D4730242 329 | :10081700091202090F02090F900000E0541FFD7C26 330 | :10082700007020900003E0FE900002E0FBEB640103 331 | :100837004E700D9011369330E50302091202090F2D 332 | :1008470002090FED64024C704D900003E0FE90002A 333 | :1008570002E0FDED4E703D900005E0FE900004E0E3 334 | :10086700FDEDFFEE702CEF24FE6012248160191459 335 | :100877007020E5D454BF4403F5D4020912E5D454DB 336 | :100887007F440CF5D4020912E5D254BF4403F5D2D4 337 | :1008970080798074807280707512007513007514EA 338 | :1008A700A778A9E6FFC39402748094804005752158 339 | :1008B7000280588F218054804F900000E0541F64BD 340 | :1008C70001704878AAE624E0604124FE603D047088 341 | :1008D7000E7512007513007514AB752107802C80F7 342 | :1008E70027900000E0541F702278AAE624E07016D3 343 | :1008F700900004E0640770137512FF7513127514E6 344 | :100907003B7521AA800580007521FFAF21EF604864 345 | :10091700F4604578A9E6D395214002A62178A9E697 346 | :10092700FFC394407480948040047F4080008F21EF 347 | :100937007E0078007C007D01AB12AA13A914120B6C 348 | :100947001BC378A9E69521F6E5212514F514E435AE 349 | :1009570013F51380037521FFAF217E00EFF4700AB2 350 | :1009670078AA76FF75DCCF020A16D3EF9440EE64BF 351 | :1009770080948050058521DD800375DD0075DCC01E 352 | :10098700020A1678AAE624FB604624E56004241AC6 353 | :10099700704978A9E6FFC394407480948040047F2F 354 | :1009A7004080008F217E0078007C007D01AB12AA79 355 | :1009B70013A914120B1BC378A9E69521F6E5212587 356 | :1009C70014F514E43513F5138521DD63DC40803F0E 357 | :1009D700E5E3548078A946F5E3800375DD0075DC0F 358 | :1009E70002802C85DB2178AAE66420701F30DE1C8C 359 | :1009F700AFDBFE087C00FD7B017A007900120B1B40 360 | :100A07007B007A0079AB12174A75DD0063DC80C280 361 | :100A1700D930D81675DC0275D21075D41275E3007B 362 | :100A2700C2DAC2D978B27600C2D830DA09C2DAE5BA 363 | :090A3700DA30E205800375D8FFF6 364 | :0B0A4000D0D0D082D083D0F0D0E032C4 365 | :10146700E4F527121BD17F057E00121B7E1218663A 366 | :10147700121A025392EF4393105392DF439320D2F1 367 | :10148700AFE4F5D3F5D578B3F678A0F678A6F67875 368 | :101497009FF678A1F678B2F6C202F510F511789D9D 369 | :1014A700E660FB120F3078B2E66401601C78A1E6B3 370 | :1014B700FF789F66601378B2760178A2E6F5D78F3A 371 | :1014C700E653D6FC18744026F6300209C291E4F5BB 372 | :1014D70010F511801F0511E51170020510AF107E80 373 | :1014E70000EF64107002D291EF64F04E7006F510B1 374 | :1014F700F511C291E5B930E3AAE4F5E275D1807F31 375 | :0E1507000AFE121B7EAA16A917120CFE809572 376 | :10174A00E4F525F524F523F522900003120B5AF54A 377 | :10175A0022900002120B5AF523900001120B5AF53F 378 | :10176A0024120B41F525C2ACE47F08FEFDFCAB2533 379 | :10177A00AA24A923A822120BBBE42FFFEE3436FEBB 380 | :10178A00ED346EFDEC3401FCE47B10FAF9F8120C2E 381 | :10179A0046AB25AA24A923A822120C46EFF404F585 382 | :0317AA008DD2AC31 383 | :0117AD002219 384 | :1019D30053927F439380D2975392DF439320D295C0 385 | :1019E3005392BF5393BFC2945392EF439310D2B415 386 | :0F19F3005396EF439710D2B25396FB43970422BB 387 | :101BBE00C2945392DF5393DF53927F53937FC2B4F9 388 | :031BCE00C2B2227E 389 | :1018120075341EE4F535F536F5377D34FF1213A81D 390 | :10182200E4F5347D347F081213A87534127537231A 391 | :101832007D347F011213A875340C7535EDE4F5364D 392 | :101842007537E07D347F051213A8753407E4F5354A 393 | :101852007536FA7537057D347F0D1213A87D347FF6 394 | :041862000E0213A8B7 395 | :101B1C007808D297139295C297D8F7D29722780863 396 | :0A1B2C00C297A29513D297D8F722B2 397 | :101B4F008AA0EFC39409400904FFE3121B1C09800C 398 | :081B5F00F1EFF8E3121B1E2256 399 | :101ADE00D295439220C2B28AA0EFC3940940090462 400 | :101AEE00FF121B2AF30980F1EFF8121B2CF3D2B26E 401 | :041AFE005392DF22FE 402 | :1013A800EDF9EF53E00F2330D002D2E543E081128C 403 | :1013B8001B1CD295439220C2B27804121B2CC40382 404 | :1013C80053E007CFBF017820E136C2970000D297DB 405 | :1013D8007D00D2B25392DFE730D0010D121B1C09F9 406 | :1013E800E730D0010D121B1C09E730D0010D121B8C 407 | :1013F8001C09E730D0010D121B1CED1392958038A3 408 | :101408007D00121B2A30D0010DF709121B2A30D09B 409 | :10141800010DF709121B2A30D0010DF709121B2AFA 410 | :1014280030D0010DF7C297E4A29533D2976D30E022 411 | :10143800027F08D2B25392DFC2970000D29722BF30 412 | :101448000202800BBF020280067F10782280027899 413 | :0F14580001C2970000D297D8F8D2B25392DF2288 414 | :101A0200E4F519F518F51AC200C20143960343978B 415 | :101A120003C2CDC2CC438780E589540F4420F589A7 416 | :0E1A220043C9A0758DF3D28E759850D2AC22B8 417 | :1018B8008F22900040C3E518951914C39F402875DE 418 | :1018C800A003A819E0F2A308DFFA8819200009A8E4 419 | :1018D80018E2F5990518D200C3E518951914C394B0 420 | :1018E80040400453D2F322E5D254F34408F5D222FF 421 | :0118F80022CD 422 | :101BE3008F26784005A290008015A2E608A5DFFBAA 423 | :021BF3002222AC 424 | :101BAA00E51A600FFF121BE3851AD3E4F51A53D224 425 | :041BBA00FCD2012236 426 | :030023000217AE13 427 | :1017AE00C0E0C0F0C083C082C0D075D00830982190 428 | :1017BE007440251AF8A699051AD3E51A9440748038 429 | :1017CE0094804003751A00C29820012D121BAA8026 430 | :1017DE0028309925E5186519600D758303851882E3 431 | :1017EE00E0F59905188002C200C3E518951914C3D7 432 | :1017FE009440400353D2F3C299D0D0D082D083D03C 433 | :04180E00F0D0E03204 434 | :030000000215B333 435 | :0C15B300787FE4F6D8FD7581B30215FACC 436 | :100A4B00E709F608DFFA8046E709F208DFFA803E8D 437 | :100A5B0088828C83E709F0A3DFFA8032E309F6087A 438 | :100A6B00DFFA8078E309F208DFFA807088828C83E2 439 | :100A7B00E309F0A3DFFA806489828A83E0A3F60896 440 | :100A8B00DFFA805889828A83E0A3F208DFFA804C70 441 | :100A9B0080D280FA80C680D4806980F28033801047 442 | :100AAB0080A680EA809A80A880DA80E280CA8033B0 443 | :100ABB0089828A83ECFAE493A3C8C582C8CCC58328 444 | :100ACB00CCF0A3C8C582C8CCC583CCDFE9DEE780F8 445 | :100ADB000D89828A83E493A3F608DFF9ECFAA9F077 446 | :100AEB00EDFB2289828A83ECFAE0A3C8C582C8CCCD 447 | :100AFB00C583CCF0A3C8C582C8CCC583CCDFEADEE6 448 | :100B0B00E880DB89828A83E493A3F208DFF980CC47 449 | :100B1B0088F0EF60010E4E60C388F0ED2402B40440 450 | :100B2B000050B9F582EB2402B4040050AF232345E7 451 | :060B3B008223900A9B7367 452 | :100B4100BB010689828A83E0225002E722BBFE02B2 453 | :090B5100E32289828A83E49322E5 454 | :100B5A00BB010CE58229F582E5833AF583E0225050 455 | :100B6A0006E92582F8E622BBFE06E92582F8E2229A 456 | :0D0B7A00E58229F582E5833AF583E49322B4 457 | :100B8700BB010689828A83F0225002F722BBFE014D 458 | :020B9700F32247 459 | :100B9900F8BB010DE58229F582E5833AF583E8F092 460 | :100BA900225006E92582C8F622BBFE05E92582C83E 461 | :020BB900F22226 462 | :100BBB00E88FF0A4CC8BF0A42CFCE98EF0A42CFCD9 463 | :100BCB008AF0EDA42CFCEA8EF0A4CDA8F08BF0A457 464 | :100BDB002DCC3825F0FDE98FF0A42CCD35F0FCEBB6 465 | :100BEB008EF0A4FEA9F0EB8FF0A4CFC5F02ECD397B 466 | :0F0BFB00FEE43CFCEAA42DCE35F0FDE43CFC22E8 467 | :100C0A0075F008758200EF2FFFEE33FECD33CDCCA1 468 | :100C1A0033CCC58233C5829BED9AEC99E582984024 469 | :100C2A000CF582EE9BFEED9AFDEC99FC0FD5F0D601 470 | :100C3A00E4CEFBE4CDFAE4CCF9A88222B800C1B92B 471 | :100C4A000059BA002DEC8BF084CFCECDFCE5F0CB69 472 | :100C5A00F97818EF2FFFEE33FEED33FDEC33FCEBA2 473 | :100C6A0033FB10D703994004EB99FB0FD8E5E4F95D 474 | :100C7A00FA227818EF2FFFEE33FEED33FDEC33FC4A 475 | :100C8A00C933C910D7059BE99A4007EC9BFCE99A3E 476 | :100C9A00F90FD8E0E4C9FAE4CCFB2275F010EF2F83 477 | :100CAA00FFEE33FEED33FDCC33CCC833C810D70783 478 | :100CBA009BEC9AE899400AED9BFDEC9AFCE899F8BE 479 | :0E0CCA000FD5F0DAE4CDFBE4CCFAE4C8F92251 480 | :100CD800D083D082F8E4937012740193700DA3A3AB 481 | :100CE80093F8740193F5828883E4737402936860BF 482 | :060CF800EFA3A3A380DFBF 483 | :060CFE008A838982E47381 484 | :1015BF00021467E493A3F8E493A34003F68001F2C7 485 | :1015CF0008DFF48029E493A3F85407240CC8C3332D 486 | :1015DF00C4540F4420C8834004F456800146F6DFFC 487 | :1015EF00E4800B0102040810204080901B36E47E3B 488 | :1015FF00019360BCA3FF543F30E509541FFEE493F1 489 | :10160F00A360010ECF54C025E060A840B8E493A3B7 490 | :10161F00FAE493A3F8E493A3C8C582C8CAC583CAE2 491 | :10162F00F0A3C8C582C8CAC583CADFE9DEE780BE9A 492 | :011B4E000096 493 | :00000001FF 494 | -------------------------------------------------------------------------------- /CH55x_DAPLink_5V_SPI_24M.hex: -------------------------------------------------------------------------------- 1 | :061CFF00322E302E3000F1 2 | :031C6F00019A00D7 3 | :0616C7008B2E8A2F8930F2 4 | :1016CD00E4781CF6EF24FE601714601614601624DF 5 | :1016DD0014602B24F2605514603424FE705D80027A 6 | :1016ED008000E48024781C7606E6FF7E00A830ACEE 7 | :1016FD002FAD2E7BFF7A1C79FF120B1B803DAB2E7D 8 | :10170D00AA2FA9307401120B87781CF6802DAB2EF1 9 | :10171D00AA2FA9307440120B87AB2EAA2FA9309097 10 | :10172D000001E4120B99781C7602800FAB2EAA2FC4 11 | :0F173D00A9307404120B87781C7601781CE6FF24 12 | :01174C00227A 13 | :101B6B00900001120B5AFE120B41FDEE781CF6EDA4 14 | :101B7B0008F6781C08E616187001161486064E70C7 15 | :0C1B8B00F1AB31AA32A933120B877F01A5 16 | :011B9700222B 17 | :101BC400120B4114600304700B900001120B5A13A2 18 | :101BD4009202800AAB31AA32A93374FF8007AB3179 19 | :0B1BE400AA32A933E4120B877F012214 20 | :101ADE00120B41FF781C700476018002A607781C59 21 | :101AEE00E614700978937601121AA98004E4781C22 22 | :0F1AFE00F6781CE6AB31AA32A933120B877F01B1 23 | :011B0D0022B5 24 | :101C3B008B2E8A2F8930E47893F6121CC8AB2EAA10 25 | :0A1C4B002FA930E4120B877F01225D 26 | :100003008B2E8A2F8930121918AB2EAA2FA9309064 27 | :0D0013000001E4120B99E4120B877F02221A 28 | :10159D00120B41781CF6900001120B5A781DF69033 29 | :1015AD000003120B5AFE900002120B5AFDEE781E2C 30 | :1015BD00F6ED08F6900004120B5A70089000051213 31 | :1015CD000B5A6009781EE64480F608E6F6781DE6AB 32 | :1015DD00FF5401600C18E654016004D2978002C2DA 33 | :1015ED0097EF5402600D781CE654026004D295808A 34 | :1015FD0002C295781DE65480600F18E6540260040F 35 | :10160D00C2948005121918D294A295E43325E0FFF7 36 | :10161D00A297E4334F781CF6209404E64480F678C4 37 | :0D162D001CE6AB31AA32A933120B877F01F6 38 | :01163A00228D 39 | :0617D2008B2E8A2F8930E6 40 | :1017D800AB31AA32A933E4120B87AB2EAA2FA9305A 41 | :1017E800900003120B5A60028013900002120B5AE9 42 | :1017F800FFFD7C00D3949774809480400675FB02AB 43 | :101808007F0122D3ED9479EC64809480400675FBC7 44 | :10181800037F0122EFFD7C00D3945A7480948040AA 45 | :101828000675FB047F0122D3ED9402EC648094805A 46 | :10183800500675FBF07F0122EFFD7C007E017F6E74 47 | :07184800120BBB8FFB7F01B7 48 | :01184F002276 49 | :061A74008B2E8A2F893041 50 | :101A7A000530E5307002052F14F9120B41781CF677 51 | :101A8A00E6700276FF781CE6FFAB2EAA2FA9301269 52 | :0E1A9A001C19AB31AA32A933E4120B877F016D 53 | :011AA800221B 54 | :101BEF00120B41781CF6E6FF5403047898F6EF5475 55 | :101BFF000460047F0180027F00788BA607AB31AAB7 56 | :091C0F0032A933E4120B877F01B6 57 | :011C180022A9 58 | :06142C008B2E8A2F89308F 59 | :10143200AB310533E533AA327002053214F9E412F6 60 | :101442000B87781E7601AB2E0530E530AA2F70028D 61 | :10145200052F14F9120B4118F6781DE616700302D7 62 | :1014620014EAAB2E0530E530AA2F7002052F14F9CD 63 | :10147200120B4118F6E6FF543F781FF670027640D1 64 | :10148200EF54806034781FE6FFAB31AA32A93312E1 65 | :101492001B0E781FE62407FFE433FEEF7803CEC36A 66 | :1014A20013CE13D8F9781FF6E6FF2533F533E4356A 67 | :1014B20032F53218EF26F680A0781FE6FFAB2EAA8F 68 | :1014C2002FA930121C19781FE62407FFE433FEEF20 69 | :1014D2007803CEC313CE13D8F9781FF62530F53032 70 | :0C14E200E4352FF52F02145B781EE6FFA6 71 | :0114EE0022DB 72 | :1019FF00120B417881F6900002120B5AFE900001F3 73 | :101A0F00120B5AFDEE7896F6ED08F6900004120BC5 74 | :101A1F005AFE900003120B5AFDEE7891F6ED08F680 75 | :0D1A2F00AB31AA32A933E4120B877F0122EC 76 | :060046008B348A35893677 77 | :10004C008B3A8A3B893CE47880F67899F685373D83 78 | :10005C0085383E85393F74022539F539E43538F554 79 | :10006C0038E408F6781DF608F6042536F536E4353E 80 | :10007C0035F535AB340536E536AA35700205351441 81 | :10008C00F9120B41788CF6788CE670030204DAAB2B 82 | :10009C00340536E536AA357002053514F9120B41D4 83 | :1000AC007882F6E6FF5402700302039C781DE6701A 84 | :1000BC00030201807896E6FC08E6FD7894A6040815 85 | :1000CC00A605EF5411640170267882E6FF7D831239 86 | :1000DC00133A7899EFF66402703B789408E6161898 87 | :1000EC0086067001164E602D789AE660DC80267DBF 88 | :1000FC00837F0E12133A7899EFF66402701378949A 89 | :10010C0008E6161886067001164E6005789AE660A9 90 | :10011C00DEE4781DF67899E6640160030204DA786F 91 | :10012C0083E6FFAB370539E539AA38700205381478 92 | :10013C00F9EF120B8708E6FFAB370539E539AA381A 93 | :10014C007002053814F9EF120B8708E6FFAB370580 94 | :10015C0039E539AA387002053814F9EF120B870803 95 | :10016C00E6FFAB370539E539AA387002053814F9C2 96 | :10017C00EF120B877882E6FF541070030202BEABBD 97 | :10018C0034AA35A936120B417887F6900001120B70 98 | :10019C005A7888F6900002120B5A7889F690000370 99 | :1001AC00120B5A788AF674042536F536E43535F593 100 | :1001BC00357891E6FC08E6FD18A60408A605EF5470 101 | :1001CC0001603D7896E6FE08E6FF7894A60608A640 102 | :1001DC00077882E6FFE4FD12133A7899EFF67E0079 103 | :1001EC0064027013789408E6161886047001164C95 104 | :1001FC006005789AE660DAEF64014E60030204DA77 105 | :10020C007896E6FE08E6FF7894A60608A60778829C 106 | :10021C00E6FF7D8312133A7899EFF67E0064027044 107 | :10022C0013789408E6161886047001164C6005784D 108 | :10023C009AE660DAEF64014E703C7983E7788D566C 109 | :10024C00788766701E09E7788E5678886670140970 110 | :10025C00E7788F56788966700A09E7789056788A1D 111 | :10026C00666013789108E6161886067001164E60C3 112 | :10027C0005789AE6608A7983E7788D567887667078 113 | :10028C001E09E7788E56788866701409E7788F56C1 114 | :10029C00788966700A09E7789056788A66600678DD 115 | :1002AC0099E64410F67899E664017003020395020E 116 | :1002BC0004DA7896E6FE08E6FF7894A60608A60708 117 | :1002CC007882E65401603E781DE66003020395785F 118 | :1002DC0082E6FFE4FD12133A7899EFF67E00640291 119 | :1002EC007013789408E6161886047001164C600595 120 | :1002FC00789AE660DAEF64014E60030204DA781D46 121 | :10030C0076010203957882E6FF7D8312133A789981 122 | :10031C00EFF67E0064027013789408E616188604D3 123 | :10032C007001164C6005789AE660DAEF64014E6055 124 | :10033C00030204DA7883E6FFAB370539E539AA38CE 125 | :10034C007002053814F9EF120B8708E6FFAB37057E 126 | :10035C0039E539AA387002053814F9EF120B870801 127 | :10036C00E6FFAB370539E539AA387002053814F9C0 128 | :10037C00EF120B8708E6FFAB370539E539AA387061 129 | :10038C0002053814F9EF120B87E4781EF60204CC40 130 | :10039C00781DE670030204387896E6FE08E6FF78CE 131 | :1003AC0094A60608A6077D837F0E12133A7899EF60 132 | :1003BC00F67E0064027013789408E61618860470B2 133 | :1003CC0001164C6005789AE660DCEF64014E600320 134 | :1003DC000204DA7883E6FFAB370539E539AA3870C1 135 | :1003EC0002053814F9EF120B8708E6FFAB37053915 136 | :1003FC00E539AA387002053814F9EF120B8708E6B4 137 | :10040C00FFAB370539E539AA387002053814F9EF16 138 | :10041C00120B8708E6FFAB370539E539AA387002AD 139 | :10042C00053814F9EF120B87E4781DF6AB34AA35B6 140 | :10043C00A936120B417883F6900001120B5A78847E 141 | :10044C00F6900002120B5A7885F6900003120B5AA4 142 | :10045C007886F674042536F536E43535F53578822C 143 | :10046C00E65420601D08E6788DF67884E6788EF6E2 144 | :10047C007885E6788FF67886E67890F67899760126 145 | :10048C00803E7896E6FE08E6FF7894A60608A60756 146 | :10049C007882E6FF7D8312133A7899EFF67E00643A 147 | :1004AC00027013789408E6161886047001164C60D6 148 | :1004BC0005789AE660DAEF64014E7012781E7601C8 149 | :1004CC00788006789AE67006788C16020093788C01 150 | :1004DC00E66031AB340536E536AA357002053514C5 151 | :1004EC00F9120B417882F6E6FF54026007EF5410C4 152 | :1004FC00600D800074042536F536E43535F5357815 153 | :10050C008C1680CA7899E6640160030205E9781DAF 154 | :10051C00E670030205B47896E6FE08E6FF7894A62A 155 | :10052C000608A6077D837F0E12133A7899EFF67EA4 156 | :10053C000064027013789408E6161886047001168D 157 | :10054C004C6005789AE660DCEF64014E60030205AE 158 | :10055C00E97883E6FFAB370539E539AA387002052F 159 | :10056C003814F9EF120B8708E6FFAB370539E5397C 160 | :10057C00AA387002053814F9EF120B8708E6FFABA6 161 | :10058C00370539E539AA387002053814F9EF120B22 162 | :10059C008708E6FFAB370539E539AA38700205380C 163 | :1005AC0014F9EF120B878035781EE660307896E6EA 164 | :1005BC00FE08E6FF7894A60608A607E4FD7F0E1257 165 | :1005CC00133A7899EFF664027013789408E61618CB 166 | :1005DC0086067001164E6005789AE660DE7880E635 167 | :1005EC00AB3DAA3EA93F120B877899E6AB3DAA3EDC 168 | :0D05FC00A93F900001120B99C3E53999FF4A 169 | :0106090022CE 170 | :101C9F00E4781CF6853137853238853339120046A2 171 | :041CAF00781CEFF6B8 172 | :011CB300220E 173 | :060D59008B348A35893657 174 | :100D5F00E47880F67899F685373A85383B85393CC3 175 | :100D6F0074032539F539E43538F538E408F60425E8 176 | :100D7F0036F536E43535F535AB34FAA93690000142 177 | :100D8F00120B5A120B41FF788CF674022536F5368A 178 | :100D9F00E43535F535EF7003020F5DAB340536E5FD 179 | :100DAF0036AA357002053514F9120B417882F6E632 180 | :100DBF00FF54027003020EB6EF5401603D7896E6C1 181 | :100DCF00FE08E6FF7894A60608A6077882E6FFE4F9 182 | :100DDF00FD12133A7899EFF67E006402701378943F 183 | :100DEF0008E6161886047001164C6005789AE660BE 184 | :100DFF00DAEF64014E6003020F5D788CE616700324 185 | :100E0F00020F5DE670097882E654016002760E7873 186 | :100E1F0096E6FE08E6FF7894A60608A6077882E60F 187 | :100E2F00FF7D8312133A7899EFF67E0064027013F8 188 | :100E3F00789408E6161886047001164C6005789AA7 189 | :100E4F00E660DAEF64014E6003020F5D7883E6FF20 190 | :100E5F00AB370539E539AA387002053814F9EF12A6 191 | :100E6F000B8708E6FFAB370539E539AA387002055D 192 | :100E7F003814F9EF120B8708E6FFAB370539E53960 193 | :100E8F00AA387002053814F9EF120B8708E6FFAB8A 194 | :100E9F00370539E539AA387002053814F9EF120B06 195 | :100EAF0087788006020E09788CE6166071AB34AA3B 196 | :100EBF0035A936120B417883F6900001120B5A7840 197 | :100ECF0084F6900002120B5A7885F6900003120BED 198 | :100EDF005A7886F674042536F536E43535F53578C7 199 | :100EEF0096E6FE08E6FF7894A60608A6077882E63F 200 | :100EFF00FF7D8312133A7899EFF67E006402701328 201 | :100F0F00789408E6161886047001164C6005789AD6 202 | :100F1F00E660DAEF64014E70357880068089789646 203 | :100F2F00E6FE08E6FF7894A60608A607E4FD7F0E06 204 | :100F3F0012133A7899EFF664027013789408E61654 205 | :100F4F001886067001164E6005789AE660DE788086 206 | :100F5F00E6AB3AAA3BA93C120B87AB3AAA3BA93C9A 207 | :100F6F00900001E4120B997899E6900002120B9908 208 | :050F7F00C3E53999FFF4 209 | :010F8400224A 210 | :06174D008B2E8A2F89306B 211 | :101753007893E6147018853137853238853339AB81 212 | :101763002EAA2FA930120D59781CA6078021AB3160 213 | :10177300AA32A933E4120B87AB31AA32A933900002 214 | :1017830001120B99900002E4120B99781C7603ABBB 215 | :101793002EAA2FA930900003120B5A540260067828 216 | :1017A3001CE6F68025900002120B5A900001120BE2 217 | :1017B3005A75F004A42404FFE435F0FEEF7810C357 218 | :0E17C30033CE33CED8F9781C46F6781CE6FFFC 219 | :0117D10022F5 220 | :101A3C00900001120B5A7883F6900002120B5A7820 221 | :101A4C0084F6900003120B5A7885F6900004120B62 222 | :101A5C005A7886F67D83E4FF12133AAB37AA38A97D 223 | :081A6C0039E4120B877F01220F 224 | :101B98007893E614701285313785323885333912D7 225 | :101BA8001A3C781CA607800FAB31AA32A93374FF00 226 | :0B1BB800120B87781C7601781CE6FFFA 227 | :011BC30022FF 228 | :0C0F850078A4E6FF789E667003021171EC 229 | :100F91007E0074002FF9EE3401752801F529892AA4 230 | :100FA100789DE62400F9EE3402752B01F52C892D8C 231 | :100FB10078A4744026F6AB28AA29A92A120B41FF6E 232 | :100FC100AB2B052DE52DAA2C7002052C14F9EF127F 233 | :100FD1000B87AB28052AE52AAA297002052914F9ED 234 | :100FE100120B41120D2D104200106B0110800210E6 235 | :100FF1009503112604101805102D06113A0810A1A9 236 | :101001000910B60A10C21010D61110EA1210FE1300 237 | :1010110011121D00001152852B31852C32852D3383 238 | :10102100AB28AA29A92A121C9F02114C852B3185B4 239 | :101031002C32852D33AB28AA29A92A12174D02116A 240 | :101041004CAB28AA29A92A120B41FFAB2BE52D2471 241 | :1010510001F9E4352CFA1216C7781BEFF6AB2BAA6F 242 | :101061002CA92D120B8706021164852B31852C3298 243 | :10107100852D33AB28AA29A92A121BC402114C853C 244 | :101081002B31852C32852D33AB28AA29A92A121A96 245 | :10109100DE02114CAB2BAA2CA92D121C3B02114CC8 246 | :1010A100852B31852C32852D33AB28AA29A92A120B 247 | :1010B1001B6B02114CAB2BAA2CA92D1200030211A0 248 | :1010C1004C852B31852C32852D33AB28AA29A92AB1 249 | :1010D10012159D8076852B31852C32852D33AB28D9 250 | :1010E100AA29A92A1217D28062852B31852C328533 251 | :1010F1002D33AB28AA29A92A121A74804E852B31C7 252 | :10110100852C32852D33AB28AA29A92A121BEF8001 253 | :101111003A852B31852C32852D33AB28AA29A92A72 254 | :1011210012142C8026852B31852C32852D33AB284A 255 | :10113100AA29A92A1219FF8012852B31852C328503 256 | :101141002D33AB28AA29A92A121B98781BA6078040 257 | :1011510012AB2BAA2CA92D90FFFF74FF120B9978CB 258 | :101161001B7601781BE60479A0F7789D744026F67A 259 | :01117100225B 260 | :101CDB0075A15575A1AAE5B954F84406F5B9E4F513 261 | :021CEB00A12234 262 | :101C5500EF4E601505A105A105A105A105A105A1E9 263 | :0A1C650005A1EF1F70EA1E80E722C0 264 | :101C8800AD07AC06ED4C600E7FE87E03121C55EDE7 265 | :071C98001D70F11C80EE221B 266 | :1011720012011002EF020140280D040200010102D7 267 | :1011820003010902620003010080FA09040000025F 268 | :10119200FF00000407050202400000070583024029 269 | :1011A2000000080B02020202010509040200020A01 270 | :1011B200000000070501024000000705810240000F 271 | :1011C20000090403000102020100052400100105C8 272 | :1011D20024010001042402020524060302070584F7 273 | :1011E200030800FF040309040803410052004D00F4 274 | :1011F20024034400410050004C0069006E006B0063 275 | :10120200200043004D005300490053002D004400CC 276 | :10121200410050001A03350056002D0053005000C3 277 | :1012220049002D00310032003300340035001A032A 278 | :1012320043004D005300490053002D00440041007B 279 | :1012420050002000760032001E034400410050008E 280 | :101252004C0069006E006B002D0043004400430007 281 | :10126200450078007400050F2800020710020000F4 282 | :1012720000001C100500DF60DDD88945C74C9CD2F8 283 | :10128200659D9E648A9F00000306AA0020000A0052 284 | :10129200000000000306AA00080002000000A000EF 285 | :1012A2001400030057494E5553420000000000004D 286 | :1012B200000000008400040007002A0044006500CA 287 | :1012C200760069006300650049006E0074006500E5 288 | :1012D2007200660061006300650047005500490026 289 | :1012E20044007300000050007B00430044004200B1 290 | :1012F200330042003500410044002D003200390025 291 | :10130200330042002D0034003600360033002D0039 292 | :1013120041004100330036002D0031004100410000 293 | :101322004500340036003400360033003700370001 294 | :0813320036007D000000000000 295 | :101C720001B00002A5000007A900E1000000000871 296 | :051C820003150038000D 297 | :10196C00C2EAE4F5E275D18053D1FB53E2BF75EDC9 298 | :10197C000075EC0053EAF375DC0275EF0075EE4070 299 | :10198C0043EAC053EAEF75D21275E50175E40075B0 300 | :10199C00E70275E60043EB4853EBEE75D41275D6AF 301 | :1019AC001AF5E343E22943D10175D8FF75E107D25B 302 | :0219BC00EA221D 303 | :0300430002060AA8 304 | :0D060A00C0E0C0F0C083C082C0D075D00831 305 | :1006170020D903020A18E5D9543F70030209EA14E6 306 | :10062700604D24E1700302098A14603324FE601DC3 307 | :1006370024F36049242E6003020A1620DE03020A0F 308 | :1006470016789E744026F6E6F5E4020A1678B07628 309 | :100657000075D700E5D654FC4402F5D6020A167594 310 | :10066700D300C201E5D254FC4402F5D2020A162097 311 | :10067700DE03020A16AFDB1219BE020A1685DB215A 312 | :10068700E5216408600302095C900006E078A7F69C 313 | :10069700A3E0600276FF752100900001E078A8F6DC 314 | :1006A700900000E0546024E070030208C024E0706A 315 | :1006B700030208E82440600302090F78A8E6B40B98 316 | :1006C7000040030208BE9006D4F828287302089F4A 317 | :1006D7000207E40208BE02081F0208BE0207AB02B7 318 | :1006E70006F50208BE0207B50207D10209129000FB 319 | :1006F70003E024FE602014602C24F47003020799A1 320 | :10070700240E60030207A87512FF75131175147282 321 | :100717007521120209127512FF751311751484756C 322 | :100727002162020912900002E014601F14602B146A 323 | :10073700603714603F14604B240570657512FF75B0 324 | :1007470013117514E67521040209127512FF75134A 325 | :10075700117514EA7521080209127512FF75131134 326 | :100767007514F27521240209127512FF751312759B 327 | :10077700141680097512FF75131275143075211A36 328 | :100787000209127512FF75131275144A75211E029C 329 | :1007970009127512FF75131275146875212802095D 330 | :1007A7001202090F900002E078A7F6020912789B5F 331 | :1007B700E6900000F078A7E6C39401748094805017 332 | :1007C70003020912752101020912900002E0789BC9 333 | :1007D700F6700302091278B176010209129000003F 334 | :1007E700E0541F6402702E900004E024FE601D2474 335 | :1007F70081600E14701CE5D454BC4402F5D4020980 336 | :1008070012E5D254BC4402F5D202091253D4730242 337 | :10081700091202090F02090F900000E0541FFD7C26 338 | :10082700007020900003E0FE900002E0FBEB640103 339 | :100837004E700D90118B9330E50302091202090FD8 340 | :1008470002090FED64024C704D900003E0FE90002A 341 | :1008570002E0FDED4E703D900005E0FE900004E0E3 342 | :10086700FDEDFFEE702CEF24FE6012248160191459 343 | :100877007020E5D454BF4403F5D4020912E5D454DB 344 | :100887007F440CF5D4020912E5D254BF4403F5D2D4 345 | :1008970080798074807280707512007513007514EA 346 | :1008A700A578A7E6FFC3940274809480400575215C 347 | :1008B7000280588F218054804F900000E0541F64BD 348 | :1008C70001704878A8E624E0604124FE603D04708A 349 | :1008D7000E7512007513007514A9752107802C80F9 350 | :1008E70027900000E0541F702278A8E624E07016D5 351 | :1008F700900004E0640770137512FF7513127514E6 352 | :10090700907521AA800580007521FFAF21EF60480F 353 | :10091700F4604578A7E6D395214002A62178A7E69B 354 | :10092700FFC394407480948040047F4080008F21EF 355 | :100937007E0078007C007D01AB12AA13A914120B6C 356 | :100947001BC378A7E69521F6E5212514F514E435B0 357 | :1009570013F51380037521FFAF217E00EFF4700AB2 358 | :1009670078A876FF75DCCF020A16D3EF9440EE64C1 359 | :1009770080948050058521DD800375DD0075DCC01E 360 | :10098700020A1678A8E624FB604624E56004241AC8 361 | :10099700704978A7E6FFC394407480948040047F31 362 | :1009A7004080008F217E0078007C007D01AB12AA79 363 | :1009B70013A914120B1BC378A7E69521F6E5212589 364 | :1009C70014F514E43513F5138521DD63DC40803F0E 365 | :1009D700E5E3548078A746F5E3800375DD0075DC11 366 | :1009E70002802C85DB2178A8E66420701F30DE1C8E 367 | :1009F700AFDBFE087C00FD7B017A007900120B1B40 368 | :100A07007B007A0079A912185075DD0063DC80C27B 369 | :100A1700D930D81675DC0275D21075D41275E3007B 370 | :100A2700C2DAC2D978B07600C2D830DA09C2DAE5BC 371 | :090A3700DA30E205800375D8FFF6 372 | :0B0A4000D0D0D082D083D0F0D0E032C4 373 | :1014EF00E4F527121CDB7F057E00121C8812196C95 374 | :1014FF00121B3D5392EF4393105392DF439320D22D 375 | :10150F00AFE4F5D3F5D578B1F6789EF678A4F678F2 376 | :10151F009DF6789FF678B0F6C202F510F511789B1C 377 | :10152F00E660FB120F8578B0E66401601C789FE6D9 378 | :10153F00FF789D66601378B0760178A0E6F5D78FB7 379 | :10154F00E653D6FC18744026F6300209C291E4F532 380 | :10155F0010F511801F0511E51170020510AF107EF7 381 | :10156F0000EF64107002D291EF64F04E7006F51028 382 | :10157F00F511C291E5B930E3AAE4F5E275D1807FA8 383 | :0E158F000AFE121C88AA16A917120D53809589 384 | :10185000E4F525F524F523F522900003120B5AF543 385 | :1018600022900002120B5AF523900001120B5AF538 386 | :1018700024120B41F525C2ACE47F08FEFDFCAB252C 387 | :10188000AA24A923A822120C10E42FFFEE3436FE5E 388 | :10189000ED346EFDEC3401FCE47B10FAF9F8120C27 389 | :1018A0009BAB25AA24A923A822120C9BEFF404F5D4 390 | :0318B0008DD2AC2A 391 | :0118B3002212 392 | :101AA90053927F439380C2975392DF439320D295F9 393 | :101AB9005392BF5393BFC2945392EF439310D2B43E 394 | :101AC9005396EF439710D2B25396FB43970475FC94 395 | :051AD9000875FB182256 396 | :101CC800C2945392DF5393DF53927F53937FC2B4EE 397 | :031CD800C2B22273 398 | :1019180075341EE4F535F536F5377D34FF12133A84 399 | :10192800E4F5347D347F0812133A75341275372381 400 | :101938007D347F0112133A75340C7535EDE4F536B4 401 | :101948007537E07D347F0512133A753407E4F535B1 402 | :101958007536FA7537057D347F0D12133A7D347F5D 403 | :041968000E02133A1E 404 | :1000260030FBFDF5F922D297139295C297D8F722A5 405 | :0C003600C297A29513D297D8F7C2972268 406 | :101C19008AA075FA60EFC394084008FFE312002612 407 | :101C29000980F2EF600BF8E330FBFD75FA00120052 408 | :021C39002C225B 409 | :101B0E008AA0D295439220C2B2EFC39408400F75BB 410 | :101B1E00FA20F5F904FF30FBFDE5F9F380EBEF60F9 411 | :0F1B2E000DF875FA00120036F3D2B25392DF228F 412 | :10133A00EDF9EF53E00F2330D002D2E543E0817597 413 | :10134A00FA6012002630FBFD75FA00D2954392200E 414 | :10135A00C2B27804120036C40353E007CFBF014279 415 | :10136A0020E141D2970000C2977D00D2B25392DFAA 416 | :10137A0075FA60E712002630D0010D09E71200263F 417 | :10138A0030D0010D09E712002630D0010D09E7120D 418 | :10139A00002630D0010DED1330FBFD75FA00929551 419 | :1013AA008051805E75FA20F5F97D0030FBFDE5F984 420 | :1013BA00F5F930D0010DF70930FBFDE5F9F5F93003 421 | :1013CA00D0010DF70930FBFDE5F9F5F930D0010D33 422 | :1013DA00F70930FBFDE5F930D0010DF775FA00D2B7 423 | :1013EA0097E400C297A295336D30E0027F08D2B22B 424 | :1013FA005392DF7881087801D29700C295C297D8B4 425 | :10140A00F722BF0202800BBF020280067F107822F9 426 | :10141A0080027801D2970000C297D8F8D2B25392CC 427 | :02142A00DF22BF 428 | :101B3D00E4F519F518F51AC200C20143960343974F 429 | :101B4D0003C2CDC2CC438780E589540F4420F5896B 430 | :0E1B5D0043C9A0758DF3D28E759850D2AC227C 431 | :1019BE008F22900040C3E518951914C39F402875D7 432 | :1019CE00A003A819E0F2A308DFFA8819200009A8DD 433 | :1019DE0018E2F5990518D200C3E518951914C394A9 434 | :1019EE0040400453D2F322E5D254F34408F5D222F8 435 | :0119FE0022C6 436 | :101CED008F26784005A290008015A2E608A5DFFB9F 437 | :021CFD002222A1 438 | :101CB400E51A600FFF121CED851AD3E4F51A53D20E 439 | :041CC400FCD201222B 440 | :030023000218B40C 441 | :1018B400C0E0C0F0C083C082C0D075D00830982189 442 | :1018C4007440251AF8A699051AD3E51A9440748031 443 | :1018D40094804003751A00C29820012D121CB48014 444 | :1018E40028309925E5186519600D758303851882DC 445 | :1018F400E0F59905188002C200C3E518951914C3D0 446 | :101904009440400353D2F3C299D0D0D082D083D034 447 | :04191400F0D0E032FD 448 | :0300000002163BAA 449 | :0C163B00787FE4F6D8FD7581B1021682BC 450 | :100A4B00E709F608DFFA8046E709F208DFFA803E8D 451 | :100A5B0088828C83E709F0A3DFFA8032E309F6087A 452 | :100A6B00DFFA8078E309F208DFFA807088828C83E2 453 | :100A7B00E309F0A3DFFA806489828A83E0A3F60896 454 | :100A8B00DFFA805889828A83E0A3F208DFFA804C70 455 | :100A9B0080D280FA80C680D4806980F28033801047 456 | :100AAB0080A680EA809A80A880DA80E280CA8033B0 457 | :100ABB0089828A83ECFAE493A3C8C582C8CCC58328 458 | :100ACB00CCF0A3C8C582C8CCC583CCDFE9DEE780F8 459 | :100ADB000D89828A83E493A3F608DFF9ECFAA9F077 460 | :100AEB00EDFB2289828A83ECFAE0A3C8C582C8CCCD 461 | :100AFB00C583CCF0A3C8C582C8CCC583CCDFEADEE6 462 | :100B0B00E880DB89828A83E493A3F208DFF980CC47 463 | :100B1B0088F0EF60010E4E60C388F0ED2402B40440 464 | :100B2B000050B9F582EB2402B4040050AF232345E7 465 | :060B3B008223900A9B7367 466 | :100B4100BB010689828A83E0225002E722BBFE02B2 467 | :090B5100E32289828A83E49322E5 468 | :100B5A00BB010CE58229F582E5833AF583E0225050 469 | :100B6A0006E92582F8E622BBFE06E92582F8E2229A 470 | :0D0B7A00E58229F582E5833AF583E49322B4 471 | :100B8700BB010689828A83F0225002F722BBFE014D 472 | :020B9700F32247 473 | :100B9900F8BB010DE58229F582E5833AF583E8F092 474 | :100BA900225006E92582C8F622BBFE05E92582C83E 475 | :020BB900F22226 476 | :100BBB00BC000BBE0029EF8DF084FFADF022E4CC1E 477 | :100BCB00F875F008EF2FFFEE33FEEC33FCEE9DECE7 478 | :100BDB00984005FCEE9DFE0FD5F0E9E4CEFD22ED2D 479 | :100BEB00F8F5F0EE8420D21CFEADF075F008EF2F77 480 | :100BFB00FFED33FD4007985006D5F0F222C398FD68 481 | :050C0B000FD5F0EA2204 482 | :100C1000E88FF0A4CC8BF0A42CFCE98EF0A42CFC83 483 | :100C20008AF0EDA42CFCEA8EF0A4CDA8F08BF0A401 484 | :100C30002DCC3825F0FDE98FF0A42CCD35F0FCEB60 485 | :100C40008EF0A4FEA9F0EB8FF0A4CFC5F02ECD3925 486 | :0F0C5000FEE43CFCEAA42DCE35F0FDE43CFC2292 487 | :100C5F0075F008758200EF2FFFEE33FECD33CDCC4C 488 | :100C6F0033CCC58233C5829BED9AEC99E5829840CF 489 | :100C7F000CF582EE9BFEED9AFDEC99FC0FD5F0D6AC 490 | :100C8F00E4CEFBE4CDFAE4CCF9A88222B800C1B9D6 491 | :100C9F000059BA002DEC8BF084CFCECDFCE5F0CB14 492 | :100CAF00F97818EF2FFFEE33FEED33FDEC33FCEB4D 493 | :100CBF0033FB10D703994004EB99FB0FD8E5E4F908 494 | :100CCF00FA227818EF2FFFEE33FEED33FDEC33FCF5 495 | :100CDF00C933C910D7059BE99A4007EC9BFCE99AE9 496 | :100CEF00F90FD8E0E4C9FAE4CCFB2275F010EF2F2E 497 | :100CFF00FFEE33FEED33FDCC33CCC833C810D7072E 498 | :100D0F009BEC9AE899400AED9BFDEC9AFCE899F868 499 | :0E0D1F000FD5F0DAE4CDFBE4CCFAE4C8F922FB 500 | :100D2D00D083D082F8E4937012740193700DA3A355 501 | :100D3D0093F8740193F5828883E473740293686069 502 | :060D4D00EFA3A3A380DF69 503 | :060D53008A838982E4732B 504 | :101647000214EFE493A3F8E493A34003F68001F2B6 505 | :1016570008DFF48029E493A3F85407240CC8C333A4 506 | :10166700C4540F4420C8834004F456800146F6DF73 507 | :10167700E4800B0102040810204080901C6FE47E78 508 | :10168700019360BCA3FF543F30E509541FFEE49368 509 | :10169700A360010ECF54C025E060A840B8E493A32F 510 | :1016A700FAE493A3F8E493A3C8C582C8CAC583CA5A 511 | :1016B700F0A3C8C582C8CAC583CADFE9DEE780BE12 512 | :011C8700005C 513 | :00000001FF 514 | -------------------------------------------------------------------------------- /SRC/DAP.c: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2013-2017 ARM Limited. All rights reserved. 3 | * 4 | * SPDX-License-Identifier: Apache-2.0 5 | * 6 | * Licensed under the Apache License, Version 2.0 (the License); you may 7 | * not use this file except in compliance with the License. 8 | * You may obtain a copy of the License at 9 | * 10 | * www.apache.org/licenses/LICENSE-2.0 11 | * 12 | * Unless required by applicable law or agreed to in writing, software 13 | * distributed under the License is distributed on an AS IS BASIS, WITHOUT 14 | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 | * See the License for the specific language governing permissions and 16 | * limitations under the License. 17 | * 18 | * ---------------------------------------------------------------------- 19 | * 20 | * $Date: 1. December 2017 21 | * $Revision: V2.0.0 22 | * 23 | * Project: CMSIS-DAP Source 24 | * Title: DAP.c CMSIS-DAP Commands 25 | * 26 | *---------------------------------------------------------------------------*/ 27 | 28 | #include "DAP.h" 29 | 30 | // Get DAP Information 31 | // id: info identifier 32 | // info: pointer to info datas 33 | // return: number of bytes in info datas 34 | static UINT8I DAP_Info(UINT8 id, UINT8 *info) 35 | { 36 | UINT8I length = 0U; 37 | 38 | switch (id) 39 | { 40 | case DAP_ID_VENDOR: 41 | length = 0; 42 | break; 43 | case DAP_ID_PRODUCT: 44 | length = 0; 45 | break; 46 | case DAP_ID_SER_NUM: 47 | length = 0; 48 | break; 49 | case DAP_ID_FW_VER: 50 | length = (UINT8)sizeof(DAP_FW_VER); 51 | memcpy(info, DAP_FW_VER, length); 52 | break; 53 | case DAP_ID_DEVICE_VENDOR: 54 | 55 | break; 56 | case DAP_ID_DEVICE_NAME: 57 | 58 | break; 59 | case DAP_ID_CAPABILITIES: 60 | info[0] = DAP_PORT_SWD; 61 | length = 1U; 62 | break; 63 | case DAP_ID_TIMESTAMP_CLOCK: 64 | 65 | break; 66 | case DAP_ID_SWO_BUFFER_SIZE: 67 | 68 | break; 69 | case DAP_ID_PACKET_SIZE: 70 | info[0] = (UINT8)(DAP_PACKET_SIZE >> 0); 71 | info[1] = (UINT8)(DAP_PACKET_SIZE >> 8); 72 | length = 2U; 73 | break; 74 | case DAP_ID_PACKET_COUNT: 75 | info[0] = DAP_PACKET_COUNT; 76 | length = 1U; 77 | break; 78 | default: 79 | break; 80 | } 81 | 82 | return (length); 83 | } 84 | 85 | // Process Delay command and prepare response 86 | // request: pointer to request datas 87 | // response: pointer to response datas 88 | // return: number of bytes in response (lower 16 bits) 89 | // number of bytes in request (upper 16 bits) 90 | static UINT8I DAP_Delay(const UINT8 *req, UINT8 *res) 91 | { 92 | UINT16I delay; 93 | 94 | delay = (UINT16)(*(req + 0)) | 95 | (UINT16)(*(req + 1) << 8); 96 | 97 | while (--delay) 98 | { 99 | }; 100 | 101 | *res = DAP_OK; 102 | return 1; 103 | } 104 | 105 | // Process Host Status command and prepare response 106 | // request: pointer to request datas 107 | // response: pointer to response datas 108 | // return: number of bytes in response (lower 16 bits) 109 | // number of bytes in request (upper 16 bits) 110 | static UINT8I DAP_HostStatus(const UINT8 *req, UINT8 *res) 111 | { 112 | 113 | switch (*req) 114 | { 115 | case DAP_DEBUGGER_CONNECTED: 116 | DAP_LED_BUSY = ((*(req + 1) & 1U)); 117 | break; 118 | case DAP_TARGET_RUNNING: 119 | DAP_LED_BUSY = ((*(req + 1) & 1U)); 120 | break; 121 | default: 122 | *res = DAP_ERROR; 123 | return 1; 124 | } 125 | 126 | *res = DAP_OK; 127 | return 1; 128 | } 129 | 130 | // Process Connect command and prepare response 131 | // request: pointer to request datas 132 | // response: pointer to response datas 133 | // return: number of bytes in response (lower 16 bits) 134 | // number of bytes in request (upper 16 bits) 135 | UINT8I debug_port; 136 | static UINT8I DAP_Connect(const UINT8 *req, UINT8 *res) 137 | { 138 | UINT8I port; 139 | 140 | if (*req == DAP_PORT_AUTODETECT) 141 | { 142 | port = DAP_DEFAULT_PORT; 143 | } 144 | else 145 | { 146 | port = *req; 147 | } 148 | 149 | switch (port) 150 | { 151 | case DAP_PORT_SWD: 152 | debug_port = DAP_PORT_SWD; 153 | PORT_SWD_SETUP(); 154 | break; 155 | default: 156 | port = DAP_PORT_DISABLED; 157 | break; 158 | } 159 | 160 | *res = (UINT8)port; 161 | return 1; 162 | } 163 | 164 | // Process Disconnect command and prepare response 165 | // response: pointer to response datas 166 | // return: number of bytes in response 167 | static UINT8I DAP_Disconnect(UINT8 *res) 168 | { 169 | debug_port = DAP_PORT_DISABLED; 170 | PORT_SWD_OFF(); 171 | *res = DAP_OK; 172 | return (1U); 173 | } 174 | 175 | // Process Reset Target command and prepare response 176 | // response: pointer to response datas 177 | // return: number of bytes in response 178 | static UINT8I DAP_ResetTarget(UINT8 *res) 179 | { 180 | SWD_ResetTarget_Soft(); 181 | *(res + 1) = 0; 182 | *(res + 0) = DAP_OK; 183 | return 2; 184 | } 185 | 186 | // Process SWJ Pins command and prepare response 187 | // request: pointer to request datas 188 | // response: pointer to response datas 189 | // return: number of bytes in response (lower 16 bits) 190 | // number of bytes in request (upper 16 bits) 191 | static UINT8I DAP_SWJ_Pins(const UINT8 *req, UINT8 *res) 192 | { 193 | UINT8I value; 194 | UINT8I select; 195 | UINT16I wait; 196 | 197 | value = (UINT8I) * (req + 0); 198 | select = (UINT8I) * (req + 1); 199 | wait = (UINT16I)(*(req + 2) << 0) | (UINT16I)(*(req + 3) << 8); 200 | if ((UINT8I)(*(req + 4)) || (UINT8I)(*(req + 5))) 201 | wait |= 0x8000; 202 | 203 | if ((select & DAP_SWJ_SWCLK_TCK_BIT) != 0U) 204 | { 205 | if ((value & DAP_SWJ_SWCLK_TCK_BIT) != 0U) 206 | { 207 | SWK = 1; 208 | } 209 | else 210 | { 211 | SWK = 0; 212 | } 213 | } 214 | if ((select & DAP_SWJ_SWDIO_TMS_BIT) != 0U) 215 | { 216 | if ((value & DAP_SWJ_SWDIO_TMS_BIT) != 0U) 217 | { 218 | SWD = 1; 219 | } 220 | else 221 | { 222 | SWD = 0; 223 | } 224 | } 225 | if ((select & DAP_SWJ_nRESET_BIT) != 0U) 226 | { 227 | if ((value & DAP_SWJ_SWDIO_TMS_BIT) != 0U) 228 | { 229 | RST = 0; 230 | } 231 | else 232 | { 233 | SWD_ResetTarget_Soft(); 234 | RST = 1; 235 | } 236 | // RST = value >> DAP_SWJ_nRESET; 237 | } 238 | 239 | // if (wait != 0U) 240 | // { 241 | 242 | // do 243 | // { 244 | // if ((select & DAP_SWJ_SWCLK_TCK_BIT) != 0U) 245 | // { 246 | // if ((value >> DAP_SWJ_SWCLK_TCK) ^ SWK) 247 | // { 248 | // continue; 249 | // } 250 | // } 251 | // if ((select & DAP_SWJ_SWDIO_TMS_BIT) != 0U) 252 | // { 253 | // if ((value >> DAP_SWJ_SWDIO_TMS) ^ SWD) 254 | // { 255 | // continue; 256 | // } 257 | // } 258 | // if ((select & DAP_SWJ_nRESET_BIT) != 0U) 259 | // { 260 | // //continue; 261 | //// if ((value >> DAP_SWJ_nRESET) ^ RST) 262 | //// { 263 | //// continue; 264 | //// } 265 | // } 266 | // break; 267 | // } 268 | // while (wait--); 269 | // } 270 | 271 | // value = ((UINT8I)SWK << DAP_SWJ_SWCLK_TCK) | 272 | // ((UINT8I)SWD << DAP_SWJ_SWDIO_TMS) | 273 | // (0 << DAP_SWJ_TDI) | 274 | // (0 << DAP_SWJ_TDO) | 275 | // (0 << DAP_SWJ_nTRST) | 276 | // ((UINT8I)RST << DAP_SWJ_nRESET); 277 | value = ((UINT8I)SWK << DAP_SWJ_SWCLK_TCK) | 278 | ((UINT8I)SWD << DAP_SWJ_SWDIO_TMS) | 279 | (0 << DAP_SWJ_TDI) | 280 | (0 << DAP_SWJ_TDO) | 281 | (0 << DAP_SWJ_nTRST) | 282 | (0 << DAP_SWJ_nRESET); 283 | if(RST == 0) value|=(1 << DAP_SWJ_nRESET); 284 | 285 | *res = (UINT8)value; 286 | 287 | return 1; 288 | } 289 | 290 | // Process SWJ Clock command and prepare response 291 | // request: pointer to request datas 292 | // response: pointer to response datas 293 | // return: number of bytes in response (lower 16 bits) 294 | // number of bytes in request (upper 16 bits) 295 | UINT8I fast_clock; 296 | UINT8I clock_delay; 297 | static UINT8I DAP_SWJ_Clock(const UINT8 *req, UINT8 *res) 298 | { 299 | /**/ 300 | fast_clock = *req; 301 | fast_clock = 0; 302 | clock_delay = 0; 303 | 304 | *res = DAP_OK; 305 | return 1; 306 | } 307 | // Process SWJ Sequence command and prepare response 308 | // request: pointer to request datas 309 | // response: pointer to response datas 310 | // return: number of bytes in response (lower 16 bits) 311 | // number of bytes in request (upper 16 bits) 312 | static UINT8I DAP_SWJ_Sequence(const UINT8 *req, UINT8 *res) 313 | { 314 | UINT8I count; 315 | 316 | count = *req++; 317 | if (count == 0U) 318 | { 319 | count = 255U; 320 | } 321 | SWJ_Sequence(count, req); 322 | *res = DAP_OK; 323 | 324 | 325 | return 1; 326 | } 327 | 328 | // Process SWD Configure command and prepare response 329 | // request: pointer to request datas 330 | // response: pointer to response datas 331 | // return: number of bytes in response (lower 16 bits) 332 | // number of bytes in request (upper 16 bits) 333 | UINT8I turnaround; 334 | UINT8I data_phase; 335 | static UINT8I DAP_SWD_Configure(const UINT8 *req, UINT8 *res) 336 | { 337 | UINT8I value; 338 | 339 | value = *req; 340 | turnaround = (value & 0x03U) + 1U; 341 | data_phase = (value & 0x04U) ? 1U : 0U; 342 | 343 | *res = DAP_OK; 344 | return 1; 345 | } 346 | 347 | // Process SWD Sequence command and prepare response 348 | // request: pointer to request datas 349 | // response: pointer to response datas 350 | // return: number of bytes in response (lower 16 bits) 351 | // number of bytes in request (upper 16 bits) 352 | 353 | /* 354 | static UINT8I DAP_SWD_Sequence(const UINT8 *req, UINT8 *res) 355 | { 356 | UINT8I sequence_info; 357 | UINT8I sequence_count; 358 | UINT8I request_count; 359 | UINT8I response_count; 360 | UINT8I count; 361 | 362 | *res++ = DAP_OK; 363 | 364 | request_count = 1U; 365 | response_count = 1U; 366 | 367 | sequence_count = *req++; 368 | while (sequence_count--) 369 | { 370 | sequence_info = *req++; 371 | count = sequence_info & SWD_SEQUENCE_CLK; 372 | if (count == 0U) 373 | { 374 | count = 64U; 375 | } 376 | count = (count + 7U) / 8U; 377 | if ((sequence_info & SWD_SEQUENCE_DIN) != 0U) 378 | { 379 | SWD = 1;//PIN_SWDIO_OUT_DISABLE(); 380 | } 381 | else 382 | { 383 | SWD = 1;//PIN_SWDIO_OUT_ENABLE(); 384 | } 385 | SWD_Sequence(sequence_info, req, res); 386 | if (sequence_count == 0U) 387 | { 388 | SWD = 1;//PIN_SWDIO_OUT_ENABLE(); 389 | } 390 | if ((sequence_info & SWD_SEQUENCE_DIN) != 0U) 391 | { 392 | request_count++; 393 | res += count; 394 | response_count += count; 395 | } 396 | else 397 | { 398 | req += count; 399 | request_count += count + 1U; 400 | } 401 | } 402 | 403 | return response_count; 404 | } 405 | */ 406 | static UINT8I DAP_SWD_Sequence(const UINT8 *req, UINT8 *res) 407 | { 408 | UINT8I sequence_info; 409 | UINT8I sequence_count; 410 | //UINT8I request_count; 411 | UINT8I response_count; 412 | UINT8I count; 413 | 414 | *res++ = DAP_OK; 415 | 416 | //request_count = 1U; 417 | response_count = 1U; 418 | sequence_count = *req++; 419 | while (sequence_count--) 420 | { 421 | sequence_info = *req++; 422 | count = sequence_info & SWD_SEQUENCE_CLK; 423 | if (count == 0U) 424 | { 425 | count = 64U; 426 | } 427 | if ((sequence_info & SWD_SEQUENCE_DIN) != 0U) 428 | {//input 429 | SWD_IN_Sequence(count,res); 430 | count = (count + 7U) / 8U; 431 | //request_count++; 432 | res += count; 433 | response_count += count; 434 | } 435 | else 436 | {//output 437 | SWJ_Sequence(count,req); 438 | count = (count + 7U) / 8U; 439 | req += count; 440 | //request_count += count + 1U; 441 | } 442 | } 443 | return response_count; 444 | } 445 | 446 | // Process Transfer Configure command and prepare response 447 | // request: pointer to request datas 448 | // response: pointer to response datas 449 | // return: number of bytes in response (lower 16 bits) 450 | // number of bytes in request (upper 16 bits) 451 | UINT8I idle_cycles; 452 | UINT16I retry_count; 453 | UINT16I match_retry; 454 | static UINT8I DAP_TransferConfigure(const UINT8 *req, UINT8 *res) 455 | { 456 | 457 | idle_cycles = *(req + 0); 458 | retry_count = (UINT16I) * (req + 1) | 459 | (UINT16I)(*(req + 2) << 8); 460 | match_retry = (UINT16I) * (req + 3) | 461 | (UINT16I)(*(req + 4) << 8); 462 | 463 | *res = DAP_OK; 464 | return 1; 465 | } 466 | 467 | // Process SWD Transfer command and prepare response 468 | // request: pointer to request datas 469 | // response: pointer to response datas 470 | // return: number of bytes in response (lower 16 bits) 471 | // number of bytes in request (upper 16 bits) 472 | 473 | UINT8I datas[4]; 474 | UINT8I match_mask[4]; 475 | UINT8I match_value[4]; 476 | UINT8I DAP_TransferAbort = 0U; 477 | UINT8I request_count; 478 | UINT8I request_value; 479 | UINT8I response_count; 480 | UINT8I response_value; 481 | UINT16I retry; 482 | static UINT8I DAP_SWD_Transfer(const UINT8 *req, UINT8 *res) 483 | { 484 | const UINT8 *request_head; 485 | UINT8 *response_head; 486 | 487 | UINT8I post_read; 488 | UINT8I check_write; 489 | request_head = req; 490 | 491 | response_count = 0U; 492 | response_value = 0U; 493 | response_head = res; 494 | res += 2; 495 | 496 | DAP_TransferAbort = 0U; 497 | 498 | post_read = 0U; 499 | check_write = 0U; 500 | 501 | req++; // Ignore DAP index 502 | 503 | request_count = *req++; 504 | for (; request_count != 0U; request_count--) 505 | { 506 | request_value = *req++; 507 | if ((request_value & DAP_TRANSFER_RnW) != 0U) 508 | { 509 | // Read registers 510 | if (post_read) 511 | { 512 | // Read was posted before 513 | retry = retry_count; 514 | if ((request_value & (DAP_TRANSFER_APnDP | DAP_TRANSFER_MATCH_VALUE)) == DAP_TRANSFER_APnDP) 515 | { 516 | // Read previous AP datas and post next AP read 517 | do 518 | { 519 | response_value = SWD_Transfer(request_value, &datas); 520 | } 521 | while ((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort); 522 | } 523 | else 524 | { 525 | // Read previous AP datas 526 | do 527 | { 528 | response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, &datas); 529 | } 530 | while ((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort); 531 | post_read = 0U; 532 | } 533 | if (response_value != DAP_TRANSFER_OK) 534 | { 535 | break; 536 | } 537 | // Store previous AP datas 538 | *res++ = (UINT8)datas[0]; 539 | *res++ = (UINT8)datas[1]; 540 | *res++ = (UINT8)datas[2]; 541 | *res++ = (UINT8)datas[3]; 542 | } 543 | if ((request_value & DAP_TRANSFER_MATCH_VALUE) != 0U) 544 | { 545 | // Read with value match 546 | match_value[0] = (UINT8)(*(req + 0)); 547 | match_value[1] = (UINT8)(*(req + 1)); 548 | match_value[2] = (UINT8)(*(req + 2)); 549 | match_value[3] = (UINT8)(*(req + 3)); 550 | req += 4; 551 | match_retry = match_retry; 552 | if ((request_value & DAP_TRANSFER_APnDP) != 0U) 553 | { 554 | // Post AP read 555 | retry = retry_count; 556 | do 557 | { 558 | response_value = SWD_Transfer(request_value, NULL); 559 | } 560 | while ((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort); 561 | if (response_value != DAP_TRANSFER_OK) 562 | { 563 | break; 564 | } 565 | } 566 | do 567 | { 568 | // Read registers until its value matches or retry counter expires 569 | retry = retry_count; 570 | do 571 | { 572 | response_value = SWD_Transfer(request_value, &datas); 573 | } 574 | while ((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort); 575 | if (response_value != DAP_TRANSFER_OK) 576 | { 577 | break; 578 | } 579 | } 580 | while (((datas[0] & match_mask[0]) != match_value[0] || 581 | (datas[1] & match_mask[1]) != match_value[1] || 582 | (datas[2] & match_mask[2]) != match_value[2] || 583 | (datas[3] & match_mask[3]) != match_value[3]) && 584 | match_retry-- && !DAP_TransferAbort); 585 | if ((datas[0] & match_mask[0]) != match_value[0] || 586 | (datas[1] & match_mask[1]) != match_value[1] || 587 | (datas[2] & match_mask[2]) != match_value[2] || 588 | (datas[3] & match_mask[3]) != match_value[3]) 589 | { 590 | response_value |= DAP_TRANSFER_MISMATCH; 591 | } 592 | if (response_value != DAP_TRANSFER_OK) 593 | { 594 | break; 595 | } 596 | } 597 | else 598 | { 599 | // Normal read 600 | retry = retry_count; 601 | if ((request_value & DAP_TRANSFER_APnDP) != 0U) 602 | { 603 | // Read AP registers 604 | if (post_read == 0U) 605 | { 606 | // Post AP read 607 | do 608 | { 609 | response_value = SWD_Transfer(request_value, NULL); 610 | } 611 | while ((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort); 612 | if (response_value != DAP_TRANSFER_OK) 613 | { 614 | break; 615 | } 616 | post_read = 1U; 617 | } 618 | } 619 | else 620 | { 621 | // Read DP register 622 | do 623 | { 624 | response_value = SWD_Transfer(request_value, &datas); 625 | } 626 | while ((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort); 627 | if (response_value != DAP_TRANSFER_OK) 628 | { 629 | break; 630 | } 631 | 632 | // Store datas 633 | *res++ = datas[0]; 634 | *res++ = datas[1]; 635 | *res++ = datas[2]; 636 | *res++ = datas[3]; 637 | } 638 | } 639 | check_write = 0U; 640 | } 641 | else 642 | { 643 | // Write register 644 | if (post_read) 645 | { 646 | // Read previous datas 647 | retry = retry_count; 648 | do 649 | { 650 | response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, &datas); 651 | } 652 | while ((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort); 653 | if (response_value != DAP_TRANSFER_OK) 654 | { 655 | break; 656 | } 657 | // Store previous datas 658 | *res++ = datas[0]; 659 | *res++ = datas[1]; 660 | *res++ = datas[2]; 661 | *res++ = datas[3]; 662 | post_read = 0U; 663 | } 664 | // Load datas 665 | datas[0] = (UINT8)(*(req + 0)); 666 | datas[1] = (UINT8)(*(req + 1)); 667 | datas[2] = (UINT8)(*(req + 2)); 668 | datas[3] = (UINT8)(*(req + 3)); 669 | req += 4; 670 | if ((request_value & DAP_TRANSFER_MATCH_MASK) != 0U) 671 | { 672 | // Write match mask 673 | match_mask[0] = datas[0]; 674 | match_mask[1] = datas[1]; 675 | match_mask[2] = datas[2]; 676 | match_mask[3] = datas[3]; 677 | response_value = DAP_TRANSFER_OK; 678 | } 679 | else 680 | { 681 | // Write DP/AP register 682 | retry = retry_count; 683 | do 684 | { 685 | response_value = SWD_Transfer(request_value, &datas); 686 | } 687 | while ((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort); 688 | if (response_value != DAP_TRANSFER_OK) 689 | { 690 | break; 691 | } 692 | 693 | check_write = 1U; 694 | } 695 | } 696 | response_count++; 697 | if (DAP_TransferAbort) 698 | { 699 | break; 700 | } 701 | } 702 | 703 | for (; request_count != 0U; request_count--) 704 | { 705 | // Process canceled requests 706 | request_value = *req++; 707 | if ((request_value & DAP_TRANSFER_RnW) != 0U) 708 | { 709 | // Read register 710 | if ((request_value & DAP_TRANSFER_MATCH_VALUE) != 0U) 711 | { 712 | // Read with value match 713 | req += 4; 714 | } 715 | } 716 | else 717 | { 718 | // Write register 719 | req += 4; 720 | } 721 | } 722 | 723 | if (response_value == DAP_TRANSFER_OK) 724 | { 725 | if (post_read) 726 | { 727 | // Read previous datas 728 | retry = retry_count; 729 | do 730 | { 731 | response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, &datas); 732 | } 733 | while ((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort); 734 | if (response_value != DAP_TRANSFER_OK) 735 | { 736 | goto end; 737 | } 738 | // Store previous datas 739 | *res++ = (UINT8)datas[0]; 740 | *res++ = (UINT8)datas[1]; 741 | *res++ = (UINT8)datas[2]; 742 | *res++ = (UINT8)datas[3]; 743 | } 744 | else if (check_write) 745 | { 746 | // Check last write 747 | retry = retry_count; 748 | do 749 | { 750 | response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, NULL); 751 | } 752 | while ((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort); 753 | } 754 | } 755 | 756 | end: 757 | *(response_head + 0) = (UINT8)response_count; 758 | *(response_head + 1) = (UINT8)response_value; 759 | 760 | return ((UINT8I)(res - response_head)); 761 | } 762 | 763 | // Process Dummy Transfer command and prepare response 764 | // request: pointer to request datas 765 | // response: pointer to response datas 766 | // return: number of bytes in response (lower 16 bits) 767 | // number of bytes in request (upper 16 bits) 768 | //static UINT8 DAP_Dummy_Transfer(const UINT8 *req, UINT8 *res) 769 | //{ 770 | // UINT8 *request_head; 771 | // UINT8 request_count; 772 | // UINT8 request_value; 773 | 774 | // request_head = req; 775 | 776 | // req++; // Ignore DAP index 777 | 778 | // request_count = *req++; 779 | 780 | // for (; request_count != 0U; request_count--) 781 | // { 782 | // // Process dummy requests 783 | // request_value = *req++; 784 | // if ((request_value & DAP_TRANSFER_RnW) != 0U) 785 | // { 786 | // // Read registers 787 | // if ((request_value & DAP_TRANSFER_MATCH_VALUE) != 0U) 788 | // { 789 | // // Read with value match 790 | // req += 4; 791 | // } 792 | // } 793 | // else 794 | // { 795 | // // Write registers 796 | // req += 4; 797 | // } 798 | // } 799 | 800 | // *(res + 0) = 0U; // res count 801 | // *(res + 1) = 0U; // res value 802 | 803 | // return 2; 804 | //} 805 | 806 | // Process Transfer command and prepare response 807 | // request: pointer to request datas 808 | // response: pointer to response datas 809 | // return: number of bytes in response (lower 16 bits) 810 | // number of bytes in request (upper 16 bits) 811 | static UINT8I DAP_Transfer(const UINT8 *req, UINT8 *res) 812 | { 813 | UINT8I num = 0; 814 | 815 | // switch (debug_port) 816 | // { 817 | // case DAP_PORT_SWD: 818 | num = DAP_SWD_Transfer(req, res); 819 | // break; 820 | // default: 821 | // num = DAP_Dummy_Transfer(req, res); 822 | // break; 823 | // } 824 | 825 | return (num); 826 | } 827 | 828 | // Process SWD Transfer Block command and prepare response 829 | // request: pointer to request datas 830 | // response: pointer to response datas 831 | // return: number of bytes in response 832 | static UINT8I DAP_SWD_TransferBlock(const UINT8 *req, UINT8 *res) 833 | { 834 | 835 | UINT8 *response_head; 836 | 837 | response_count = 0U; 838 | response_value = 0U; 839 | response_head = res; 840 | res += 3; 841 | 842 | DAP_TransferAbort = 0U; 843 | 844 | req++; // Ignore DAP index 845 | 846 | request_count = (UINT16)(*(req + 0) << 0) | 847 | (UINT16)(*(req + 1) << 8); 848 | req += 2; 849 | if (request_count == 0U) 850 | { 851 | goto end; 852 | } 853 | 854 | request_value = *req++; 855 | if ((request_value & DAP_TRANSFER_RnW) != 0U) 856 | { 857 | // Read register block 858 | if ((request_value & DAP_TRANSFER_APnDP) != 0U) 859 | { 860 | // Post AP read 861 | retry = retry_count; 862 | do 863 | { 864 | response_value = SWD_Transfer(request_value, NULL); 865 | } 866 | while ((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort); 867 | if (response_value != DAP_TRANSFER_OK) 868 | { 869 | goto end; 870 | } 871 | } 872 | while (request_count--) 873 | { 874 | // Read DP/AP register 875 | if ((request_count == 0U) && ((request_value & DAP_TRANSFER_APnDP) != 0U)) 876 | { 877 | // Last AP read 878 | request_value = DP_RDBUFF | DAP_TRANSFER_RnW; 879 | } 880 | retry = retry_count; 881 | do 882 | { 883 | response_value = SWD_Transfer(request_value, &datas); 884 | } 885 | while ((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort); 886 | if (response_value != DAP_TRANSFER_OK) 887 | { 888 | goto end; 889 | } 890 | // Store datas 891 | *res++ = (UINT8)datas[0]; 892 | *res++ = (UINT8)datas[1]; 893 | *res++ = (UINT8)datas[2]; 894 | *res++ = (UINT8)datas[3]; 895 | response_count++; 896 | } 897 | } 898 | else 899 | { 900 | // Write register block 901 | while (request_count--) 902 | { 903 | // Load datas 904 | datas[0] = (UINT8)(*(req + 0)); 905 | datas[1] = (UINT8)(*(req + 1)); 906 | datas[2] = (UINT8)(*(req + 2)); 907 | datas[3] = (UINT8)(*(req + 3)); 908 | 909 | req += 4; 910 | // Write DP/AP register 911 | retry = retry_count; 912 | do 913 | { 914 | response_value = SWD_Transfer(request_value, &datas); 915 | } 916 | while ((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort); 917 | if (response_value != DAP_TRANSFER_OK) 918 | { 919 | goto end; 920 | } 921 | response_count++; 922 | } 923 | // Check last write 924 | retry = retry_count; 925 | do 926 | { 927 | response_value = SWD_Transfer(DP_RDBUFF | DAP_TRANSFER_RnW, NULL); 928 | } 929 | while ((response_value == DAP_TRANSFER_WAIT) && retry-- && !DAP_TransferAbort); 930 | } 931 | 932 | end: 933 | *(response_head + 0) = (UINT8)(response_count >> 0); 934 | *(response_head + 1) = (UINT8)(response_count >> 8); 935 | *(response_head + 2) = (UINT8)response_value; 936 | 937 | return ((UINT8I)(res - response_head)); 938 | } 939 | 940 | // Process Transfer Block command and prepare response 941 | // request: pointer to request datas 942 | // response: pointer to response datas 943 | // return: number of bytes in response (lower 16 bits) 944 | // number of bytes in request (upper 16 bits) 945 | static UINT8I DAP_TransferBlock(const UINT8 *req, UINT8 *res) 946 | { 947 | UINT8I num; 948 | 949 | switch (debug_port) 950 | { 951 | case DAP_PORT_SWD: 952 | num = DAP_SWD_TransferBlock(req, res); 953 | break; 954 | 955 | default: 956 | *(res + 0) = 0U; // res count [7:0] 957 | *(res + 1) = 0U; // res count[15:8] 958 | *(res + 2) = 0U; // res value 959 | num = 3U; 960 | break; 961 | } 962 | 963 | if ((*(req + 3) & DAP_TRANSFER_RnW) != 0U) 964 | { 965 | // Read registers block 966 | num |= 4U << 16; 967 | } 968 | else 969 | { 970 | // Write registers block 971 | num |= (4U + (((UINT8I)(*(req + 1)) | (UINT8I)(*(req + 2) << 8)) * 4)) << 16; 972 | } 973 | 974 | return (num); 975 | } 976 | 977 | // Process SWD Write ABORT command and prepare response 978 | // request: pointer to request datas 979 | // response: pointer to response datas 980 | // return: number of bytes in response 981 | static UINT8I DAP_SWD_WriteAbort(const UINT8 *req, UINT8 *res) 982 | { 983 | // Load datas (Ignore DAP index) 984 | datas[0] = (UINT8I)(*(req + 1)); 985 | datas[1] = (UINT8I)(*(req + 2)); 986 | datas[2] = (UINT8I)(*(req + 3)); 987 | datas[3] = (UINT8I)(*(req + 4)); 988 | 989 | // Write Abort register 990 | SWD_Transfer(DP_ABORT, &datas); 991 | 992 | *res = DAP_OK; 993 | return (1U); 994 | } 995 | 996 | // Process Write ABORT command and prepare response 997 | // request: pointer to request datas 998 | // response: pointer to response datas 999 | // return: number of bytes in response (lower 16 bits) 1000 | // number of bytes in request (upper 16 bits) 1001 | static UINT8I DAP_WriteAbort(const UINT8 *req, UINT8 *res) 1002 | { 1003 | UINT8I num; 1004 | 1005 | switch (debug_port) 1006 | { 1007 | case DAP_PORT_SWD: 1008 | num = DAP_SWD_WriteAbort(req, res); 1009 | break; 1010 | 1011 | default: 1012 | *res = DAP_ERROR; 1013 | num = 1U; 1014 | break; 1015 | } 1016 | return num; 1017 | } 1018 | 1019 | // DAP Thread. 1020 | void DAP_Thread(void) 1021 | { 1022 | UINT8I num; 1023 | 1024 | if (Ep2Oi != Ep2Oo) 1025 | { 1026 | PUINT8 req = &Ep2BufferO[Ep2Oo]; 1027 | PUINT8 res = &Ep3BufferI[Ep3Ii]; 1028 | Ep2Oo += 64; 1029 | 1030 | 1031 | *res++ = *req; 1032 | switch (*req++) 1033 | { 1034 | case ID_DAP_Transfer: 1035 | num = DAP_Transfer(req, res); 1036 | break; 1037 | 1038 | case ID_DAP_TransferBlock: 1039 | num = DAP_TransferBlock(req, res); 1040 | break; 1041 | 1042 | case ID_DAP_Info: 1043 | num = DAP_Info(*req, res + 1); 1044 | *res = (UINT8)num; 1045 | num++; 1046 | break; 1047 | 1048 | case ID_DAP_HostStatus: 1049 | num = DAP_HostStatus(req, res); 1050 | break; 1051 | 1052 | case ID_DAP_Connect: 1053 | num = DAP_Connect(req, res); 1054 | break; 1055 | 1056 | case ID_DAP_Disconnect: 1057 | num = DAP_Disconnect(res); 1058 | break; 1059 | 1060 | case ID_DAP_Delay: 1061 | num = DAP_Delay(req, res); 1062 | break; 1063 | 1064 | case ID_DAP_ResetTarget: 1065 | num = DAP_ResetTarget(res); 1066 | break; 1067 | 1068 | case ID_DAP_SWJ_Pins: 1069 | num = DAP_SWJ_Pins(req, res); 1070 | break; 1071 | 1072 | case ID_DAP_SWJ_Clock: 1073 | num = DAP_SWJ_Clock(req, res); 1074 | break; 1075 | 1076 | case ID_DAP_SWJ_Sequence: 1077 | num = DAP_SWJ_Sequence(req, res); 1078 | break; 1079 | 1080 | case ID_DAP_SWD_Configure: 1081 | num = DAP_SWD_Configure(req, res); 1082 | break; 1083 | 1084 | case ID_DAP_SWD_Sequence: 1085 | num = DAP_SWD_Sequence(req, res); 1086 | break; 1087 | 1088 | case ID_DAP_TransferConfigure: 1089 | num = DAP_TransferConfigure(req, res); 1090 | break; 1091 | 1092 | case ID_DAP_WriteABORT: 1093 | num = DAP_WriteAbort(req, res); 1094 | break; 1095 | 1096 | case ID_DAP_ExecuteCommands: 1097 | case ID_DAP_QueueCommands: 1098 | default: 1099 | *(res - 1) = ID_DAP_Invalid; 1100 | num = 1; 1101 | break; 1102 | } 1103 | 1104 | Ep3Is[0]/*(Ep3Ii>>6)]*/ = num + 1; 1105 | Ep3Ii += 64; 1106 | } 1107 | } 1108 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | 635 | Copyright (C) 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | Copyright (C) 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | --------------------------------------------------------------------------------