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 Sep 08 14:13:15 2013 +0000
Revision:
3:d7a7cde0bfb8
Child:
4:5e4107edcbdb
add softwarereset(),flash.init()

Who changed what in which revision?

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