Skip to content

Commit 08da1b4

Browse files
committed
flash/nor/kinetis: pull SRST low during mass erase
Mass erase operation might be impacted by different factors, apparently the most reliable way is to do it while asserting the chip reset line. Change-Id: Id6ab57eaec86e402ffdf4f5c8843e7735640f03e Signed-off-by: Paul Fertser <[email protected]> Reviewed-on: http://openocd.zylin.com/2424 Tested-by: jenkins Reviewed-by: Spencer Oliver <[email protected]>
1 parent 1fa4c72 commit 08da1b4

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

src/flash/nor/kinetis.c

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
#include "config.h"
3232
#endif
3333

34+
#include "jtag/interface.h"
3435
#include "imp.h"
3536
#include <helper/binarybuffer.h>
3637
#include <target/algorithm.h>
@@ -313,6 +314,14 @@ COMMAND_HANDLER(kinetis_mdm_mass_erase)
313314
* Reset Request bit in the MDM-AP control register after
314315
* establishing communication...
315316
*/
317+
318+
/* assert SRST */
319+
if (jtag_get_reset_config() & RESET_HAS_SRST)
320+
adapter_assert_reset();
321+
else
322+
LOG_WARNING("Attempting mass erase without hardware reset. This is not reliable; "
323+
"it's recommended you connect SRST and use ``reset_config srst_only''.");
324+
316325
dap_ap_select(dap, 1);
317326

318327
retval = kinetis_mdm_write_register(dap, MDM_REG_CTRL, MEM_CTRL_SYS_RES_REQ);
@@ -364,6 +373,9 @@ COMMAND_HANDLER(kinetis_mdm_mass_erase)
364373
if (retval != ERROR_OK)
365374
return retval;
366375

376+
if (jtag_get_reset_config() & RESET_HAS_SRST)
377+
adapter_deassert_reset();
378+
367379
dap_ap_select(dap, original_ap);
368380
return ERROR_OK;
369381
}

0 commit comments

Comments
 (0)