if (o.do_read == 0) /* write */
{
- err = stlink_fwrite_flash(sl, o.filename, o.addr);
+ if ((o.addr >= sl->flash_base) &&
+ (o.addr < sl->flash_base + sl->flash_size))
+ err = stlink_fwrite_flash(sl, o.filename, o.addr);
+ else if ((o.addr >= sl->sram_base) &&
+ (o.addr < sl->sram_base + sl->sram_size))
+ err = stlink_fwrite_sram(sl, o.filename, o.addr);
if (err == -1)
{
printf("stlink_fwrite_flash() == -1\n");
int stlink_erase_flash_mass(stlink_t* sl);
int stlink_write_flash(stlink_t* sl, stm32_addr_t address, uint8_t* data, unsigned length);
int stlink_fwrite_flash(stlink_t *sl, const char* path, stm32_addr_t addr);
+ int stlink_fwrite_sram(stlink_t *sl, const char* path, stm32_addr_t addr);
int stlink_verify_write_flash(stlink_t *sl, stm32_addr_t address, uint8_t *data, unsigned length);
// PUBLIC