- stm32 flash driver now checks for correct target
authorntfreak <ntfreak@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sun, 10 Feb 2008 15:46:14 +0000 (15:46 +0000)
committerntfreak <ntfreak@b42882b7-edfa-0310-969c-e2dbd0fdcd60>
Sun, 10 Feb 2008 15:46:14 +0000 (15:46 +0000)
git-svn-id: svn://svn.berlios.de/openocd/trunk@288 b42882b7-edfa-0310-969c-e2dbd0fdcd60

src/flash/stm32x.c

index 5b16f57aefc4cffe3266010b7a8586e903948edb..7039a3d41d012bc1d7995714b0b1a58d7b196b95 100644 (file)
@@ -644,9 +644,20 @@ int stm32x_probe(struct flash_bank_s *bank)
        stm32x_flash_bank_t *stm32x_info = bank->driver_priv;
        int i;
        u16 num_sectors;
+       u32 device_id;
        
        stm32x_info->probed = 0;
        
+       /* read stm32 device id register */
+       target_read_u32(target, 0xE0042000, &device_id);
+       INFO( "device id = 0x%08x", device_id );
+       
+       if (!(device_id & 0x410))
+    {
+               WARNING( "Cannot identify target as a STM32 family." );
+               return ERROR_FLASH_OPERATION_FAILED;
+    }
+    
        /* get flash size from target */
        target_read_u16(target, 0x1FFFF7E0, &num_sectors);
        INFO( "flash size = %dkbytes", num_sectors );