target: restructure dap support
- add 'dap create' command to create dap instances - move all dap subcmmand into the dap instance commands - keep 'dap info' for convenience - change all armv7 and armv8 targets to take a dap instance instead of a jtag chain position - restructure tap/dap/target relations, jtag tap no longer references the dap, daps are now independently created and initialized. - clean up swd connect - re-initialize DAP also on JTAG errors (e.g. after reset, power cycle) - update documentation - update target files Change-Id: I322cf3969b5407c25d1d3962f9d9b9bc1df067d9 Signed-off-by: Matthias Welwarsky <matthias.welwarsky@sysgo.com> Reviewed-on: http://openocd.zylin.com/4468 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
This commit is contained in:
committed by
Matthias Welwarsky
parent
7274090456
commit
2231da8ec4
@@ -1992,12 +1992,6 @@ int cortex_m_examine(struct target *target)
|
||||
/* stlink shares the examine handler but does not support
|
||||
* all its calls */
|
||||
if (!armv7m->stlink) {
|
||||
retval = dap_dp_init(swjdp);
|
||||
if (retval != ERROR_OK) {
|
||||
LOG_ERROR("Could not initialize the debug port");
|
||||
return retval;
|
||||
}
|
||||
|
||||
if (cortex_m->apsel < 0) {
|
||||
/* Search for the MEM-AP */
|
||||
retval = dap_find_ap(swjdp, AP_TYPE_AHB_AP, &armv7m->debug_ap);
|
||||
@@ -2228,25 +2222,17 @@ static int cortex_m_handle_target_request(void *priv)
|
||||
}
|
||||
|
||||
static int cortex_m_init_arch_info(struct target *target,
|
||||
struct cortex_m_common *cortex_m, struct jtag_tap *tap)
|
||||
struct cortex_m_common *cortex_m, struct adiv5_dap *dap)
|
||||
{
|
||||
struct armv7m_common *armv7m = &cortex_m->armv7m;
|
||||
|
||||
armv7m_init_arch_info(target, armv7m);
|
||||
|
||||
/* tap has no dap initialized */
|
||||
if (!tap->dap) {
|
||||
tap->dap = dap_init();
|
||||
|
||||
/* Leave (only) generic DAP stuff for debugport_init() */
|
||||
tap->dap->tap = tap;
|
||||
}
|
||||
|
||||
/* default reset mode is to use srst if fitted
|
||||
* if not it will use CORTEX_M3_RESET_VECTRESET */
|
||||
cortex_m->soft_reset_config = CORTEX_M_RESET_VECTRESET;
|
||||
|
||||
armv7m->arm.dap = tap->dap;
|
||||
armv7m->arm.dap = dap;
|
||||
|
||||
/* register arch-specific functions */
|
||||
armv7m->examine_debug_reason = cortex_m_examine_debug_reason;
|
||||
@@ -2266,16 +2252,16 @@ static int cortex_m_init_arch_info(struct target *target,
|
||||
static int cortex_m_target_create(struct target *target, Jim_Interp *interp)
|
||||
{
|
||||
struct cortex_m_common *cortex_m = calloc(1, sizeof(struct cortex_m_common));
|
||||
|
||||
cortex_m->common_magic = CORTEX_M_COMMON_MAGIC;
|
||||
cortex_m_init_arch_info(target, cortex_m, target->tap);
|
||||
struct adiv5_private_config *pc;
|
||||
|
||||
if (target->private_config != NULL) {
|
||||
struct adiv5_private_config *pc =
|
||||
(struct adiv5_private_config *)target->private_config;
|
||||
cortex_m->apsel = pc->ap_num;
|
||||
} else
|
||||
cortex_m->apsel = -1;
|
||||
pc = (struct adiv5_private_config *)target->private_config;
|
||||
if (adiv5_verify_config(pc) != ERROR_OK)
|
||||
return ERROR_FAIL;
|
||||
|
||||
cortex_m->apsel = pc->ap_num;
|
||||
|
||||
cortex_m_init_arch_info(target, cortex_m, pc->dap);
|
||||
|
||||
return ERROR_OK;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user