aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorUwe Bonnes2014-12-18 11:12:09 +0100
committerGareth McMullin2014-12-23 21:32:21 +1300
commitd162e75ceb92de346951b979cee5941bdd6ef651 (patch)
treebc3f5bdcee914a2272c0faf47471855bb3757657 /src
parentfdd77993041b20e85c1c98578ae2923bfba40449 (diff)
stm32f4.c: Add STM32F411 ID.
Diffstat (limited to 'src')
-rw-r--r--src/stm32f1.c16
-rw-r--r--src/stm32f4.c5
-rw-r--r--src/stm32l1.c9
3 files changed, 22 insertions, 8 deletions
diff --git a/src/stm32f1.c b/src/stm32f1.c
index 237135f..d02a26d 100644
--- a/src/stm32f1.c
+++ b/src/stm32f1.c
@@ -59,8 +59,10 @@ static const char stm32f1_driver_str[] = "STM32, Medium density.";
static const char stm32hd_driver_str[] = "STM32, High density.";
static const char stm32f3_driver_str[] = "STM32F3xx";
static const char stm32f03_driver_str[] = "STM32F03x";
+static const char stm32f04_driver_str[] = "STM32F04x";
static const char stm32f05_driver_str[] = "STM32F05x";
static const char stm32f07_driver_str[] = "STM32F07x";
+static const char stm32f09_driver_str[] = "STM32F09x";
static const char stm32f1_xml_memory_map[] = "<?xml version=\"1.0\"?>"
/* "<!DOCTYPE memory-map "
@@ -192,19 +194,27 @@ bool stm32f1_probe(struct target_s *target)
target->idcode = adiv5_ap_mem_read(adiv5_target_ap(target), DBGMCU_IDCODE_F0) & 0xfff;
switch(target->idcode) {
- case 0x444: /* STM32F03 */
- case 0x440: /* STM32F05 */
- case 0x448: /* STM32F07 */
+ case 0x444: /* STM32F03 RM0091 Rev.7 */
+ case 0x445: /* STM32F04 RM0091 Rev.7 */
+ case 0x440: /* STM32F05 RM0091 Rev.7 */
+ case 0x448: /* STM32F07 RM0091 Rev.7 */
+ case 0x442: /* STM32F09 RM0091 Rev.7 */
switch(target->idcode) {
case 0x444: /* STM32F03 */
target->driver = stm32f03_driver_str;
break;
+ case 0x445: /* STM32F04 */
+ target->driver = stm32f04_driver_str;
+ break;
case 0x440: /* STM32F05 */
target->driver = stm32f05_driver_str;
break;
case 0x448: /* STM32F07 */
target->driver = stm32f07_driver_str;
break;
+ case 0x442: /* STM32F09 */
+ target->driver = stm32f09_driver_str;
+ break;
}
target->xml_mem_map = stm32f1_xml_memory_map;
target->flash_erase = stm32md_flash_erase;
diff --git a/src/stm32f4.c b/src/stm32f4.c
index 892af41..4f27859 100644
--- a/src/stm32f4.c
+++ b/src/stm32f4.c
@@ -170,8 +170,9 @@ bool stm32f4_probe(struct target_s *target)
case 0x411: /* Documented to be 0x413! This is what I read... */
case 0x413: /* F407VGT6 */
case 0x419: /* 427/437 */
- case 0x423: /* F401 */
- case 0x433: /* F401RET6U */
+ case 0x423: /* F401 B/C RM0368 Rev.3 */
+ case 0x431: /* F411 RM0383 Rev.4 */
+ case 0x433: /* F401 D/E RM0368 Rev.3 */
target->xml_mem_map = stm32f4_xml_memory_map;
target->driver = stm32f4_driver_str;
target->flash_erase = stm32f4_flash_erase;
diff --git a/src/stm32l1.c b/src/stm32l1.c
index 873d9b9..0472885 100644
--- a/src/stm32l1.c
+++ b/src/stm32l1.c
@@ -91,9 +91,12 @@ bool stm32l1_probe(struct target_s *target)
idcode = adiv5_ap_mem_read(adiv5_target_ap(target), STM32L1_DBGMCU_IDCODE);
switch(idcode & 0xFFF) {
- case 0x416: /* Medium density */
- case 0x427: /* Medium+ density*/
- case 0x436: /* Medium+/High density */
+ case 0x416: /* CAT. 1 device */
+ case 0x429: /* CAT. 2 device */
+ case 0x427: /* CAT. 3 device */
+ case 0x436: /* CAT. 4 device */
+ case 0x437: /* CAT. 5 device */
+ target->idcode = idcode & 0xFFF;
target->driver = stm32l1_driver_str;
target->xml_mem_map = stm32l1_xml_memory_map;
target->flash_erase = stm32l1_flash_erase;