Added --fet-force-id command-line option.
This commit is contained in:
parent
0e58c52192
commit
a87ad8b834
14
fet.c
14
fet.c
|
@ -455,7 +455,7 @@ static int xfer(struct fet_device *dev,
|
||||||
* MSP430 high-level control functions
|
* MSP430 high-level control functions
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int do_identify(struct fet_device *dev)
|
static int do_identify(struct fet_device *dev, const char *force_id)
|
||||||
{
|
{
|
||||||
if (dev->version < 20300000) {
|
if (dev->version < 20300000) {
|
||||||
char idtext[64];
|
char idtext[64];
|
||||||
|
@ -488,16 +488,19 @@ static int do_identify(struct fet_device *dev)
|
||||||
printf("Device ID: 0x%02x%02x\n",
|
printf("Device ID: 0x%02x%02x\n",
|
||||||
dev->fet_reply.data[0], dev->fet_reply.data[1]);
|
dev->fet_reply.data[0], dev->fet_reply.data[1]);
|
||||||
|
|
||||||
|
if (force_id)
|
||||||
|
r = fet_db_find_by_name(force_id);
|
||||||
|
else
|
||||||
r = fet_db_find_by_msg28(dev->fet_reply.data,
|
r = fet_db_find_by_msg28(dev->fet_reply.data,
|
||||||
dev->fet_reply.datalen);
|
dev->fet_reply.datalen);
|
||||||
|
|
||||||
printf("Device: %s\n", r->name);
|
|
||||||
|
|
||||||
if (!r) {
|
if (!r) {
|
||||||
fprintf(stderr, "fet: unknown device\n");
|
fprintf(stderr, "fet: unknown device\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf("Device: %s\n", r->name);
|
||||||
|
|
||||||
if (xfer(dev, 0x2b, r->msg2b_data, FET_DB_MSG2B_LEN, 0) < 0) {
|
if (xfer(dev, 0x2b, r->msg2b_data, FET_DB_MSG2B_LEN, 0) < 0) {
|
||||||
fprintf(stderr, "fet: message 0x2b failed\n");
|
fprintf(stderr, "fet: message 0x2b failed\n");
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -743,7 +746,8 @@ static int fet_breakpoint(device_t dev_base, int enabled, uint16_t addr)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
device_t fet_open(transport_t transport, int proto_flags, int vcc_mv)
|
device_t fet_open(transport_t transport, int proto_flags, int vcc_mv,
|
||||||
|
const char *force_id)
|
||||||
{
|
{
|
||||||
struct fet_device *dev = malloc(sizeof(*dev));
|
struct fet_device *dev = malloc(sizeof(*dev));
|
||||||
|
|
||||||
|
@ -799,7 +803,7 @@ device_t fet_open(transport_t transport, int proto_flags, int vcc_mv)
|
||||||
printf("Set Vcc: %d mV\n", vcc_mv);
|
printf("Set Vcc: %d mV\n", vcc_mv);
|
||||||
|
|
||||||
/* Identify the chip */
|
/* Identify the chip */
|
||||||
if (do_identify(dev) < 0) {
|
if (do_identify(dev, force_id) < 0) {
|
||||||
fprintf(stderr, "fet: identify failed\n");
|
fprintf(stderr, "fet: identify failed\n");
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
3
fet.h
3
fet.h
|
@ -26,6 +26,7 @@
|
||||||
#define FET_PROTO_SPYBIWIRE 0x01
|
#define FET_PROTO_SPYBIWIRE 0x01
|
||||||
#define FET_PROTO_RF2500 0x02
|
#define FET_PROTO_RF2500 0x02
|
||||||
|
|
||||||
device_t fet_open(transport_t transport, int proto_flags, int vcc_mv);
|
device_t fet_open(transport_t transport, int proto_flags, int vcc_mv,
|
||||||
|
const char *force_id);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
20
main.c
20
main.c
|
@ -142,6 +142,8 @@ static void usage(const char *progname)
|
||||||
" Show this help text.\n"
|
" Show this help text.\n"
|
||||||
" --fet-list\n"
|
" --fet-list\n"
|
||||||
" 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"
|
||||||
|
" Override the device ID returned by the FET.\n"
|
||||||
"\n"
|
"\n"
|
||||||
"By default, the first RF2500 device on the USB bus is opened.\n"
|
"By default, the first RF2500 device on the USB bus is opened.\n"
|
||||||
"\n"
|
"\n"
|
||||||
|
@ -171,6 +173,7 @@ static void process_rc_file(cproc_t cp)
|
||||||
struct cmdline_args {
|
struct cmdline_args {
|
||||||
const char *uif_device;
|
const char *uif_device;
|
||||||
const char *bsl_device;
|
const char *bsl_device;
|
||||||
|
const char *fet_force_id;
|
||||||
int mode;
|
int mode;
|
||||||
int want_jtag;
|
int want_jtag;
|
||||||
int no_rc;
|
int no_rc;
|
||||||
|
@ -188,8 +191,9 @@ static int parse_cmdline_args(int argc, char **argv,
|
||||||
{
|
{
|
||||||
int opt;
|
int opt;
|
||||||
const static struct option longopts[] = {
|
const static struct option longopts[] = {
|
||||||
{"help", 0, 0, '?'},
|
{"help", 0, 0, 'H'},
|
||||||
{"fet-list", 0, 0, 'L'},
|
{"fet-list", 0, 0, 'L'},
|
||||||
|
{"fet-force-id", 1, 0, 'F'},
|
||||||
{NULL, 0, 0, 0}
|
{NULL, 0, 0, 0}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -201,6 +205,14 @@ static int parse_cmdline_args(int argc, char **argv,
|
||||||
fet_db_enum(show_fet_device, NULL);
|
fet_db_enum(show_fet_device, NULL);
|
||||||
exit(0);
|
exit(0);
|
||||||
|
|
||||||
|
case 'F':
|
||||||
|
args->fet_force_id = optarg;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'H':
|
||||||
|
usage(argv[0]);
|
||||||
|
exit(0);
|
||||||
|
|
||||||
case 'R':
|
case 'R':
|
||||||
args->mode |= MODE_RF2500;
|
args->mode |= MODE_RF2500;
|
||||||
break;
|
break;
|
||||||
|
@ -232,8 +244,7 @@ static int parse_cmdline_args(int argc, char **argv,
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case '?':
|
case '?':
|
||||||
usage(argv[0]);
|
return -1;
|
||||||
exit(0);
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
fprintf(stderr, "Invalid argument: %c\n"
|
fprintf(stderr, "Invalid argument: %c\n"
|
||||||
|
@ -286,7 +297,8 @@ device_t setup_device(const struct cmdline_args *args,
|
||||||
if (!args->want_jtag)
|
if (!args->want_jtag)
|
||||||
flags |= FET_PROTO_SPYBIWIRE;
|
flags |= FET_PROTO_SPYBIWIRE;
|
||||||
|
|
||||||
msp430_dev = fet_open(trans, flags, args->vcc_mv);
|
msp430_dev = fet_open(trans, flags, args->vcc_mv,
|
||||||
|
args->fet_force_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!msp430_dev) {
|
if (!msp430_dev) {
|
||||||
|
|
|
@ -91,6 +91,10 @@ Display a brief help message and exit.
|
||||||
.IP "\-\-fet\-list"
|
.IP "\-\-fet\-list"
|
||||||
Display a list of devices supported by the FET driver (the driver used
|
Display a list of devices supported by the FET driver (the driver used
|
||||||
for \fB\-R\fB and \fB\-u\fR operating modes).
|
for \fB\-R\fB and \fB\-u\fR operating modes).
|
||||||
|
.IP "\-\-fet\-force\-id \fIstring\fR"
|
||||||
|
When using a FET device, force the connected chip to be recognised by
|
||||||
|
MSPDebug as one of the given type during initialization. This overrides
|
||||||
|
the device ID returned by the FET.
|
||||||
.SH COMMANDS
|
.SH COMMANDS
|
||||||
MSPDebug can accept commands either through an interactive prompt, or
|
MSPDebug can accept commands either through an interactive prompt, or
|
||||||
non-interactively when specified on the command line. The supported
|
non-interactively when specified on the command line. The supported
|
||||||
|
|
Loading…
Reference in New Issue