semihost server example program

Dependencies:   SWD mbed USBLocalFileSystem BaseDAP USBDAP

/media/uploads/va009039/kl46z-lpc800-360x480.jpg

LPCXpresso
LPC11U68
LPCXpresso
LPC1549
FRDM-KL46ZEA LPC4088 QSB
app-board
LPC1768
app-board
LPC810LPC1114FN28
serverserverserverserverserverclientclient
SWDIOD12D12D12p25p21p4(P0_2)p12
SWCLKD10D10D10p26p22p3(P0_3)p3
nRESET
*option
D6D6D6p34p30p1(P0_5)p23
GNDGNDGNDGNDp1p1p7p22
3.3VP3V3P3V3P3V3p44p40p6p21
flash writeSW2(P0_1)SW3(P1_9)SW1p14
joystick
center
p14
joystick
center

client example:

Import programlpc810-semihost_helloworld

semihost client example program

Committer:
va009039
Date:
Sun Jun 22 12:04:16 2014 +0000
Revision:
18:5ed1759e863b
Parent:
5:2774358f5e4f
add LPC11U68 interface.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
va009039 5:2774358f5e4f 1 // test1_BaseDAP.cpp 2013/9/14
va009039 5:2774358f5e4f 2 #if 0
va009039 5:2774358f5e4f 3 #include "BaseDAP.h"
va009039 5:2774358f5e4f 4 #include "mytest.h"
va009039 5:2774358f5e4f 5 #include "mydebug.h"
va009039 5:2774358f5e4f 6
va009039 5:2774358f5e4f 7 Serial pc(USBTX, USBRX);
va009039 5:2774358f5e4f 8
va009039 5:2774358f5e4f 9 SWD* swd;
va009039 5:2774358f5e4f 10 BaseDAP* dap;
va009039 5:2774358f5e4f 11 uint8_t recv[64];
va009039 5:2774358f5e4f 12
va009039 5:2774358f5e4f 13 TEST(DAP1,setup) {
va009039 5:2774358f5e4f 14 #ifdef TARGET_LPC1768
va009039 5:2774358f5e4f 15 swd = new SWD(p21,p22,p17); // SWDIO(dp12),SWCLK(dp3),nReset(dp23)
va009039 5:2774358f5e4f 16 #endif
va009039 5:2774358f5e4f 17 #ifdef TARGET_KL25Z
va009039 5:2774358f5e4f 18 swd = new SWD(PTB8,PTB9,PTB10); // SWDIO(dp12),SWCLK(dp3),nReset(dp23)
va009039 5:2774358f5e4f 19 #endif
va009039 5:2774358f5e4f 20 dap = new BaseDAP(swd);
va009039 5:2774358f5e4f 21 }
va009039 5:2774358f5e4f 22
va009039 5:2774358f5e4f 23 TEST(DAP1,Info_PRODUCT) {
va009039 5:2774358f5e4f 24 const uint8_t req[] = {0x00,0x02};
va009039 5:2774358f5e4f 25 const uint8_t res[] = {0x00,0x00};
va009039 5:2774358f5e4f 26 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 27 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 28 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 29 }
va009039 5:2774358f5e4f 30
va009039 5:2774358f5e4f 31 TEST(DAP1,Info_SER_NUM) {
va009039 5:2774358f5e4f 32 const uint8_t req[] = {0x00,0x03};
va009039 5:2774358f5e4f 33 const uint8_t res[] = {0x00,0x00};
va009039 5:2774358f5e4f 34 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 35 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 36 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 37 }
va009039 5:2774358f5e4f 38
va009039 5:2774358f5e4f 39 TEST(DAP1,Info_FW_VER) {
va009039 5:2774358f5e4f 40 const uint8_t req[] = {0x00,0x04};
va009039 5:2774358f5e4f 41 const uint8_t res[] = {0x00,0x04,0x31,0x2e,0x30,0x00};
va009039 5:2774358f5e4f 42 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 43 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 44 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 45 }
va009039 5:2774358f5e4f 46
va009039 5:2774358f5e4f 47 TEST(DAP1,Info_VENDOR) {
va009039 5:2774358f5e4f 48 const uint8_t req[] = {0x00,0x01};
va009039 5:2774358f5e4f 49 const uint8_t res[] = {0x00,0x00};
va009039 5:2774358f5e4f 50 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 51 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 52 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 53 }
va009039 5:2774358f5e4f 54
va009039 5:2774358f5e4f 55 TEST(DAP1,Info_PRODUCT_2) {
va009039 5:2774358f5e4f 56 const uint8_t req[] = {0x00,0x02};
va009039 5:2774358f5e4f 57 const uint8_t res[] = {0x00,0x00};
va009039 5:2774358f5e4f 58 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 59 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 60 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 61 }
va009039 5:2774358f5e4f 62
va009039 5:2774358f5e4f 63 TEST(DAP1,Info_PACKET_SIZE) {
va009039 5:2774358f5e4f 64 const uint8_t req[] = {0x00,0xff};
va009039 5:2774358f5e4f 65 const uint8_t res[] = {0x00,0x02,0x40,0x00};
va009039 5:2774358f5e4f 66 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 67 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 68 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 69 }
va009039 5:2774358f5e4f 70
va009039 5:2774358f5e4f 71 TEST(DAP1,Info_PACKET_COUNT) {
va009039 5:2774358f5e4f 72 const uint8_t req[] = {0x00,0xfe};
va009039 5:2774358f5e4f 73 const uint8_t res[] = {0x00,0x01,0x01};
va009039 5:2774358f5e4f 74 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 75 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 76 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 77 }
va009039 5:2774358f5e4f 78
va009039 5:2774358f5e4f 79 TEST(DAP1,Connect_SWD) {
va009039 5:2774358f5e4f 80 const uint8_t req[] = {0x02,0x01};
va009039 5:2774358f5e4f 81 const uint8_t res[] = {0x02,0x01};
va009039 5:2774358f5e4f 82 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 83 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 84 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 85 }
va009039 5:2774358f5e4f 86
va009039 5:2774358f5e4f 87 TEST(DAP1,SWJ_Clock_5000_Hz) {
va009039 5:2774358f5e4f 88 const uint8_t req[] = {0x11,0x88,0x13,0x00,0x00};
va009039 5:2774358f5e4f 89 const uint8_t res[] = {0x11,0x00};
va009039 5:2774358f5e4f 90 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 91 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 92 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 93 }
va009039 5:2774358f5e4f 94
va009039 5:2774358f5e4f 95 TEST(DAP1,TransferConfigure) {
va009039 5:2774358f5e4f 96 const uint8_t req[] = {0x04,0x00,0x64,0x00,0x00,0x00};
va009039 5:2774358f5e4f 97 const uint8_t res[] = {0x04,0x00};
va009039 5:2774358f5e4f 98 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 99 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 100 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 101 }
va009039 5:2774358f5e4f 102
va009039 5:2774358f5e4f 103 TEST(DAP1,SWD_Configure) {
va009039 5:2774358f5e4f 104 const uint8_t req[] = {0x13,0x00};
va009039 5:2774358f5e4f 105 const uint8_t res[] = {0x13,0x00};
va009039 5:2774358f5e4f 106 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 107 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 108 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 109 }
va009039 5:2774358f5e4f 110
va009039 5:2774358f5e4f 111 TEST(DAP1,LED_DEBUGGER_CONNECTED_ON) {
va009039 5:2774358f5e4f 112 const uint8_t req[] = {0x01,0x00,0x01};
va009039 5:2774358f5e4f 113 const uint8_t res[] = {0x01,0x00};
va009039 5:2774358f5e4f 114 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 115 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 116 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 117 }
va009039 5:2774358f5e4f 118
va009039 5:2774358f5e4f 119 TEST(DAP1,SWJ_Sequence_1_51) {
va009039 5:2774358f5e4f 120 const uint8_t req[] = {0x12,0x33, 0xff,0xff,0xff,0xff,0xff,0xff,0xff};
va009039 5:2774358f5e4f 121 const uint8_t res[] = {0x12,0x00};
va009039 5:2774358f5e4f 122 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 123 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 124 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 125 }
va009039 5:2774358f5e4f 126
va009039 5:2774358f5e4f 127 TEST(DAP1,SWJ_Sequence_2_16) {
va009039 5:2774358f5e4f 128 const uint8_t req[] = {0x12,0x10, 0x9e,0xe7};
va009039 5:2774358f5e4f 129 const uint8_t res[] = {0x12,0x00};
va009039 5:2774358f5e4f 130 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 131 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 132 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 133 }
va009039 5:2774358f5e4f 134
va009039 5:2774358f5e4f 135 TEST(DAP1,SWJ_Sequence_3_51) {
va009039 5:2774358f5e4f 136 const uint8_t req[] = {0x12,0x33, 0xff,0xff,0xff,0xff,0xff,0xff,0xff};
va009039 5:2774358f5e4f 137 const uint8_t res[] = {0x12,0x00};
va009039 5:2774358f5e4f 138 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 139 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 140 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 141 }
va009039 5:2774358f5e4f 142
va009039 5:2774358f5e4f 143 TEST(DAP1,SWJ_Sequence_4_8) {
va009039 5:2774358f5e4f 144 const uint8_t req[] = {0x12,0x08, 0x00};
va009039 5:2774358f5e4f 145 const uint8_t res[] = {0x12,0x00};
va009039 5:2774358f5e4f 146 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 147 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 148 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 149 }
va009039 5:2774358f5e4f 150
va009039 5:2774358f5e4f 151 TEST(DAP1,Transfer_DP_IDCODE) {
va009039 5:2774358f5e4f 152 const uint8_t req[] = {0x05, 0x00, 0x01, 0x02};
va009039 5:2774358f5e4f 153 const uint8_t res[] = {0x05, 0x01, 0x01, 0x77,0x14,0xb1,0x0b};
va009039 5:2774358f5e4f 154 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 155 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 156 DBG_HEX(recv, len);
va009039 5:2774358f5e4f 157 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 158 }
va009039 5:2774358f5e4f 159
va009039 5:2774358f5e4f 160 TEST(DAP1,Transfer_DP_SELECT) {
va009039 5:2774358f5e4f 161 const uint8_t req[] = {0x05, 0x00, 0x01, 0x08, 0x00,0x00,0x00,0x00};
va009039 5:2774358f5e4f 162 //SWD: DP_SELECT 00000000 request=08(DP nW 8) wdata=00000000 rdata=00000000 ack=01
va009039 5:2774358f5e4f 163 //SWD: DP_RDBUFF 10008000 request=0e(DP R c) wdata=ffffffff rdata=10008000 ack=01
va009039 5:2774358f5e4f 164 const uint8_t res[] = {0x05, 0x01, 0x01};
va009039 5:2774358f5e4f 165 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 166 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 167 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 168 }
va009039 5:2774358f5e4f 169
va009039 5:2774358f5e4f 170 TEST(DAP1,Transfer_DP_CTRL_STAT_W) {
va009039 5:2774358f5e4f 171 const uint8_t req[] = {0x05,0x00, 0x01, 0x04, 0x00,0x00,0x00,0x50};
va009039 5:2774358f5e4f 172 //SWD: DP_CTRL_STAT W 50000000 request=04(DP nW 4) wdata=50000000 rdata=50000000 ack=01
va009039 5:2774358f5e4f 173 //SWD: DP_RDBUFF 10008000 request=0e(DP R c) wdata=ffffffff rdata=10008000 ack=01
va009039 5:2774358f5e4f 174 const uint8_t res[] = {0x05,0x01, 0x01};
va009039 5:2774358f5e4f 175 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 176 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 177 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 178 }
va009039 5:2774358f5e4f 179
va009039 5:2774358f5e4f 180 TEST(DAP1,Transfer_DP_CTRL_STAT_R) {
va009039 5:2774358f5e4f 181 const uint8_t req[] = {0x05,0x00, 0x01, 0x06};
va009039 5:2774358f5e4f 182 //SWD: DP_CTRL_STAT R f0000040 request=06(DP R 4) wdata=00000040 rdata=f0000040 ack=01
va009039 5:2774358f5e4f 183 const uint8_t res[] = {0x05,0x01, 0x01, 0x40,0x00,0x00,0xf0};
va009039 5:2774358f5e4f 184 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 185 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 186 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 187 }
va009039 5:2774358f5e4f 188
va009039 5:2774358f5e4f 189 TEST(DAP1,WriteABORT) {
va009039 5:2774358f5e4f 190 const uint8_t req[] = {0x08,0x00,0x1e,0x00,0x00,0x00};
va009039 5:2774358f5e4f 191 //SWD: DP_ABORT 0000001e request=00(DP nW 0) wdata=0000001e rdata=0000001e ack=01
va009039 5:2774358f5e4f 192 const uint8_t res[] = {0x08,0x00};
va009039 5:2774358f5e4f 193 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 194 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 195 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 196 }
va009039 5:2774358f5e4f 197
va009039 5:2774358f5e4f 198 TEST(DAP1,Transfer_DP_CTRL_STAT_W_2) {
va009039 5:2774358f5e4f 199 const uint8_t req[] = {0x05,0x00, 0x01, 0x04, 0x00,0x00,0x00,0x54};
va009039 5:2774358f5e4f 200 //SWD: DP_CTRL_STAT W 54000000 request=04(DP nW 4) wdata=54000000 rdata=54000000 ack=01
va009039 5:2774358f5e4f 201 //SWD: DP_RDBUFF 10008000 request=0e(DP R c) wdata=ffffffff rdata=10008000 ack=01
va009039 5:2774358f5e4f 202 const uint8_t res[] = {0x05,0x01, 0x01};
va009039 5:2774358f5e4f 203 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 204 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 205 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 206 }
va009039 5:2774358f5e4f 207
va009039 5:2774358f5e4f 208 TEST(DAP1,Transfer_DP_CTRL_STAT_W_3) {
va009039 5:2774358f5e4f 209 const uint8_t req[] = {0x05,0x00, 0x01, 0x04, 0x00,0x0f,0x00,0x50};
va009039 5:2774358f5e4f 210 //SWD: DP_CTRL_STAT W 50000f00 request=04(DP nW 4) wdata=50000f00 rdata=50000f00 ack=01
va009039 5:2774358f5e4f 211 //SWD: DP_RDBUFF 10008000 request=0e(DP R c) wdata=ffffffff rdata=10008000 ack=01
va009039 5:2774358f5e4f 212 const uint8_t res[] = {0x05,0x01, 0x01};
va009039 5:2774358f5e4f 213 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 214 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 215 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 216 }
va009039 5:2774358f5e4f 217
va009039 5:2774358f5e4f 218 TEST(DAP1,Transfer_AP_CSW) {
va009039 5:2774358f5e4f 219 const uint8_t req[] = {0x05,0x00, 0x01, 0x01, 0x52,0x00,0x00,0x23};
va009039 5:2774358f5e4f 220 //SWD: AP_CSW W 23000052 request=01(AP nW 0) wdata=23000052 rdata=23000052 ack=01
va009039 5:2774358f5e4f 221 //SWD: DP_RDBUFF 10008000 request=0e(DP R c) wdata=ffffffff rdata=10008000 ack=01
va009039 5:2774358f5e4f 222 const uint8_t res[] = {0x05,0x01, 0x01};
va009039 5:2774358f5e4f 223 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 224 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 225 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 226 }
va009039 5:2774358f5e4f 227
va009039 5:2774358f5e4f 228 TEST(DAP1,Transfer_AP_TAR) {
va009039 5:2774358f5e4f 229 const uint8_t req[] = {0x05,0x00, 0x01, 0x05, 0xf0,0xff,0x0f,0xe0};
va009039 5:2774358f5e4f 230 //SWD: AP_TAR W e00ffff0 request=05(AP nW 4) wdata=e00ffff0 rdata=e00ffff0 ack=01
va009039 5:2774358f5e4f 231 //SWD: DP_RDBUFF 10008000 request=0e(DP R c) wdata=ffffffff rdata=10008000 ack=01
va009039 5:2774358f5e4f 232 const uint8_t res[] = {0x05,0x01, 0x01};
va009039 5:2774358f5e4f 233 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 234 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 235 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 236 }
va009039 5:2774358f5e4f 237
va009039 5:2774358f5e4f 238 TEST(DAP1,TransferBlock_AP_DRW_R) {
va009039 5:2774358f5e4f 239 const uint8_t req[] = {0x06,0x00, 0x04,0x00, 0x0f};
va009039 5:2774358f5e4f 240 //SWD: AP_DRW R 10008000 request=0f(AP R c) wdata=ffffffff rdata=10008000 ack=01
va009039 5:2774358f5e4f 241 //SWD: AP_DRW R 0000000d request=0f(AP R c) wdata=00000006 rdata=0000000d ack=01
va009039 5:2774358f5e4f 242 //SWD: AP_DRW R 00000010 request=0f(AP R c) wdata=0000000d rdata=00000010 ack=01
va009039 5:2774358f5e4f 243 //SWD: AP_DRW R 00000005 request=0f(AP R c) wdata=00000010 rdata=00000005 ack=01
va009039 5:2774358f5e4f 244 //SWD: DP_RDBUFF 000000b1 request=0e(DP R c) wdata=00000005 rdata=000000b1 ack=01
va009039 5:2774358f5e4f 245 const uint8_t res[] = {0x06, 0x04,0x00, 0x01,
va009039 5:2774358f5e4f 246 0x0d,0x00,0x00,0x00, 0x10,0x00,0x00,0x00, 0x05,0x00,0x00,0x00, 0xb1,0x00,0x00,0x00};
va009039 5:2774358f5e4f 247 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 248 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 249 ASSERT_TRUE(memcmp(recv, res, 4) == 0);
va009039 5:2774358f5e4f 250 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 251 }
va009039 5:2774358f5e4f 252
va009039 5:2774358f5e4f 253 TEST(DAP1,SWJ_Pins_nRESET_OFF) {
va009039 5:2774358f5e4f 254 const uint8_t req[] = {0x10,0x00,0x80,0x00,0x00,0x00,0x00,};
va009039 5:2774358f5e4f 255 //DAP: SWJ_Pins wait: 0 us nRESET OFF
va009039 5:2774358f5e4f 256 const uint8_t res[] = {0x10,0x03};
va009039 5:2774358f5e4f 257 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 258 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 259 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 260 }
va009039 5:2774358f5e4f 261
va009039 5:2774358f5e4f 262 TEST(DAP1,SWJ_Pins_nRESET_ON) {
va009039 5:2774358f5e4f 263 const uint8_t req[] = {0x10,0x80,0x80,0x00,0x00,0x00,0x00,};
va009039 5:2774358f5e4f 264 //DAP: SWJ_Pins wait: 0 us nRESET ON
va009039 5:2774358f5e4f 265 const uint8_t res[] = {0x10,0x83};
va009039 5:2774358f5e4f 266 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 267 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 268 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 269 }
va009039 5:2774358f5e4f 270
va009039 5:2774358f5e4f 271 TEST(DAP1,SWJ_Pins) {
va009039 5:2774358f5e4f 272 const uint8_t req[] = {0x10,0x00,0x00,0x00,0x00,0x00,0x00,};
va009039 5:2774358f5e4f 273 //DAP: SWJ_Pins wait: 0 us nRESET ON
va009039 5:2774358f5e4f 274 const uint8_t res[] = {0x10,0x83};
va009039 5:2774358f5e4f 275 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 276 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 277 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 278 }
va009039 5:2774358f5e4f 279
va009039 5:2774358f5e4f 280 TEST(DAP1,Disconnect) {
va009039 5:2774358f5e4f 281 const uint8_t req[] = {0x03};
va009039 5:2774358f5e4f 282 const uint8_t res[] = {0x03,0x00};
va009039 5:2774358f5e4f 283 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 284 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 285 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 286 }
va009039 5:2774358f5e4f 287
va009039 5:2774358f5e4f 288 TEST(DAP1,LED_DEBUGGER_CONNECTED_OFF) {
va009039 5:2774358f5e4f 289 const uint8_t req[] = {0x01,0x00,0x00};
va009039 5:2774358f5e4f 290 const uint8_t res[] = {0x01,0x00};
va009039 5:2774358f5e4f 291 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 292 ASSERT_TRUE(len == sizeof(res));
va009039 5:2774358f5e4f 293 ASSERT_TRUE(memcmp(recv, res, len) == 0);
va009039 5:2774358f5e4f 294 }
va009039 5:2774358f5e4f 295
va009039 5:2774358f5e4f 296 TEST(DAP1,Vender0) {
va009039 5:2774358f5e4f 297 const uint8_t req[] = {0x80};
va009039 5:2774358f5e4f 298 const uint8_t res[] = {0x80,0x00, '1','0','4','0'};
va009039 5:2774358f5e4f 299 int len = dap->Command((uint8_t*)req, recv);
va009039 5:2774358f5e4f 300 ASSERT_TRUE(len >= sizeof(res));
va009039 5:2774358f5e4f 301 ASSERT_TRUE(recv[0] == 0x80);
va009039 5:2774358f5e4f 302 ASSERT_TRUE(memcmp(recv+2, res+2, 4) == 0); // 1040 lpc11u24
va009039 5:2774358f5e4f 303 }
va009039 5:2774358f5e4f 304
va009039 5:2774358f5e4f 305 int main() {
va009039 5:2774358f5e4f 306 //pc.baud(921600);
va009039 5:2774358f5e4f 307 pc.baud(9600);
va009039 5:2774358f5e4f 308 DBG("%s", __FILE__);
va009039 5:2774358f5e4f 309
va009039 5:2774358f5e4f 310 RUN_ALL_TESTS();
va009039 5:2774358f5e4f 311 exit(0);
va009039 5:2774358f5e4f 312 }
va009039 5:2774358f5e4f 313 #endif