@@ -116,9 +116,9 @@ void talk_hid(HID_Dev *pkt, int cmd, const void *data, uint32_t len) {
116116 uint32_t saved = read32 (pkt -> buf );
117117 send_hid (pkt -> dev , pkt -> buf , 4 + len );
118118 recv_hid (pkt , -1 );
119- if (read32 (pkt -> buf ) != saved )
119+ if (( read32 (pkt -> buf ) & 0x7fffffff ) != saved )
120120 fatal ("invalid sequence number" );
121- if (read32 (pkt -> buf + 4 ) != 0 )
121+ if (read32 (pkt -> buf ) & 0x80000000 )
122122 fatal ("invalid status" );
123123}
124124
@@ -149,7 +149,7 @@ void verify(HID_Dev *cmd, uint8_t *buf, int size, int offset) {
149149 write32 (cmd -> buf + 8 , numpages );
150150 talk_hid (cmd , HF2_CMD_CHKSUM_PAGES , 0 , 8 );
151151 for (int i = 0 ; i < numpages ; ++ i ) {
152- int sum = read16 (cmd -> buf + 8 + i * 2 );
152+ int sum = read16 (cmd -> buf + 4 + i * 2 );
153153 uint16_t crc = 0 ;
154154 for (int j = 0 ; j < cmd -> pageSize ; ++ j ) {
155155 crc = add_crc (buf [j ], crc );
@@ -207,15 +207,15 @@ int main(int argc, char *argv[]) {
207207 }
208208
209209 talk_hid (& cmd , HF2_CMD_INFO , 0 , 0 );
210- printf ("INFO: %s\n" , cmd .buf + 8 );
210+ printf ("INFO: %s\n" , cmd .buf + 4 );
211211
212- serial (& cmd );
212+ // serial(&cmd);
213213
214214 talk_hid (& cmd , HF2_CMD_BININFO , 0 , 0 );
215- if (read32 ( cmd .buf + 8 ) != HF2_MODE_BOOTLOADER )
215+ if (cmd .buf [ 4 ] != HF2_MODE_BOOTLOADER )
216216 fatal ("not bootloader" );
217217
218- cmd .pageSize = read32 (cmd .buf + 12 );
218+ cmd .pageSize = read32 (cmd .buf + 8 );
219219 printf ("page size: %d\n" , cmd .pageSize );
220220
221221 srand (millis ());
@@ -238,8 +238,9 @@ int main(int argc, char *argv[]) {
238238
239239 for (i = 0 ; i < sizeof (flashbuf ); i += cmd .pageSize ) {
240240 write32 (cmd .buf + 4 , i + 0x2000 );
241- talk_hid (& cmd , HF2_CMD_MEM_READ_PAGE , 0 , 4 );
242- if (memcmp (cmd .buf + 8 , flashbuf + i , cmd .pageSize )) {
241+ write32 (cmd .buf + 8 , cmd .pageSize / 4 );
242+ talk_hid (& cmd , HF2_CMD_MEM_READ_WORDS , 0 , 8 );
243+ if (memcmp (cmd .buf + 4 , flashbuf + i , cmd .pageSize )) {
243244 printf ("%d,%d,%d != %d?\n" , cmd .buf [8 ], cmd .buf [9 ], cmd .buf [10 ], flashbuf [i ]);
244245 fatal ("verification failed" );
245246 }
0 commit comments