kopia lustrzana https://github.com/stlink-org/stlink
Merge pull request #195 from onnokort/master
Properly detect and warn if multiple stlinky magic bytes are detectedpull/197/head
commit
a1e4a6d51c
|
@ -30,6 +30,7 @@ struct stlinky* stlinky_detect(stlink_t* sl)
|
||||||
{
|
{
|
||||||
static const uint32_t sram_base = 0x20000000;
|
static const uint32_t sram_base = 0x20000000;
|
||||||
struct stlinky* st = malloc(sizeof(struct stlinky));
|
struct stlinky* st = malloc(sizeof(struct stlinky));
|
||||||
|
int multiple=0;
|
||||||
st->sl = sl;
|
st->sl = sl;
|
||||||
printf("sram: 0x%x bytes @ 0x%zx\n", sl->sram_base, sl->sram_size);
|
printf("sram: 0x%x bytes @ 0x%zx\n", sl->sram_base, sl->sram_size);
|
||||||
uint32_t off;
|
uint32_t off;
|
||||||
|
@ -37,14 +38,22 @@ struct stlinky* stlinky_detect(stlink_t* sl)
|
||||||
stlink_read_mem32(sl, sram_base + off, 4);
|
stlink_read_mem32(sl, sram_base + off, 4);
|
||||||
if (STLINKY_MAGIC == READ_UINT32_LE(sl->q_buf))
|
if (STLINKY_MAGIC == READ_UINT32_LE(sl->q_buf))
|
||||||
{
|
{
|
||||||
|
if (multiple > 0)
|
||||||
|
printf("WARNING: another ");
|
||||||
printf("stlinky detected at 0x%x\n", sram_base + off);
|
printf("stlinky detected at 0x%x\n", sram_base + off);
|
||||||
st->off = sram_base + off;
|
st->off = sram_base + off;
|
||||||
stlink_read_mem32(sl, st->off + 4, 4);
|
stlink_read_mem32(sl, st->off + 4, 4);
|
||||||
st->bufsize = (size_t) *(unsigned char*) sl->q_buf;
|
st->bufsize = (size_t) *(unsigned char*) sl->q_buf;
|
||||||
printf("stlinky buffer size 0x%zu \n", st->bufsize);
|
printf("stlinky buffer size 0x%zu \n", st->bufsize);
|
||||||
return st;
|
multiple++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (multiple > 0) {
|
||||||
|
if (multiple > 1) {
|
||||||
|
printf("Using last stlinky structure detected\n");
|
||||||
|
}
|
||||||
|
return st;
|
||||||
|
}
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue