Add --fet-skip-close option.
Supplying this option causes the JTAG close procedure to be skipped when closing the FET driver.
This commit is contained in:
parent
250ce908a1
commit
df6f0ec3bc
|
@ -144,8 +144,3 @@ int device_erase(device_erase_type_t et, address_t addr)
|
||||||
|
|
||||||
return device_default->type->erase(device_default, et, addr);
|
return device_default->type->erase(device_default, et, addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
int device_needs_skip_close(device_t dev)
|
|
||||||
{
|
|
||||||
return (dev->dev_id[0] == 0x51) && (dev->dev_id[1] == 0x37);
|
|
||||||
}
|
|
||||||
|
|
|
@ -70,6 +70,7 @@ struct device_breakpoint {
|
||||||
#define DEVICE_FLAG_TTY 0x04 /* default is USB */
|
#define DEVICE_FLAG_TTY 0x04 /* default is USB */
|
||||||
#define DEVICE_FLAG_FORCE_RESET 0x08
|
#define DEVICE_FLAG_FORCE_RESET 0x08
|
||||||
#define DEVICE_FLAG_DO_FWUPDATE 0x10
|
#define DEVICE_FLAG_DO_FWUPDATE 0x10
|
||||||
|
#define DEVICE_FLAG_SKIP_CLOSE 0x20
|
||||||
|
|
||||||
struct device_args {
|
struct device_args {
|
||||||
int flags;
|
int flags;
|
||||||
|
@ -140,11 +141,6 @@ int device_probe_id(device_t dev);
|
||||||
*/
|
*/
|
||||||
int device_is_fram(device_t dev);
|
int device_is_fram(device_t dev);
|
||||||
|
|
||||||
/* Determine, from the device ID bytes, whether this chip has problems
|
|
||||||
* with the FET close procedure.
|
|
||||||
*/
|
|
||||||
int device_needs_skip_close(device_t dev);
|
|
||||||
|
|
||||||
/* Set or clear a breakpoint. The index of the modified entry is
|
/* Set or clear a breakpoint. The index of the modified entry is
|
||||||
* returned, or -1 if no free entries were available. The modified
|
* returned, or -1 if no free entries were available. The modified
|
||||||
* entry is flagged so that it will be reloaded on the next run.
|
* entry is flagged so that it will be reloaded on the next run.
|
||||||
|
|
|
@ -717,7 +717,7 @@ void fet_destroy(device_t dev_base)
|
||||||
{
|
{
|
||||||
struct fet_device *dev = (struct fet_device *)dev_base;
|
struct fet_device *dev = (struct fet_device *)dev_base;
|
||||||
|
|
||||||
if (device_needs_skip_close(dev_base)) {
|
if (dev->fet_flags & FET_SKIP_CLOSE) {
|
||||||
printc_dbg("Skipping close procedure\n");
|
printc_dbg("Skipping close procedure\n");
|
||||||
} else {
|
} else {
|
||||||
/* The second argument to C_RESET is a boolean which
|
/* The second argument to C_RESET is a boolean which
|
||||||
|
@ -1020,6 +1020,9 @@ device_t fet_open(const struct device_args *args,
|
||||||
struct fet_device *dev = malloc(sizeof(*dev));
|
struct fet_device *dev = malloc(sizeof(*dev));
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
if (args->flags & DEVICE_FLAG_SKIP_CLOSE)
|
||||||
|
fet_flags |= FET_SKIP_CLOSE;
|
||||||
|
|
||||||
if (!dev) {
|
if (!dev) {
|
||||||
pr_error("fet: failed to allocate memory");
|
pr_error("fet: failed to allocate memory");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
|
@ -22,6 +22,9 @@
|
||||||
#include "device.h"
|
#include "device.h"
|
||||||
#include "transport.h"
|
#include "transport.h"
|
||||||
|
|
||||||
|
/* Don't attempt to close JTAG on exit */
|
||||||
|
#define FET_SKIP_CLOSE 0x04
|
||||||
|
|
||||||
/* The new identify method should always be used */
|
/* The new identify method should always be used */
|
||||||
#define FET_IDENTIFY_NEW 0x08
|
#define FET_IDENTIFY_NEW 0x08
|
||||||
|
|
||||||
|
|
|
@ -73,6 +73,9 @@ When using a FET device, force the connected chip to be recognised by
|
||||||
MSPDebug as one of the given type during initialization. This overrides
|
MSPDebug as one of the given type during initialization. This overrides
|
||||||
the device ID returned by the FET. The given string should be a chip
|
the device ID returned by the FET. The given string should be a chip
|
||||||
name in long form, for example "MSP430F2274".
|
name in long form, for example "MSP430F2274".
|
||||||
|
.IP "\-\-fet\-skip\-close"
|
||||||
|
When using a FET device, skip the JTAG close procedure when disconnecting.
|
||||||
|
With some boards, this removes the need to replug the debugger after use.
|
||||||
.IP "\-\-usb\-list"
|
.IP "\-\-usb\-list"
|
||||||
List available USB devices and exit.
|
List available USB devices and exit.
|
||||||
.IP "\-\-force-reset"
|
.IP "\-\-force-reset"
|
||||||
|
|
|
@ -118,6 +118,8 @@ static void usage(const char *progname)
|
||||||
" Show a list of devices supported by the FET driver.\n"
|
" Show a list of devices supported by the FET driver.\n"
|
||||||
" --fet-force-id string\n"
|
" --fet-force-id string\n"
|
||||||
" Override the device ID returned by the FET.\n"
|
" Override the device ID returned by the FET.\n"
|
||||||
|
" --fet-skip-close\n"
|
||||||
|
" Skip the JTAG close procedure when using the FET driver.\n"
|
||||||
" --usb-list\n"
|
" --usb-list\n"
|
||||||
" Show a list of available USB devices.\n"
|
" Show a list of available USB devices.\n"
|
||||||
" --force-reset\n"
|
" --force-reset\n"
|
||||||
|
@ -221,6 +223,7 @@ static int parse_cmdline_args(int argc, char **argv,
|
||||||
LOPT_HELP = 0x100,
|
LOPT_HELP = 0x100,
|
||||||
LOPT_FET_LIST,
|
LOPT_FET_LIST,
|
||||||
LOPT_FET_FORCE_ID,
|
LOPT_FET_FORCE_ID,
|
||||||
|
LOPT_FET_SKIP_CLOSE,
|
||||||
LOPT_USB_LIST,
|
LOPT_USB_LIST,
|
||||||
LOPT_VERSION,
|
LOPT_VERSION,
|
||||||
LOPT_LONG_PASSWORD,
|
LOPT_LONG_PASSWORD,
|
||||||
|
@ -234,6 +237,7 @@ static int parse_cmdline_args(int argc, char **argv,
|
||||||
{"help", 0, 0, LOPT_HELP},
|
{"help", 0, 0, LOPT_HELP},
|
||||||
{"fet-list", 0, 0, LOPT_FET_LIST},
|
{"fet-list", 0, 0, LOPT_FET_LIST},
|
||||||
{"fet-force-id", 1, 0, LOPT_FET_FORCE_ID},
|
{"fet-force-id", 1, 0, LOPT_FET_FORCE_ID},
|
||||||
|
{"fet-skip-close", 0, 0, LOPT_FET_SKIP_CLOSE},
|
||||||
{"usb-list", 0, 0, LOPT_USB_LIST},
|
{"usb-list", 0, 0, LOPT_USB_LIST},
|
||||||
{"version", 0, 0, LOPT_VERSION},
|
{"version", 0, 0, LOPT_VERSION},
|
||||||
{"long-password", 0, 0, LOPT_LONG_PASSWORD},
|
{"long-password", 0, 0, LOPT_LONG_PASSWORD},
|
||||||
|
@ -304,6 +308,10 @@ static int parse_cmdline_args(int argc, char **argv,
|
||||||
args->devarg.forced_chip_id = optarg;
|
args->devarg.forced_chip_id = optarg;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case LOPT_FET_SKIP_CLOSE:
|
||||||
|
args->devarg.flags |= DEVICE_FLAG_SKIP_CLOSE;
|
||||||
|
break;
|
||||||
|
|
||||||
case LOPT_HELP:
|
case LOPT_HELP:
|
||||||
usage(argv[0]);
|
usage(argv[0]);
|
||||||
exit(0);
|
exit(0);
|
||||||
|
|
Loading…
Reference in New Issue