From: Karl Palsson Date: Thu, 3 Nov 2011 00:46:58 +0000 (+0000) Subject: Merge branch 'master' into killsg X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=ed7464f235c889cbad6a953ee1ea64a99bf69304;p=fw%2Fstlink Merge branch 'master' into killsg Conflicts: src/stlink-common.c src/test_sg.c Conflicts were only in changes to logging. --- ed7464f235c889cbad6a953ee1ea64a99bf69304 diff --cc src/stlink-common.c index 2693eb9,6a9b938..8f3431a --- a/src/stlink-common.c +++ b/src/stlink-common.c @@@ -347,21 -355,20 +347,20 @@@ void _parse_version(stlink_t *sl, stlin } void stlink_version(stlink_t *sl) { - D(sl, "*** looking up stlink version\n"); + DLOG("*** looking up stlink version\n"); - stlink_version_t slv; sl->backend->version(sl); - _parse_version(sl, &slv); + _parse_version(sl, &sl->version); - DLOG("st vid = 0x%04x (expect 0x%04x)\n", slv.st_vid, USB_ST_VID); - DLOG("stlink pid = 0x%04x\n", slv.stlink_pid); - DLOG("stlink version = 0x%x\n", slv.stlink_v); - DLOG("jtag version = 0x%x\n", slv.jtag_v); - DLOG("swim version = 0x%x\n", slv.swim_v); - if (slv.jtag_v == 0) { - DD(sl, "st vid = 0x%04x (expect 0x%04x)\n", sl->version.st_vid, USB_ST_VID); - DD(sl, "stlink pid = 0x%04x\n", sl->version.stlink_pid); - DD(sl, "stlink version = 0x%x\n", sl->version.stlink_v); - DD(sl, "jtag version = 0x%x\n", sl->version.jtag_v); - DD(sl, "swim version = 0x%x\n", sl->version.swim_v); ++ DLOG("st vid = 0x%04x (expect 0x%04x)\n", sl->version.st_vid, USB_ST_VID); ++ DLOG("stlink pid = 0x%04x\n", sl->version.stlink_pid); ++ DLOG("stlink version = 0x%x\n", sl->version.stlink_v); ++ DLOG("jtag version = 0x%x\n", sl->version.jtag_v); ++ DLOG("swim version = 0x%x\n", sl->version.swim_v); + if (sl->version.jtag_v == 0) { - DD(sl, " notice: the firmware doesn't support a jtag/swd interface\n"); + DLOG(" notice: the firmware doesn't support a jtag/swd interface\n"); } - if (slv.swim_v == 0) { + if (sl->version.swim_v == 0) { - DD(sl, " notice: the firmware doesn't support a swim interface\n"); + DLOG(" notice: the firmware doesn't support a swim interface\n"); } } diff --cc src/stlink-common.h index 4986713,2ac56f2..18e1c0c --- a/src/stlink-common.h +++ b/src/stlink-common.h @@@ -179,8 -179,13 +179,9 @@@ extern "C" stm32_addr_t sram_base; size_t sram_size; + struct stlink_version_ version; }; - // some quick and dirty logging... - void D(stlink_t *sl, char *txt); - void DD(stlink_t *sl, char *format, ...); - //stlink_t* stlink_quirk_open(const char *dev_name, const int verbose); // delegated functions... diff --cc src/stlink-sg.c index afce5ac,e8dee5d..5d1f970 --- a/src/stlink-sg.c +++ b/src/stlink-sg.c @@@ -274,38 -268,9 +274,9 @@@ void stlink_stat(stlink_t *stl, char *t } - static void parse_version(stlink_t *stl) { - struct stlink_libsg *sl = stl->backend_data; - - sl->st_vid = 0; - sl->stlink_pid = 0; - - if (stl->q_len <= 0) { - fprintf(stderr, "Error: could not parse the stlink version"); - return; - } - - uint32_t b0 = stl->q_buf[0]; //lsb - uint32_t b1 = stl->q_buf[1]; - uint32_t b2 = stl->q_buf[2]; - uint32_t b3 = stl->q_buf[3]; - uint32_t b4 = stl->q_buf[4]; - uint32_t b5 = stl->q_buf[5]; //msb - - // b0 b1 || b2 b3 | b4 b5 - // 4b | 6b | 6b || 2B | 2B - // stlink_v | jtag_v | swim_v || st_vid | stlink_pid - - sl->stlink_v = (b0 & 0xf0) >> 4; - sl->jtag_v = ((b0 & 0x0f) << 2) | ((b1 & 0xc0) >> 6); - sl->swim_v = b1 & 0x3f; - sl->st_vid = (b3 << 8) | b2; - sl->stlink_pid = (b5 << 8) | b4; - } - void _stlink_sg_version(stlink_t *stl) { struct stlink_libsg *sl = stl->backend_data; - D(stl, "\n*** stlink_version ***\n"); + DLOG("\n*** stlink_version ***\n"); clear_cdb(sl); sl->cdb_cmd_blk[0] = STLINK_GET_VERSION; stl->q_len = 6; diff --cc src/stlink-sg.h index afa47c5,b3ab9c0..723c66a --- a/src/stlink-sg.h +++ b/src/stlink-sg.h @@@ -53,17 -54,13 +53,10 @@@ extern "C" // Sense (error information) data unsigned char sense_buf[SENSE_BUF_LEN]; - uint32_t st_vid; - uint32_t stlink_pid; - uint32_t stlink_v; - uint32_t jtag_v; - uint32_t swim_v; - uint32_t core_id; - reg reg; }; -#else - struct stlink_libsg {}; -#endif - stlink_t* stlink_quirk_open(const char *dev_name, const int verbose); + stlink_t* stlink_v1_open(const char *dev_name, const int verbose); #ifdef __cplusplus } diff --cc src/test_sg.c index a12ed1f,a4db8f2..30f867a --- a/src/test_sg.c +++ b/src/test_sg.c @@@ -33,14 -36,11 +32,10 @@@ int main(int argc, char *argv[]) return EXIT_FAILURE; } - fputs("*** stlink access test ***\n", stderr); - fprintf(stderr, "Using sg_lib %s : scsi_pt %s\n", sg_lib_version(), - scsi_pt_version()); - - stlink_t *sl = stlink_v1_open(dev_name, scsi_verbose); - stlink_t *sl = stlink_quirk_open(dev_name, 10); ++ stlink_t *sl = stlink_v1_open(dev_name, 10); if (sl == NULL) return EXIT_FAILURE; - - + // we are in mass mode, go to swd stlink_enter_swd_mode(sl); stlink_current_mode(sl);