From b79f9ad1726778bdad2f89b9297a4acc6adb5b77 Mon Sep 17 00:00:00 2001 From: Alexander Osipenko Date: Fri, 25 May 2012 13:27:48 +0400 Subject: [PATCH] J-Link Unsupported firmware version check OpenOCD does not work with the latest firmware versions of Segger J-Link. Latest working version: V4.42c Unsupported versions: 4.44 to 4.46f, 4.20 to 4.30 Older versions of firmware can be found here: http://www.segger.com/j-link-older-versions.html The firmware versions does not correspond directly with "Software and documentation pack for Windows", it may be distinguished by the "compile" date in the information string. Print an warning message if unsupported firmware version detected. Change-Id: Id7d1f965b8ce2fdbcd0026a85ddd093e2fa48720 Signed-off-by: Alexander Osipenko Reviewed-on: http://openocd.zylin.com/666 Tested-by: jenkins Reviewed-by: Xiaofan Reviewed-by: Spencer Oliver --- src/jtag/drivers/jlink.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/jtag/drivers/jlink.c b/src/jtag/drivers/jlink.c index 35c1a5c4b..08df63bca 100644 --- a/src/jtag/drivers/jlink.c +++ b/src/jtag/drivers/jlink.c @@ -738,6 +738,42 @@ static int jlink_set_config(struct jlink_config *cfg) return ERROR_OK; } +/* + * List of unsupported version string markers. + * + * The firmware versions does not correspond directly with + * "Software and documentation pack for Windows", it may be + * distinguished by the "compile" date in the information string. + * + * For example, version string is: + * "J-Link ARM V8 compiled May 3 2012 18:36:22" + * Marker sould be: + * "May 3 2012" + * + * The list must be terminated by NULL string. + */ +static const char * const unsupported_versions[] = { + "Jan 31 2011", + "JAN 31 2011", + "Mar 19 2012", /* V4.44 */ + "May 3 2012", /* V4.46 "J-Link ARM V8 compiled May 3 2012 18:36:22" */ + NULL /* End of list */ +}; + +static void jlink_check_supported(const char *str) +{ + const char * const *p = unsupported_versions; + while (*p) { + if (NULL != strstr(str, *p)) { + LOG_WARNING( + "Unsupported J-Link firmware version.\n" + " Please check http://www.segger.com/j-link-older-versions.html for updates"); + return; + } + p++; + } +} + static int jlink_get_version_info(void) { int result; @@ -767,6 +803,7 @@ static int jlink_get_version_info(void) usb_in_buffer[result] = 0; LOG_INFO("%s", (char *)usb_in_buffer); + jlink_check_supported((char *)usb_in_buffer); /* query hardware capabilities */ jlink_simple_command(EMU_CMD_GET_CAPS); -- 2.11.4.GIT