stlink-common: Ensure flash type is properly declared in device params
authorMaxime Coquelin <mcoquelin.stm32@gmail.com>
Mon, 14 Mar 2016 14:09:22 +0000 (15:09 +0100)
committerMaxime Coquelin <mcoquelin.stm32@gmail.com>
Mon, 14 Mar 2016 14:17:44 +0000 (15:17 +0100)
Signed-off-by: Maxime Coquelin <mcoquelin.stm32@gmail.com>
src/stlink-common.c
src/stlink-common.h

index 76413b4fdca7009df03b7dd8b9ed5b6c18db38b5..a1ccdfdcc70bc63c44e41090f24ad5b3dc2dcdb8 100644 (file)
@@ -591,6 +591,12 @@ int stlink_load_device_params(stlink_t *sl) {
         return -1;
     }
 
+    if (params->flash_type == FLASH_TYPE_UNKNOWN) {
+        WLOG("Invalid flash type, please check device declaration\n");
+        return -1;
+    }
+
+
     // These are fixed...
     sl->flash_base = STM32_FLASH_BASE;
     sl->sram_base = STM32_SRAM_BASE;
@@ -2063,7 +2069,7 @@ int run_flash_loader(stlink_t *sl, flash_loader_t* fl, stm32_addr_t target, cons
 
     reg rr;
     int i = 0;
-    size_t count;
+    size_t count = 0;
 
     DLOG("Running flash loader, write address:%#x, size: %zd\n", target, size);
     // FIXME This can never return -1
@@ -2085,9 +2091,6 @@ int run_flash_loader(stlink_t *sl, flash_loader_t* fl, stm32_addr_t target, cons
         count = size / sizeof(uint64_t);
         if (size % sizeof(uint64_t))
             ++count;
-    } else {
-        fprintf(stderr, "unknown coreid 0x%x, don't know what flash loader to use\n", sl->core_id);
-        return -1;
     }
 
     /* setup core */
index e7be10ff021ee60663df04695a24d6c686c89caa..448d01a56b5bfac2a23e047bc2aee4c9c9f30d1c 100644 (file)
@@ -167,6 +167,7 @@ extern "C" {
 #define C_BUF_LEN 32
 
     enum flash_type {
+        FLASH_TYPE_UNKNOWN = 0,
         FLASH_TYPE_F0,
         FLASH_TYPE_L0,
         FLASH_TYPE_F4,