This is an automated email from Gerrit. Spencer Oliver ([email protected]) just uploaded a new patch set to Gerrit, which you can find at http://openocd.zylin.com/617
-- gerrit commit 338c1e3d9aab4cb6c4da7522f1a7fa35c34abf98 Author: Spencer Oliver <[email protected]> Date: Fri May 4 12:52:48 2012 +0100 stlink: add stlink_api cmd This enables the manual selection of the stlink api version. Change-Id: I0ec8c5b0a101b6456f426d2fec65971da56db4e7 Signed-off-by: Spencer Oliver <[email protected]> diff --git a/doc/openocd.texi b/doc/openocd.texi index 5733aa2..3134afd 100644 --- a/doc/openocd.texi +++ b/doc/openocd.texi @@ -2671,6 +2671,26 @@ which are not currently documented here. @deffn {Interface Driver} {stlink} ST Micro ST-LINK adapter. + +@deffn {Config Command} {stlink_device_desc} description +Currently Not Supported. +@end deffn + +@deffn {Config Command} {stlink_serial} serial +Currently Not Supported. +@end deffn + +@deffn {Config Command} {stlink_layout} (@option{sg}|@option{usb}) +Specifies the stlink layout to use. +@end deffn + +@deffn {Config Command} {stlink_vid_pid} vid pid +The vendor ID and product ID of the STLINK device. +@end deffn + +@deffn {Config Command} {stlink_api} api_level +Manually sets the stlink api used, valid options are 1 or 2. +@end deffn @end deffn @deffn {Interface Driver} {ZY1000} diff --git a/src/jtag/drivers/stlink_usb.c b/src/jtag/drivers/stlink_usb.c index 1de42ef..b4944f5 100644 --- a/src/jtag/drivers/stlink_usb.c +++ b/src/jtag/drivers/stlink_usb.c @@ -48,7 +48,7 @@ #define STLINK_CMD_SIZE_V1 (10) enum stlink_jtag_api_version { - STLINK_JTAG_API_V1 = 0, + STLINK_JTAG_API_V1 = 1, STLINK_JTAG_API_V2, }; @@ -1132,6 +1132,7 @@ static int stlink_usb_open(struct stlink_interface_param_s *param, void **fd) { int err; struct stlink_usb_handle_s *h; + enum stlink_jtag_api_version api; LOG_DEBUG("stlink_usb_open"); @@ -1213,8 +1214,17 @@ static int stlink_usb_open(struct stlink_interface_param_s *param, void **fd) return err; } + api = h->version.jtag_api_max; + + /* check that user has not requested certain api version + * and if they have check it is supported */ + if ((param->api != 0) && (param->api <= h->version.jtag_api_max)) { + api = param->api; + LOG_INFO("using stlink api v%d", api); + } + /* set the used jtag api, this will default to the newest supported version */ - h->jtag_api = h->version.jtag_api_max; + h->jtag_api = api; /* initialize the debug hardware */ err = stlink_usb_init_mode(h); diff --git a/src/jtag/stlink/stlink_interface.c b/src/jtag/stlink/stlink_interface.c index 389ab3f..b3379df 100644 --- a/src/jtag/stlink/stlink_interface.c +++ b/src/jtag/stlink/stlink_interface.c @@ -34,7 +34,7 @@ #include <target/target.h> -static struct stlink_interface_s stlink_if = { {0, 0, 0, 0, 0}, 0, 0 }; +static struct stlink_interface_s stlink_if = { {0, 0, 0, 0, 0, 0}, 0, 0 }; int stlink_interface_open(enum stlink_transports tr) { @@ -200,6 +200,21 @@ COMMAND_HANDLER(stlink_interface_handle_vid_pid_command) return ERROR_OK; } +COMMAND_HANDLER(stlink_interface_handle_api_command) +{ + if (CMD_ARGC != 1) + return ERROR_COMMAND_SYNTAX_ERROR; + + int new_api; + COMMAND_PARSE_NUMBER(int, CMD_ARGV[0], new_api); + if ((new_api == 0) || (new_api > 2)) + return ERROR_COMMAND_SYNTAX_ERROR; + + stlink_if.param.api = new_api; + + return ERROR_OK; +} + static const struct command_registration stlink_interface_command_handlers[] = { { .name = "stlink_device_desc", @@ -229,6 +244,13 @@ static const struct command_registration stlink_interface_command_handlers[] = { .help = "the vendor and product ID of the STLINK device", .usage = "(vid pid)* ", }, + { + .name = "stlink_api", + .handler = &stlink_interface_handle_api_command, + .mode = COMMAND_CONFIG, + .help = "set the desired stlink api level", + .usage = "api version 1 or 2", + }, COMMAND_REGISTRATION_DONE }; diff --git a/src/jtag/stlink/stlink_interface.h b/src/jtag/stlink/stlink_interface.h index 4b6949e..10148f4 100644 --- a/src/jtag/stlink/stlink_interface.h +++ b/src/jtag/stlink/stlink_interface.h @@ -38,6 +38,8 @@ struct stlink_interface_param_s { /** */ uint16_t pid; /** */ + uint16_t api; + /** */ enum stlink_transports transport; }; -- ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ OpenOCD-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openocd-devel
