Implement long options initial commit
This commit is contained in:
parent
6f38b844af
commit
7dd82418e0
|
@ -28,6 +28,7 @@
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
|
#include <getopt.h>
|
||||||
#include "version.h"
|
#include "version.h"
|
||||||
#include "target_internal.h"
|
#include "target_internal.h"
|
||||||
#include "cortexm.h"
|
#include "cortexm.h"
|
||||||
|
@ -133,61 +134,58 @@ static void cl_help(char **argv)
|
||||||
PRINT_INFO(
|
PRINT_INFO(
|
||||||
"\n"
|
"\n"
|
||||||
"Usage: %s [-h | -l | [-vBITMASK] [-d PATH | -P NUMBER | -s SERIAL | -c TYPE]\n"
|
"Usage: %s [-h | -l | [-vBITMASK] [-d PATH | -P NUMBER | -s SERIAL | -c TYPE]\n"
|
||||||
" [-n NUMBER] [-j] [-C] [-t | -T] [-e] [-p] [-R[h]] [-H] [-M STRING ...]\n"
|
"\t[-n NUMBER] [-j] [-C] [-t | -T] [-e] [-p] [-R[h]] [-H] [-M STRING ...]\n"
|
||||||
" [-E | -w | -V | -r] [-a ADDR] [-S number] [file]]\n"
|
"\t[-f | -m] [-E | -w | -V | -r] [-a ADDR] [-S number] [file]]\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Single-shot and verbosity options [-h | -l | -vBITMASK]:\n"
|
"\t-h, --help Show the version and this help, then exit\n"
|
||||||
"\t-h Show the version version and this help, then exit\n"
|
"\t-l, --list List available supported probes\n"
|
||||||
"\t-l List available supported probes\n"
|
"\t-v, --verbose <bitmask> Set the output verbosity level based on some combination of:\n"
|
||||||
"\t-v<bitmask> Set the output verbosity level based on some combination of:\n"
|
|
||||||
"\t 1 = INFO, 2 = GDB, 4 = TARGET, 8 = PROBE, 16 = WIRE\n"
|
"\t 1 = INFO, 2 = GDB, 4 = TARGET, 8 = PROBE, 16 = WIRE\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Probe selection arguments [-d PATH | -P NUMBER | -s SERIAL | -c TYPE]:\n"
|
"Probe selection arguments (If used, choose one):\n"
|
||||||
"\t-d <path> Use a serial device at the given path (Deprecated!)\n"
|
"\t-d, --device <path> Use a serial device at the given path (Deprecated!)\n"
|
||||||
"\t-P <number> Use the <number>th debug probe found while scanning the\n"
|
"\t-P, --probe <number> Use the <number>th debug probe found while scanning the\n"
|
||||||
"\t system, see the output from list for the order\n"
|
"\t system, see the output from list for the order\n"
|
||||||
"\t-s <serial> Select the debug probe with the given serial number\n"
|
"\t-s, --serial <serial> Select the debug probe with the given serial number\n"
|
||||||
"\t-c <type> Select the FTDI-based debug probe with of the given\n"
|
"\t-c, --ftdi-type <type> Select the FTDI-based debug probe with of the given\n"
|
||||||
"\t type (cable)\n"
|
"\t type (cable)\n"
|
||||||
"\n"
|
"\n"
|
||||||
"The default is to start a debug server at localhost:2000\n"
|
"General configuration options:\n"
|
||||||
"General configuration options: [-n NUMBER] [-j] [-C] [-t | -T] [-e] [-p] [-R[h]]\n"
|
"\t-n, --number <scan-number> Select the target device at the given position in the\n"
|
||||||
" [-H] [-M STRING ...]\n"
|
|
||||||
"\t-n <number> Select the target device at the given position in the\n"
|
|
||||||
"\t scan chain (use the -t option to get a scan chain listing)\n"
|
"\t scan chain (use the -t option to get a scan chain listing)\n"
|
||||||
"\t-j Use JTAG instead of SWD\n"
|
"\t-j, --jtag Use JTAG instead of SWD\n"
|
||||||
"\t-C Connect to target under hardware reset\n"
|
"\t-C, --hw-reset Connect to target under hardware reset\n"
|
||||||
"\t-t Perform a chain scan and display information about the\n"
|
"\t-t, --list-chain Perform a chain scan and display information about the\n"
|
||||||
"\t conected devices\n"
|
"\t conected devices\n"
|
||||||
"\t-T Perform continues read- or write-back of a value to allow\n"
|
"\t-T, --timing Perform continues read- or write-back of a value to allow\n"
|
||||||
"\t measurement of protocol timing. Aborted by ^C\n"
|
"\t measurement of protocol timing. Aborted by ^C\n"
|
||||||
"\t-e Assume external resistors for FTDI devices, that is having the\n"
|
"\t-e, --ext-res Assume external resistors for FTDI devices, that is having the\n"
|
||||||
"\t FTDI chip connected through resistors to TMS, TDI and TDO\n"
|
"\t FTDI chip connected through resistors to TMS, TDI and TDO\n"
|
||||||
"\t-p Power the target from the probe (if possible)\n"
|
"\t-p, --power Power the target from the probe (if possible)\n"
|
||||||
"\t-R[h] Reset the device. If followed by 'h', this will be done using\n"
|
"\t-R, --reset [h] Reset the device. If followed by 'h', this will be done using\n"
|
||||||
"\t the hardware reset line instead of over the debug link\n"
|
"\t the hardware reset line instead of over the debug link\n"
|
||||||
"\t-H Do not use the high level command API (bmp-remote)\n"
|
"\t-H, --high-level Do not use the high level command API (bmp-remote)\n"
|
||||||
"\t-M <string> Run target-specific monitor commands. This option\n"
|
"\t-M, --monitor <string> Run target-specific monitor commands. This option\n"
|
||||||
"\t can be repeated for as many commands you wish to run.\n"
|
"\t can be repeated for as many commands you wish to run.\n"
|
||||||
"\t If the command contains spaces, use quotes around the\n"
|
"\t If the command contains spaces, use quotes around the\n"
|
||||||
"\t complete command\n"
|
"\t complete command\n"
|
||||||
"\n"
|
"\n"
|
||||||
"SWD-specific configuration options [-f FREQUENCY | -m TARGET]:\n"
|
"SWD-specific configuration options:\n"
|
||||||
"\t-f <frequency> Set an operating frequency for SWD\n"
|
"\t-f, --freq <frequency> Set an operating frequency for SWD\n"
|
||||||
"\t-m <target> Use the given target ID for selection in SWD multi-drop\n"
|
"\t-m, --mult-drop <target> Use the given target ID for selection in SWD multi-drop\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Flash operation selection options [-E | -w | -V | -r]:\n"
|
"Flash operation options:\n"
|
||||||
"\t-E Erase the target device Flash\n"
|
"\t-E, --erase Erase the target device Flash\n"
|
||||||
"\t-w Write the specified binary file to the target device\n"
|
"\t-w, --write Write the specified binary file to the target device\n"
|
||||||
"\t Flash (the default)\n"
|
"\t Flash (the default)\n"
|
||||||
"\t-V Verify the target device Flash against the specified\n"
|
"\t-V, --verify Verify the target device Flash against the specified\n"
|
||||||
"\t binary file\n"
|
"\t binary file\n"
|
||||||
"\t-r Read the target device Flash\n"
|
"\t-r, --read Read the target device Flash\n"
|
||||||
"\n"
|
"\n"
|
||||||
"Flash operation modifiers options: [-a ADDR] [-S number] [FILE]\n"
|
"Flash operation modifier options:\n"
|
||||||
"\t-a <addr> Start address for the given Flash operation (defaults to\n"
|
"\t-a, --addr <addr> Start address for the given Flash operation (defaults to\n"
|
||||||
"\t the start of Flash)\n"
|
"\t the start of Flash)\n"
|
||||||
"\t-S <number> Number of bytes to work on in the Flash operation (default\n"
|
"\t-S, --byte-count <number> Number of bytes to work on in the Flash operation (default\n"
|
||||||
"\t is till the operation fails or is complete)\n"
|
"\t is till the operation fails or is complete)\n"
|
||||||
"\t<file> Binary file to use in Flash operations\n",
|
"\t<file> Binary file to use in Flash operations\n",
|
||||||
argv[0]
|
argv[0]
|
||||||
|
@ -195,6 +193,35 @@ static void cl_help(char **argv)
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct option long_options[] = {
|
||||||
|
{"help", no_argument, NULL, 'h'},
|
||||||
|
{"list", no_argument, NULL, 'l'},
|
||||||
|
{"verbose", required_argument, NULL, 'v'},
|
||||||
|
{"device", required_argument, NULL, 'd'},
|
||||||
|
{"probe", required_argument, NULL, 'P'},
|
||||||
|
{"serial", required_argument, NULL, 's'},
|
||||||
|
{"ftdi-type", required_argument, NULL, 'c'},
|
||||||
|
{"number", required_argument, NULL, 'n'},
|
||||||
|
{"jtag", no_argument, NULL, 'j'},
|
||||||
|
{"hw-reset", no_argument, NULL, 'C'},
|
||||||
|
{"list-chain", no_argument, NULL, 't'},
|
||||||
|
{"timing", no_argument, NULL, 'T'},
|
||||||
|
{"ext-res", no_argument, NULL, 'e'},
|
||||||
|
{"power", no_argument, NULL, 'p'},
|
||||||
|
{"reset", optional_argument, NULL, 'R'},
|
||||||
|
{"high-level", no_argument, NULL, 'H'},
|
||||||
|
{"monitor", required_argument, NULL, 'M'},
|
||||||
|
{"freq", required_argument, NULL, 'f'},
|
||||||
|
{"multi-drop", required_argument, NULL, 'm'},
|
||||||
|
{"erase", no_argument, NULL, 'E'},
|
||||||
|
{"write", no_argument, NULL, 'W'},
|
||||||
|
{"verify", no_argument, NULL, 'V'},
|
||||||
|
{"read", no_argument, NULL, 'r'},
|
||||||
|
{"addr", required_argument, NULL, 'a'},
|
||||||
|
{"byte-count", required_argument, NULL, 'S'},
|
||||||
|
{NULL, 0, NULL, 0}
|
||||||
|
} ;
|
||||||
|
|
||||||
void cl_init(BMP_CL_OPTIONS_t *opt, int argc, char **argv)
|
void cl_init(BMP_CL_OPTIONS_t *opt, int argc, char **argv)
|
||||||
{
|
{
|
||||||
int c;
|
int c;
|
||||||
|
@ -202,7 +229,7 @@ void cl_init(BMP_CL_OPTIONS_t *opt, int argc, char **argv)
|
||||||
opt->opt_flash_size = 0xffffffff;
|
opt->opt_flash_size = 0xffffffff;
|
||||||
opt->opt_flash_start = 0xffffffff;
|
opt->opt_flash_start = 0xffffffff;
|
||||||
opt->opt_max_swj_frequency = 4000000;
|
opt->opt_max_swj_frequency = 4000000;
|
||||||
while((c = getopt(argc, argv, "eEhHv:d:f:s:I:c:Cln:m:M:wVtTa:S:jpP:rR::")) != -1) {
|
while((c = getopt_long(argc, argv, "eEhHv:d:f:s:I:c:Cln:m:M:wVtTa:S:jpP:rR::", long_options, NULL)) != -1) {
|
||||||
switch(c) {
|
switch(c) {
|
||||||
case 'c':
|
case 'c':
|
||||||
if (optarg)
|
if (optarg)
|
||||||
|
|
Loading…
Reference in New Issue