From 8575d3e7a60334b5c1dbef6ca0f923f921b9dc37 Mon Sep 17 00:00:00 2001 From: Uwe Bonnes Date: Mon, 10 Sep 2018 21:53:39 +0200 Subject: [PATCH] stm32f7/h7: Use the DPv2 provided idcode for MCU identification. --- src/target/stm32f4.c | 7 ++++++- src/target/stm32h7.c | 3 ++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/target/stm32f4.c b/src/target/stm32f4.c index a7848fc..fd8e874 100644 --- a/src/target/stm32f4.c +++ b/src/target/stm32f4.c @@ -185,7 +185,12 @@ char *stm32f4_get_chip_name(uint32_t idcode) bool stm32f4_probe(target *t) { - uint32_t idcode = target_mem_read32(t, DBGMCU_IDCODE) & 0xFFF; + ADIv5_AP_t *ap = cortexm_ap(t); + uint32_t idcode; + + idcode = (ap->dp->targetid >> 16) & 0xfff; + if (!idcode) + idcode = target_mem_read32(t, DBGMCU_IDCODE) & 0xFFF; if (idcode == ID_STM32F20X) { /* F405 revision A have a wrong IDCODE, use ARM_CPUID to make the diff --git a/src/target/stm32h7.c b/src/target/stm32h7.c index 5e84376..8eb48f3 100644 --- a/src/target/stm32h7.c +++ b/src/target/stm32h7.c @@ -174,7 +174,8 @@ static void stm32h7_add_flash(target *t, bool stm32h7_probe(target *t) { - uint32_t idcode = target_mem_read32(t, DBGMCU_IDCODE) & 0xFFF; + ADIv5_AP_t *ap = cortexm_ap(t); + uint32_t idcode = (ap->dp->targetid >> 16) & 0xfff; if (idcode == ID_STM32H74x) { /* RM0433 Rev 4 is not really clear, what bits are needed. * Set all possible relevant bits for now. */