From 5f983a60958c8476b40260c851eb50bd95b86c83 Mon Sep 17 00:00:00 2001 From: Chen Guokai Date: Mon, 20 Apr 2020 14:39:00 +0800 Subject: [PATCH] Fix uninitialized cpuid --- src/common.c | 8 ++++++-- tests/usb.c | 10 +++++++--- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/common.c b/src/common.c index 6226c89..0bd9148 100644 --- a/src/common.c +++ b/src/common.c @@ -814,9 +814,13 @@ int stlink_chip_id(stlink_t *sl, uint32_t *chip_id) { int stlink_cpu_id(stlink_t *sl, cortex_m3_cpuid_t *cpuid) { uint32_t raw; - if (stlink_read_debug32(sl, STLINK_REG_CM3_CPUID, &raw)) + if (stlink_read_debug32(sl, STLINK_REG_CM3_CPUID, &raw)) { + cpuid->implementer_id = 0; + cpuid->variant = 0; + cpuid->part = 0; + cpuid->revision = 0; return -1; - + } cpuid->implementer_id = (raw >> 24) & 0x7f; cpuid->variant = (raw >> 20) & 0xf; cpuid->part = (raw >> 4) & 0xfff; diff --git a/tests/usb.c b/tests/usb.c index 06fd734..4558c8d 100644 --- a/tests/usb.c +++ b/tests/usb.c @@ -30,9 +30,13 @@ int main(int ac, char** av) printf("-- core_id: %#x\n", sl->core_id); cortex_m3_cpuid_t cpuid; - stlink_cpu_id(sl, &cpuid); - printf("cpuid:impl_id = %0#x, variant = %#x\n", cpuid.implementer_id, cpuid.variant); - printf("cpuid:part = %#x, rev = %#x\n", cpuid.part, cpuid.revision); + if (stlink_cpu_id(sl, &cpuid)) { + printf("Failed reading stlink_cpu_id\n"); + } else { + printf("cpuid:impl_id = %0#x, variant = %#x\n", cpuid.implementer_id, cpuid.variant); + printf("cpuid:part = %#x, rev = %#x\n", cpuid.part, cpuid.revision); + } + printf("-- read_sram\n"); static const uint32_t sram_base = STM32_SRAM_BASE;