aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGareth McMullin2015-03-29 15:20:00 -0700
committerGareth McMullin2015-03-29 15:20:00 -0700
commit31fae032f79b64df38bceec85dfb57b5d021174f (patch)
tree25d0ee11e90679db78c2d18f28159822c246cfc9
parent9f271d5cd7c51251ec5e90a986f6f70a3fff75d8 (diff)
cortexm: Separate stub loading from running.
-rw-r--r--src/cortexm.c2
-rw-r--r--src/include/cortexm.h1
-rw-r--r--src/stm32f1.c10
-rw-r--r--src/stm32f4.c8
4 files changed, 9 insertions, 12 deletions
diff --git a/src/cortexm.c b/src/cortexm.c
index 0a9785f..0c0bf02 100644
--- a/src/cortexm.c
+++ b/src/cortexm.c
@@ -616,7 +616,6 @@ static int cortexm_fault_unwind(target *t)
}
int cortexm_run_stub(target *t, uint32_t loadaddr,
- const uint16_t *stub, uint32_t stublen,
uint32_t r0, uint32_t r1, uint32_t r2, uint32_t r3)
{
uint32_t regs[t->regs_size / 4];
@@ -630,7 +629,6 @@ int cortexm_run_stub(target *t, uint32_t loadaddr,
regs[16] = 0x1000000;
regs[19] = 0;
- target_mem_write(t, loadaddr, stub, stublen);
cortexm_regs_write(t, regs);
if (target_check_error(t))
diff --git a/src/include/cortexm.h b/src/include/cortexm.h
index 24e4c4d..ec3369c 100644
--- a/src/include/cortexm.h
+++ b/src/include/cortexm.h
@@ -147,7 +147,6 @@ bool cortexm_attach(target *t);
void cortexm_detach(target *t);
void cortexm_halt_resume(target *t, bool step);
int cortexm_run_stub(target *t, uint32_t loadaddr,
- const uint16_t *stub, uint32_t stublen,
uint32_t r0, uint32_t r1, uint32_t r2, uint32_t r3);
int cortexm_pc_write(target *t, const uint32_t val);
diff --git a/src/stm32f1.c b/src/stm32f1.c
index 49a5815..459c159 100644
--- a/src/stm32f1.c
+++ b/src/stm32f1.c
@@ -256,11 +256,11 @@ static int stm32f1_flash_write(target *t, uint32_t dest,
memcpy((uint8_t *)data + offset, src, len);
/* Write stub and data to target ram and set PC */
- target_mem_write(t, STUB_BUFFER_BASE, (void*)data, sizeof(data));
- return cortexm_run_stub(t, SRAM_BASE, stm32f1_flash_write_stub,
- sizeof(stm32f1_flash_write_stub),
- dest - offset, STUB_BUFFER_BASE, sizeof(data),
- 0);
+ target_mem_write(t, SRAM_BASE, stm32f1_flash_write_stub,
+ sizeof(stm32f1_flash_write_stub));
+ target_mem_write(t, STUB_BUFFER_BASE, data, sizeof(data));
+ return cortexm_run_stub(t, SRAM_BASE, dest - offset,
+ STUB_BUFFER_BASE, sizeof(data), 0);
}
static bool stm32f1_cmd_erase_mass(target *t)
diff --git a/src/stm32f4.c b/src/stm32f4.c
index 125a15e..03a33f0 100644
--- a/src/stm32f4.c
+++ b/src/stm32f4.c
@@ -216,11 +216,11 @@ static int stm32f4_flash_write(target *t, uint32_t dest,
memcpy((uint8_t *)data + offset, src, len);
/* Write buffer to target ram call stub */
+ target_mem_write(t, SRAM_BASE, stm32f4_flash_write_stub,
+ sizeof(stm32f4_flash_write_stub));
target_mem_write(t, STUB_BUFFER_BASE, data, sizeof(data));
- return cortexm_run_stub(t, SRAM_BASE, stm32f4_flash_write_stub,
- sizeof(stm32f4_flash_write_stub),
- dest - offset, STUB_BUFFER_BASE, sizeof(data),
- 0);
+ return cortexm_run_stub(t, SRAM_BASE, dest - offset,
+ STUB_BUFFER_BASE, sizeof(data), 0);
}
static bool stm32f4_cmd_erase_mass(target *t)