kopia lustrzana https://github.com/stlink-org/stlink
Merge c85c172c63 into 5a379699bb
commit
f8e228822c
2
Makefile
2
Makefile
|
|
@ -66,6 +66,6 @@ flash:
|
||||||
$(MAKE) -C flash CONFIG_USE_LIBSG="$(CONFIG_USE_LIBSG)"
|
$(MAKE) -C flash CONFIG_USE_LIBSG="$(CONFIG_USE_LIBSG)"
|
||||||
|
|
||||||
gdbserver:
|
gdbserver:
|
||||||
$(MAKE) -C gdbserver
|
$(MAKE) -C gdbserver CONFIG_USE_LIBSG="$(CONFIG_USE_LIBSG)"
|
||||||
|
|
||||||
.PHONY: clean all flash gdbserver
|
.PHONY: clean all flash gdbserver
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,7 @@ OBJS = gdb-remote.o gdb-server.o
|
||||||
|
|
||||||
CFLAGS+=-g -Wall -Werror -std=gnu99 -I../src
|
CFLAGS+=-g -Wall -Werror -std=gnu99 -I../src
|
||||||
CFLAGS+=-DCONFIG_USE_LIBUSB=1
|
CFLAGS+=-DCONFIG_USE_LIBUSB=1
|
||||||
|
CFLAGS+=-DCONFIG_USE_LIBSG=$(CONFIG_USE_LIBSG)
|
||||||
LDFLAGS=-L.. -lstlink -lusb-1.0
|
LDFLAGS=-L.. -lstlink -lusb-1.0
|
||||||
|
|
||||||
ifeq ($(CONFIG_USE_LIBSG),)
|
ifeq ($(CONFIG_USE_LIBSG),)
|
||||||
|
|
@ -16,7 +17,6 @@ CONFIG_USE_LIBSG=1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(CONFIG_USE_LIBSG),0)
|
ifneq ($(CONFIG_USE_LIBSG),0)
|
||||||
CFLAGS+=-DCONFIG_USE_LIBSG=1
|
|
||||||
LDFLAGS+=-lsgutils2
|
LDFLAGS+=-lsgutils2
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -83,74 +83,106 @@ char* make_memory_map(const struct chip_params *params, uint32_t flash_size);
|
||||||
int main(int argc, char** argv) {
|
int main(int argc, char** argv) {
|
||||||
|
|
||||||
stlink_t *sl = NULL;
|
stlink_t *sl = NULL;
|
||||||
|
int port = 0;
|
||||||
|
|
||||||
const char * HelpStr = "Usage:\n"
|
const char * HelpStr = "\nUsage:\n"
|
||||||
"\t st-util port [/dev/sgX]\n"
|
"\tst-util [Arguments]\n"
|
||||||
"\t st-util [port]\n"
|
"\tArguments (no more than 2):\n"
|
||||||
"\t st-util --help\n";
|
"\t\t<Port>: Port. Default: 4242.\n"
|
||||||
|
"\t\t{usb|sgauto|/dev/sgX}: Transport, "
|
||||||
|
"where X = {0, 1, 2, ...}. Default: USB.\n"
|
||||||
|
"\tExamples:\n"
|
||||||
|
"\t\tst-util 1234\n"
|
||||||
|
"\t\tst-util sgauto\n"
|
||||||
|
"\t\tst-util 1234 usb\n"
|
||||||
|
"\t\tst-util /dev/sgX 1234\n"
|
||||||
|
"\t\tst-util 1234 /dev/sgX\n";
|
||||||
|
|
||||||
switch(argc) {
|
|
||||||
|
|
||||||
case 3 : {
|
// Parsing the arguments of command line ...
|
||||||
//sl = stlink_quirk_open(argv[2], 0);
|
|
||||||
// FIXME - hardcoded to usb....
|
|
||||||
sl = stlink_open_usb(10);
|
|
||||||
if(sl == NULL) return 1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
case 2 : {
|
if (argc == 1 || argc > 3) {
|
||||||
if (strcmp(argv[1], "--help") == 0) {
|
|
||||||
fprintf(stdout, HelpStr, NULL);
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#if CONFIG_USE_LIBSG
|
|
||||||
case 1 : { // Search ST-LINK (from /dev/sg0 to /dev/sg99)
|
|
||||||
const int DevNumMax = 99;
|
|
||||||
int ExistDevCount = 0;
|
|
||||||
|
|
||||||
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) ) {
|
|
||||||
sl = stlink_quirk_open(DevName, 0);
|
|
||||||
ExistDevCount++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
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) ) {
|
|
||||||
sl = stlink_quirk_open(DevName, 0);
|
|
||||||
ExistDevCount++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(sl != NULL) break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(sl == NULL) {
|
|
||||||
fprintf(stdout, "\nNumber of /dev/sgX devices found: %i \n",
|
|
||||||
ExistDevCount);
|
|
||||||
fprintf(stderr, "ST-LINK not found\n");
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
default: {
|
|
||||||
fprintf(stderr, HelpStr, NULL);
|
fprintf(stderr, HelpStr, NULL);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for(int a = 1; a < argc; a++) {
|
||||||
|
|
||||||
|
// Port
|
||||||
|
int p = atoi(argv[a]);
|
||||||
|
if (p < 0 || p > 0xFFFF) {
|
||||||
|
fprintf(stderr, "Invalid port\n");
|
||||||
|
fprintf(stderr, HelpStr, NULL);
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
|
if (p > 0 && port == 0) {port = p; continue;}
|
||||||
|
|
||||||
|
// if (p == 0) ...
|
||||||
|
|
||||||
|
// usb
|
||||||
|
if (!strcmp(argv[a], "usb")) {
|
||||||
|
if (sl != NULL) return 1;
|
||||||
|
sl = stlink_open_usb(10);
|
||||||
|
if(sl == NULL) return 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// /dev/sgX
|
||||||
|
if (!strncmp(argv[a], "/dev/sgX", 7)) {
|
||||||
|
if(!CONFIG_USE_LIBSG) {
|
||||||
|
fprintf(stderr, "libsg not use\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
if (sl != NULL) return 1;
|
||||||
|
sl = stlink_quirk_open(argv[a], 0);
|
||||||
|
if(sl == NULL) return 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// sg_auto
|
||||||
|
if (!strcmp(argv[a], "sgauto")) {
|
||||||
|
if(!CONFIG_USE_LIBSG) {
|
||||||
|
fprintf(stderr, "libsg not use\n");
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Search ST-LINK (from /dev/sg0 to /dev/sg99)
|
||||||
|
for(int DevNum = 0; DevNum <= 99; DevNum++)
|
||||||
|
{
|
||||||
|
if(sl != NULL) return 1;
|
||||||
|
if(DevNum < 10) {
|
||||||
|
char DevName[] = "/dev/sgX";
|
||||||
|
DevName[7] = DevNum + '0';
|
||||||
|
if ( !access(DevName, F_OK) )
|
||||||
|
sl = stlink_quirk_open(DevName, 0);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
char DevName[] = "/dev/sgXY";
|
||||||
|
DevName[7] = DevNum/10 + '0';
|
||||||
|
DevName[8] = DevNum%10 + '0';
|
||||||
|
if ( !access(DevName, F_OK) )
|
||||||
|
sl = stlink_quirk_open(DevName, 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
if(sl == NULL) return 1;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Invalid argumets
|
||||||
|
fprintf(stderr, "Invalid argumets\n");
|
||||||
|
fprintf(stderr, HelpStr, NULL);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Default transport: USB
|
||||||
|
if (sl == NULL) sl = stlink_open_usb(10);
|
||||||
|
// Default port: 4242
|
||||||
|
if (port == 0) port = 4242;
|
||||||
|
|
||||||
|
|
||||||
|
if (sl == NULL) return 1;
|
||||||
|
|
||||||
if (stlink_current_mode(sl) == STLINK_DEV_DFU_MODE) {
|
if (stlink_current_mode(sl) == STLINK_DEV_DFU_MODE) {
|
||||||
stlink_exit_dfu_mode(sl);
|
stlink_exit_dfu_mode(sl);
|
||||||
|
|
@ -200,8 +232,6 @@ int main(int argc, char** argv) {
|
||||||
// memory map is in 1k blocks.
|
// memory map is in 1k blocks.
|
||||||
current_memory_map = make_memory_map(params, flash_size * 0x400);
|
current_memory_map = make_memory_map(params, flash_size * 0x400);
|
||||||
|
|
||||||
int port = 4242;
|
|
||||||
|
|
||||||
while(serve(sl, port) == 0);
|
while(serve(sl, port) == 0);
|
||||||
|
|
||||||
/* Switch back to mass storage mode before closing. */
|
/* Switch back to mass storage mode before closing. */
|
||||||
|
|
|
||||||
Ładowanie…
Reference in New Issue