/***************************************************************************
- * Copyright (C) 2014 by Ladislav Bábel *
+ * Copyright (C) 2014 by Ladislav Bábel *
* ladababel@seznam.cz *
* *
* Copyright (C) 2015 by Andreas Bomholtz *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program. If not, see <http://www.gnu.org/licenses/>. *
***************************************************************************/
#ifdef HAVE_CONFIG_H
}
if (((cpuid >> 4) & 0xfff) != 0xc23) {
- LOG_ERROR("Target is not CortexM3");
+ LOG_ERROR("Target is not Cortex-M3");
return ERROR_FAIL;
}
return ERROR_BUF_TOO_SMALL;
/* Package */
- if (sim3x_info->device_package) {
- printed = snprintf(buf, buf_size, "-G%s", sim3x_info->device_package);
- buf += printed;
- buf_size -= printed;
+ printed = snprintf(buf, buf_size, "-G%s", sim3x_info->device_package);
+ buf += printed;
+ buf_size -= printed;
- if (buf_size <= 0)
- return ERROR_BUF_TOO_SMALL;
- }
+ if (buf_size <= 0)
+ return ERROR_BUF_TOO_SMALL;
}
}
int retval;
LOG_DEBUG("DAP_REG[0x%02x] <- %08" PRIX32, reg, value);
- retval = dap_queue_ap_write(dap, reg, value);
+ retval = dap_queue_ap_write(dap_ap(dap, SIM3X_AP), reg, value);
if (retval != ERROR_OK) {
LOG_DEBUG("DAP: failed to queue a write request");
return retval;
static int ap_read_register(struct adiv5_dap *dap, unsigned reg, uint32_t *result)
{
int retval;
- retval = dap_queue_ap_read(dap, reg, result);
+
+ retval = dap_queue_ap_read(dap_ap(dap, SIM3X_AP), reg, result);
if (retval != ERROR_OK) {
LOG_DEBUG("DAP: failed to queue a read request");
return retval;
return ERROR_FAIL;
}
- const uint8_t origninal_ap = dap->ap_current >> 24;
- dap_ap_select(dap, SIM3X_AP);
-
ret = ap_read_register(dap, SIM3X_AP_ID, &val);
if (ret != ERROR_OK)
return ret;
if (ret != ERROR_OK)
return ret;
- dap_ap_select(dap, origninal_ap);
-
LOG_INFO("Mass erase success");
return ERROR_OK;
}
return ret;
if ((val & CPUID_CHECK_VALUE_MASK) != CPUID_CHECK_VALUE) {
- LOG_ERROR("Target is not ARM CortexM3 or is already locked");
+ LOG_ERROR("Target is not ARM Cortex-M3 or is already locked");
return ERROR_FAIL;
}
} else {
- const uint8_t origninal_ap = dap->ap_current >> 24;
- dap_ap_select(dap, SIM3X_AP);
-
/* check SIM3X_AP_ID */
ret = ap_read_register(dap, SIM3X_AP_ID, &val);
if (ret != ERROR_OK)
if (ret != ERROR_OK)
return ret;
- dap_ap_select(dap, origninal_ap);
-
if (val & SIM3X_AP_INIT_STAT_LOCK) {
LOG_INFO("Target is already locked");
return ERROR_OK;
return ERROR_FAIL;
}
}
-
- dap_ap_select(dap, origninal_ap);
}
ret = target_read_u32(target, LOCK_WORD_ADDRESS, &val);
.auto_probe = sim3x_auto_probe,
.erase_check = default_flash_blank_check,
.protect_check = sim3x_flash_protect_check,
- .info = sim3x_flash_info
+ .info = sim3x_flash_info,
+ .free_driver_priv = default_flash_free_driver_priv,
};