Browse Source

stlink: add armv7m stlink handling

This enables us to better handle some of the low level functions that the
stlink does not support. It also enables us to share a few more of the
standard cortex_m3 functions if necessary.

Change-Id: I7a2c57450122012ec189245d8879d8967913e00e
Signed-off-by: Spencer Oliver <spen@spen-soft.co.uk>
Reviewed-on: http://openocd.zylin.com/637
Tested-by: jenkins
tags/v0.6.0-rc1
Spencer Oliver 12 years ago
parent
commit
ec5e4bae25
4 changed files with 11 additions and 12 deletions
  1. +0
    -8
      src/target/arm_adi_v5.c
  2. +3
    -1
      src/target/armv7m.h
  3. +7
    -3
      src/target/cortex_m.c
  4. +1
    -0
      src/target/stm32_stlink.c

+ 0
- 8
src/target/arm_adi_v5.c View File

@@ -1096,14 +1096,6 @@ int ahbap_debugport_init(struct adiv5_dap *dap)

LOG_DEBUG(" ");

/* test for initialized low level jtag hardware
* this always fails for stlink hardware
*/
if (!dap->jtag_info) {
LOG_DEBUG("No low level jtag hardware found");
return ERROR_OK;
}

/* JTAG-DP or SWJ-DP, in JTAG mode
* ... for SWD mode this is patched as part
* of link switchover


+ 3
- 1
src/target/armv7m.h View File

@@ -171,9 +171,11 @@ struct armv7m_common {
struct adiv5_dap dap;

int fp_feature;

uint32_t demcr;

/* stlink is a high level adapter, does not support all functions */
bool stlink;

/* Direct processor core register read and writes */
int (*load_core_reg_u32)(struct target *target,
enum armv7m_regtype type, uint32_t num, uint32_t *value);


+ 7
- 3
src/target/cortex_m.c View File

@@ -1780,9 +1780,13 @@ int cortex_m3_examine(struct target *target)
struct adiv5_dap *swjdp = &cortex_m3->armv7m.dap;
struct armv7m_common *armv7m = target_to_armv7m(target);

retval = ahbap_debugport_init(swjdp);
if (retval != ERROR_OK)
return retval;
/* stlink shares the examine handler but does not support
* all its calls */
if (!armv7m->stlink) {
retval = ahbap_debugport_init(swjdp);
if (retval != ERROR_OK)
return retval;
}

if (!target_was_examined(target)) {
target_set_examined(target);


+ 1
- 0
src/target/stm32_stlink.c View File

@@ -278,6 +278,7 @@ static int stm32_stlink_init_arch_info(struct target *target,
armv7m->store_core_reg_u32 = stm32_stlink_store_core_reg_u32;

armv7m->examine_debug_reason = stm32_stlink_examine_debug_reason;
armv7m->stlink = true;

return ERROR_OK;
}


Loading…
Cancel
Save