From 2f7b70f1a8ef8d1204b1d16b58c4d3a160f8156a Mon Sep 17 00:00:00 2001 From: Karl Palsson Date: Sat, 22 Oct 2011 15:13:22 +0000 Subject: [PATCH] Add option parsing and help Supports setting the gdb listen port Supports setting which version of stlink to use Supports setting the device to use (in case autoprobing doesn't work) --- doc/tutorial/tutorial.pdf | Bin 110077 -> 110986 bytes doc/tutorial/tutorial.tex | 12 +-- gdbserver/gdb-server.c | 182 +++++++++++++++++++++++++++++--------- 3 files changed, 145 insertions(+), 49 deletions(-) diff --git a/doc/tutorial/tutorial.pdf b/doc/tutorial/tutorial.pdf index 9202ed4dc33c1bcafdcf4db30807103a22c846c8..4ffcc3e563b3df294e331eb3fae97f9843f31817 100644 GIT binary patch delta 47877 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 BI+y?e diff --git a/doc/tutorial/tutorial.tex b/doc/tutorial/tutorial.tex index d1ba4fd..a554805 100644 --- a/doc/tutorial/tutorial.tex +++ b/doc/tutorial/tutorial.tex @@ -106,12 +106,14 @@ A GDB server must be start to interact with the STM32. Depending on the discover are using, you must run one of the 2 commands:\\ \begin{small} \begin{lstlisting}[frame=tb] -# STM32VL discovery kit -$> sudo ./st-util /dev/sg2 +# STM32VL discovery kit (onboard ST-link) +$> sudo ./st-util --stlinkv1 [-d /dev/sg2] -# STM32L discovery kit -# 2 dummy command line arguments needed, will be fixed soon -$> sudo ./st-util fu bar +# STM32L discovery kit (onboard ST-link/V2) +$> sudo ./st-util + +# Full help for other options (listen port, version) +$> ./st-util --help \end{lstlisting} \end{small} diff --git a/gdbserver/gdb-server.c b/gdbserver/gdb-server.c index 67f0be0..30ee014 100644 --- a/gdbserver/gdb-server.c +++ b/gdbserver/gdb-server.c @@ -6,6 +6,7 @@ license that can be found in the LICENSE file. */ +#include #include #include #include @@ -20,6 +21,12 @@ #include "gdb-remote.h" +#define DEFAULT_LOGGING_LEVEL 10 +#define DEFAULT_GDB_LISTEN_PORT 4242 + +#define STRINGIFY_inner(name) #name +#define STRINGIFY(name) STRINGIFY_inner(name) + #define FLASH_BASE 0x08000000 #define FLASH_PAGE (sl->flash_pgsz) #define FLASH_PAGE_MASK (~((1 << 10) - 1)) @@ -77,79 +84,168 @@ struct chip_params { { 0 } }; +typedef struct _st_state_t { + // things from command line, bleh + int stlink_version; + // "/dev/serial/by-id/usb-FTDI_TTL232R-3V3_FTE531X6-if00-port0" is only 58 chars + char devicename[100]; + int logging_level; + int listen_port; +} st_state_t; + + int serve(stlink_t *sl, int port); char* make_memory_map(const struct chip_params *params, uint32_t flash_size); -int main(int argc, char** argv) { - - stlink_t *sl = NULL; - const char * HelpStr = "Usage:\n" - "\t st-util port [/dev/sgX]\n" - "\t st-util [port]\n" - "\t st-util --help\n"; +int parse_options(int argc, char** argv, st_state_t *st) { + static struct option long_options[] = { + {"help", no_argument, NULL, 'h'}, + {"verbose", optional_argument, NULL, 'v'}, + {"device", required_argument, NULL, 'd'}, + {"stlink_version", required_argument, NULL, 's'}, + {"stlinkv1", no_argument, NULL, '1'}, + {"listen_port", required_argument, NULL, 'p'}, + {0, 0, 0, 0}, + }; + const char * help_str = "%s - usage:\n\n" + " -h, --help\t\tPrint this help\n" + " -vXX, --verbose=XX\tspecify a specific verbosity level (0..99)\n" + " -v, --verbose\tspecify generally verbose logging\n" + " -d , --device=/dev/stlink2_1\n" + "\t\t\tWhere is your stlink device connected?\n" + " -s X, --stlink_version=X\n" + "\t\t\tChoose what version of stlink to use, (defaults to 2)\n" + " -1, --stlinkv1\tForce stlink version 1\n" + " -p 4242, --listen_port=1234\n" + "\t\t\tSet the gdb server listen port. " + "(default port: " STRINGIFY(DEFAULT_GDB_LISTEN_PORT) ")\n" + ; + + + int option_index = 0; + int c; + int q; + while ((c = getopt_long(argc, argv, "hv::d:s:1p:", long_options, &option_index)) != -1) { + switch (c) { + case 0: + printf("XXXXX Shouldn't really normally come here, only if there's no corresponding option\n"); + printf("option %s", long_options[option_index].name); + if (optarg) { + printf(" with arg %s", optarg); + } + printf("\n"); + break; + case 'h': + printf(help_str, argv[0]); + exit(EXIT_SUCCESS); + break; + case 'v': + if (optarg) { + st->logging_level = atoi(optarg); + } else { + st->logging_level = DEFAULT_LOGGING_LEVEL; + } + break; + case 'd': + if (strlen(optarg) > sizeof (st->devicename)) { + fprintf(stderr, "device name too long: %ld\n", strlen(optarg)); + } else { + strcpy(st->devicename, optarg); + } + break; + case '1': + st->stlink_version = 1; + break; + case 's': + sscanf(optarg, "%i", &q); + if (q < 0 || q > 2) { + fprintf(stderr, "stlink version %d unknown!\n", q); + exit(EXIT_FAILURE); + } + st->stlink_version = q; + break; + case 'p': + sscanf(optarg, "%i", &q); + if (q < 0) { + fprintf(stderr, "Can't use a negative port to listen on: %d\n", q); + exit(EXIT_FAILURE); + } + st->listen_port = q; + break; + } + } + + if (optind < argc) { + printf("non-option ARGV-elements: "); + while (optind < argc) + printf("%s ", argv[optind++]); + printf("\n"); + } + return 0; +} - switch(argc) { - case 3 : { - //sl = stlink_quirk_open(argv[2], 0); - // FIXME - hardcoded to usb.... - sl = stlink_open_usb(10); - if(sl == NULL) return 1; - break; - } +int main(int argc, char** argv) { - case 2 : { - if (strcmp(argv[1], "--help") == 0) { - fprintf(stdout, HelpStr, NULL); - return 1; - } - } + stlink_t *sl = NULL; -#if CONFIG_USE_LIBSG - case 1 : { // Search ST-LINK (from /dev/sg0 to /dev/sg99) + st_state_t state; + memset(&state, 0, sizeof(state)); + // set defaults... + state.stlink_version = 2; + state.logging_level = 10; + state.listen_port = DEFAULT_GDB_LISTEN_PORT; + parse_options(argc, argv, &state); + switch (state.stlink_version) { + case 2: + sl = stlink_open_usb(state.logging_level); + if(sl == NULL) return 1; + break; + case 1: +#if (CONFIG_USE_LIBSG == 1) + if (strlen(state.devicename) == 0) { const int DevNumMax = 99; int ExistDevCount = 0; - for(int DevNum = 0; DevNum <= DevNumMax; DevNum++) - { - if(DevNum < 10) { + for (int DevNum = 0; DevNum <= DevNumMax; DevNum++) { + if (DevNum < 10) { char DevName[] = "/dev/sgX"; const int X_index = 7; DevName[X_index] = DevNum + '0'; - if ( !access(DevName, F_OK) ) { + if (!access(DevName, F_OK)) { sl = stlink_quirk_open(DevName, 0); ExistDevCount++; } - } - else if(DevNum < 100) { + } else if (DevNum < 100) { char DevName[] = "/dev/sgXY"; const int X_index = 7; const int Y_index = 8; - DevName[X_index] = DevNum/10 + '0'; - DevName[Y_index] = DevNum%10 + '0'; - if ( !access(DevName, F_OK) ) { + DevName[X_index] = DevNum / 10 + '0'; + DevName[Y_index] = DevNum % 10 + '0'; + if (!access(DevName, F_OK)) { sl = stlink_quirk_open(DevName, 0); ExistDevCount++; } } - if(sl != NULL) break; + if (sl != NULL) break; } - if(sl == NULL) { + if (sl == NULL) { fprintf(stdout, "\nNumber of /dev/sgX devices found: %i \n", - ExistDevCount); + ExistDevCount); fprintf(stderr, "ST-LINK not found\n"); return 1; } - break; + } else { + sl = stlink_quirk_open(state.devicename, state.logging_level); } + break; +#else + fprintf(stderr, "Support for stlink v1 disabled at build time...\n"); + fprintf(stderr, "Perhaps you're on OSX, and we haven't finished removing the libsg deps?\n"); + exit(EXIT_FAILURE); #endif - - default: { - fprintf(stderr, HelpStr, NULL); - return 1; - } } if (stlink_current_mode(sl) == STLINK_DEV_DFU_MODE) { @@ -200,9 +296,7 @@ int main(int argc, char** argv) { // memory map is in 1k blocks. current_memory_map = make_memory_map(params, flash_size * 0x400); - int port = 4242; - - while(serve(sl, port) == 0); + while(serve(sl, state.listen_port) == 0); /* Switch back to mass storage mode before closing. */ stlink_run(sl); -- 2.30.2