void stlink_close(stlink_t *sl) {
DLOG("*** stlink_close ***\n");
+ if (!sl)
+ return;
sl->backend->close(sl);
free(sl);
}
ret = sl->backend->read_debug32(sl, addr, data);
if (!ret)
- DLOG("*** stlink_read_debug32 %x is %#x\n", data, addr);
+ DLOG("*** stlink_read_debug32 %x is %#x\n", *data, addr);
return ret;
}
0x00, 0x2a,
0xf8, 0xd3,
- 0x00, 0xbe
+ 0x00, 0xbe,
};
static const uint8_t loader_code_stm32l0[] = {
0x00, 0x2a,
0xf8, 0xd3,
- 0x00, 0xbe
+ 0x00, 0xbe,
};
static const uint8_t loader_code_stm32f4[] = {
}
memcpy(sl->q_buf, loader_code, loader_size);
+
+ /* pad to 32-bits */
+ loader_size = (loader_size + 3) & ~3;
+
stlink_write_mem32(sl, sl->sram_base, loader_size);
*addr = sl->sram_base;