X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=src%2Fstlink-usb.c;h=847b7f99c39cddd18486f466ae82dd1029582e7a;hb=d31396111db210a9282da993656a1bb46465cfcd;hp=4a2fe16bfd946d398ef9c983d4be316ab3b6b2ba;hpb=93ea941dff98b31ff6498a9b222c5bb1d40fe8a1;p=fw%2Fstlink diff --git a/src/stlink-usb.c b/src/stlink-usb.c index 4a2fe16..847b7f9 100644 --- a/src/stlink-usb.c +++ b/src/stlink-usb.c @@ -26,48 +26,6 @@ void _stlink_usb_close(stlink_t* sl) { } } -static void write_uint32(unsigned char* buf, uint32_t ui) { - if (!is_bigendian()) { // le -> le (don't swap) - buf[0] = ((unsigned char*) &ui)[0]; - buf[1] = ((unsigned char*) &ui)[1]; - buf[2] = ((unsigned char*) &ui)[2]; - buf[3] = ((unsigned char*) &ui)[3]; - } else { - buf[0] = ((unsigned char*) &ui)[3]; - buf[1] = ((unsigned char*) &ui)[2]; - buf[2] = ((unsigned char*) &ui)[1]; - buf[3] = ((unsigned char*) &ui)[0]; - } -} - -static void write_uint16(unsigned char* buf, uint16_t ui) { - if (!is_bigendian()) { // le -> le (don't swap) - buf[0] = ((unsigned char*) &ui)[0]; - buf[1] = ((unsigned char*) &ui)[1]; - } else { - buf[0] = ((unsigned char*) &ui)[1]; - buf[1] = ((unsigned char*) &ui)[0]; - } -} - -static uint32_t read_uint32(const unsigned char *c, const int pt) { - uint32_t ui; - char *p = (char *) &ui; - - if (!is_bigendian()) { // le -> le (don't swap) - p[0] = c[pt]; - p[1] = c[pt + 1]; - p[2] = c[pt + 2]; - p[3] = c[pt + 3]; - } else { - p[0] = c[pt + 3]; - p[1] = c[pt + 2]; - p[2] = c[pt + 1]; - p[3] = c[pt]; - } - return ui; -} - struct trans_ctx { #define TRANS_FLAGS_IS_DONE (1 << 0) @@ -222,7 +180,7 @@ void _stlink_usb_write_mem8(stlink_t *sl, uint32_t addr, uint16_t len) { } -int stlink_current_mode(stlink_t * sl) { +int _stlink_usb_current_mode(stlink_t * sl) { int mode = -1; struct stlink_libusb * const slu = sl->backend_data; @@ -345,7 +303,7 @@ void _stlink_usb_reset(stlink_t * sl) { } -void stlink_step(stlink_t* sl) { +void _stlink_usb_step(stlink_t* sl) { struct stlink_libusb * const slu = sl->backend_data; unsigned char* const buf = sl->q_buf; ssize_t size; @@ -394,7 +352,7 @@ void _stlink_usb_exit_debug_mode(stlink_t *sl) { } } -void stlink_read_mem32(stlink_t *sl, uint32_t addr, uint16_t len) { +void _stlink_usb_read_mem32(stlink_t *sl, uint32_t addr, uint16_t len) { struct stlink_libusb * const slu = sl->backend_data; unsigned char* const buf = sl->q_buf; ssize_t size; @@ -422,6 +380,21 @@ void stlink_read_mem32(stlink_t *sl, uint32_t addr, uint16_t len) { stlink_print_data(sl); } +void _stlink_usb_read_all_regs(stlink_t *sl) { + DD(sl, "oops! read_all_regs not implemented for USB!\n"); +} + +void _stlink_usb_read_reg(stlink_t *sl, int r_idx, reg *regp) { + DD(sl, "oops! read_reg not implemented for USB! Wanted to read reg %d\n", + r_idx); +} + +void _stlink_usb_write_reg(stlink_t *sl, uint32_t reg, int idx) { + DD(sl, "oops! write_reg not implemented for USB! Wanted to write %#x to %d\n", + reg, idx); +} + + stlink_backend_t _stlink_usb_backend = { _stlink_usb_close, @@ -434,10 +407,16 @@ stlink_backend_t _stlink_usb_backend = { _stlink_usb_run, _stlink_usb_status, _stlink_usb_version, + _stlink_usb_read_mem32, _stlink_usb_write_mem32, - _stlink_usb_write_mem8 + _stlink_usb_write_mem8, + _stlink_usb_read_all_regs, + _stlink_usb_read_reg, + _stlink_usb_write_reg, + _stlink_usb_step }; + stlink_t* stlink_open_usb(const char *dev_name, const int verbose) { stlink_t* sl = NULL; struct stlink_libusb* slu = NULL;