kinetis : Fix broken check for mass erase.
If the flash is not ready (MDM_STAT_FREADY is 0) then dap_syssec_kinetis_mdmap() would act as if the MDM_STAT_SYSSEC bit was set and erase the flash. Wait until MDM_STAT_FREADY is set before checking the MDM_STAT_SYSSEC bit. Change-Id: I5c3352f625599016625ed9be8787033f49bfacea Signed-off-by: Per Ekman <pekenator@gmail.com> Reviewed-on: http://openocd.zylin.com/1762 Tested-by: jenkins Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
This commit is contained in:
parent
1e6970dafd
commit
88e9d0f408
|
@ -671,14 +671,16 @@ int dap_syssec_kinetis_mdmap(struct adiv5_dap *dap)
|
||||||
* it's important that the device is out of
|
* it's important that the device is out of
|
||||||
* reset here
|
* reset here
|
||||||
*/
|
*/
|
||||||
|
do {
|
||||||
retval = dap_queue_ap_read(dap, MDM_REG_STAT, &val);
|
retval = dap_queue_ap_read(dap, MDM_REG_STAT, &val);
|
||||||
if (retval != ERROR_OK)
|
if (retval != ERROR_OK)
|
||||||
return retval;
|
return retval;
|
||||||
dap_run(dap);
|
dap_run(dap);
|
||||||
|
|
||||||
LOG_DEBUG("MDM_REG_STAT %08" PRIX32, val);
|
LOG_DEBUG("MDM_REG_STAT %08" PRIX32, val);
|
||||||
|
} while (!(val & MDM_STAT_FREADY));
|
||||||
|
|
||||||
if ((val & (MDM_STAT_SYSSEC|MDM_STAT_FREADY)) != (MDM_STAT_FREADY)) {
|
if ((val & MDM_STAT_SYSSEC)) {
|
||||||
LOG_DEBUG("MDMAP: system is secured, masserase needed");
|
LOG_DEBUG("MDMAP: system is secured, masserase needed");
|
||||||
|
|
||||||
if (!(val & MDM_STAT_FMEEN))
|
if (!(val & MDM_STAT_FMEEN))
|
||||||
|
|
Loading…
Reference in New Issue