mirror of
https://github.com/linux-msm/qdl.git
synced 2026-02-25 13:12:25 -08:00
When working on a host with multiple boards attached being able to select a specific board by serial number becomes necessary. In the EDL USB descriptors a device serial number is available as part of the iProduct string, so this can be used for comparison. As libusb requires a handle the libusb_open() needs to be moved into the loop. Signed-off-by: Bjorn Andersson <quic_bjorande@quicinc.com>
67 lines
1.1 KiB
C
67 lines
1.1 KiB
C
#include <getopt.h>
|
|
#include <stdbool.h>
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
|
|
#include "qdl.h"
|
|
|
|
bool qdl_debug;
|
|
|
|
static void print_usage(void)
|
|
{
|
|
extern const char *__progname;
|
|
fprintf(stderr,
|
|
"%s [--debug] [-o <ramdump-path>] [segment-filter,...]\n",
|
|
__progname);
|
|
exit(1);
|
|
}
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
struct qdl_device qdl;
|
|
char *ramdump_path = ".";
|
|
char *filter = NULL;
|
|
char *serial = NULL;
|
|
int ret;
|
|
int opt;
|
|
|
|
static struct option options[] = {
|
|
{"debug", no_argument, 0, 'd'},
|
|
{"output", required_argument, 0, 'o'},
|
|
{"serial", required_argument, 0, 'S'},
|
|
{0, 0, 0, 0}
|
|
};
|
|
|
|
while ((opt = getopt_long(argc, argv, "do:S:", options, NULL )) != -1) {
|
|
switch (opt) {
|
|
case 'd':
|
|
qdl_debug = true;
|
|
break;
|
|
case 'o':
|
|
ramdump_path = optarg;
|
|
break;
|
|
case 'S':
|
|
serial = optarg;
|
|
break;
|
|
default:
|
|
print_usage();
|
|
}
|
|
}
|
|
|
|
if (optind < argc)
|
|
filter = argv[optind++];
|
|
|
|
if (optind != argc)
|
|
print_usage();
|
|
|
|
ret = qdl_open(&qdl, serial);
|
|
if (ret)
|
|
return 1;
|
|
|
|
ret = sahara_run(&qdl, NULL, true, ramdump_path, filter);
|
|
if (ret < 0)
|
|
return 1;
|
|
|
|
return 0;
|
|
}
|