When loading a file to SRAM or Flash, set the Stack pointer with the initial
authorUwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
Thu, 19 Jan 2012 13:17:22 +0000 (14:17 +0100)
committerUwe Bonnes <bon@elektron.ikp.physik.tu-darmstadt.de>
Thu, 19 Jan 2012 13:17:22 +0000 (14:17 +0100)
SP value and the Program counter with the reset value from the Vector
table. Then run reset function

src/stlink-common.c

index 626c86d6d476186ea48dfa58a45bae1914a1008d..87dfc02fbb45ea8b863b4c06ea245bddb2e0c02b 100644 (file)
@@ -799,6 +799,11 @@ int stlink_fwrite_sram
 
     /* success */
     error = 0;
+    /* set stack*/
+    stlink_write_reg(sl, stlink_read_debug32(sl, addr    ),13);
+    /* Set PC to the reset routine*/
+    stlink_write_reg(sl, stlink_read_debug32(sl, addr + 4),15);
+    stlink_run(sl);
 
 on_error:
     unmap_file(&mf);
@@ -1514,6 +1519,11 @@ int stlink_fwrite_flash(stlink_t *sl, const char* path, stm32_addr_t addr) {
        mf.len -= num_empty;
     }
     err = stlink_write_flash(sl, addr, mf.base, mf.len);
+    /* set stack*/
+    stlink_write_reg(sl, stlink_read_debug32(sl, addr    ),13);
+    /* Set PC to the reset routine*/
+    stlink_write_reg(sl, stlink_read_debug32(sl, addr + 4),15);
+    stlink_run(sl);
     unmap_file(&mf);
     return err;
 }