Skip to content

Add support for STM32L412 #754

Closed

Description

@jcw

I've made the following changes to stlink to get it to recognise and upload to the L412:

$ git diff
diff --git a/src/chipid.c b/src/chipid.c
index 6f93af1..ca6e815 100644
--- a/src/chipid.c
+++ b/src/chipid.c
@@ -507,6 +507,19 @@ static const struct stlink_chipid_params devices[] = {
             .bootrom_base = 0x1ff00000,
             .bootrom_size = 0x2000
         },
+        {
+            // STM32L41X
+            .chip_id = STLINK_CHIPID_STM32_L41X,
+            .description = "L412 device",
+            .flash_type = STLINK_FLASH_TYPE_L4,
+            .flash_size_reg = 0x1fff75e0,    // "Flash size data register" (sec 49.2, page 1809)
+            .flash_pagesize = 0x800,         // Page erase (2 Kbyte) (sec 3.2, page 93)
+            // SRAM1 is 32k at 0x20000000
+            // SRAM2 is 8k at 0x20008000
+            .sram_size = 0x0A000,
+            .bootrom_base = 0x1fff0000,
+            .bootrom_size = 0x7000
+        },
         {
             // unknown
             .chip_id = STLINK_CHIPID_UNKNOWN,
diff --git a/src/flash_loader.c b/src/flash_loader.c
index 7684680..f2e6367 100644
--- a/src/flash_loader.c
+++ b/src/flash_loader.c
@@ -306,6 +306,7 @@ int stlink_flash_loader_write_to_sram(stlink_t *sl, stm32_addr_t* addr, size_t*
         loader_code = loader_code_stm32f0;
         loader_size = sizeof(loader_code_stm32f0);
     } else if ((sl->chip_id == STLINK_CHIPID_STM32_L4) ||
+              (sl->chip_id == STLINK_CHIPID_STM32_L41X) ||
               (sl->chip_id == STLINK_CHIPID_STM32_L43X) ||
               (sl->chip_id == STLINK_CHIPID_STM32_L46X) ||
               (sl->chip_id == STLINK_CHIPID_STM32_L4RX) ||

I'm not sure about bootrom_size, but the rest should be correct.

Note also that STLINK_CHIPID_STM32_L41X (0x464) was already present in src/chipid.h.

Activity

  1. xor-gate commented on Dec 28, 2018

    @xor-gate
    Contributor
  2. deleted a comment from jcw on Feb 2, 2019
  3. deleted a comment from jcw on Feb 2, 2019
  4. changed the title [-]Here's how to add support for STM32L412[/-] [+]Add support for STM32L412[/+] on Feb 2, 2019
  5. added this to the milestone on Feb 15, 2019
  6. EliKrumholz commented on Mar 27, 2019

    @EliKrumholz
    Contributor

    I implemented a similar change without seeing this first and ended up with all the same values as @jcw, and it appears to be working fine with the NUCLEO-L412KB board. @xor-gate Can I open up a pull request (EliKrumholz@348149b), or were there any other issues that needed to be addressed?

  7. lukebayes commented on Feb 10, 2020

    @lukebayes

    I'm struggling to get st-link to work on an STM32L412x chip and stumbled over this thread. I got excited and thought maybe this change was never integrated, but alas, it was.

    For future readers, the change(s) suggested by @jcw & @EliKrumholz above was merged in May of 2019.

    Thanks!

  8. modified the milestones: , , , v1.6.1 on Feb 19, 2020
  9. 4 remaining items

  10. added this to the milestone on Feb 21, 2020
  11. lukebayes commented on Feb 21, 2020

    @lukebayes

    I can confirm, that I was able to get STLINK to upload directly to two different STM32L412xx chips using both FTDI and SWD without any changes to software.

  12. Nightwalker-87 commented on Feb 21, 2020

    @Nightwalker-87
    Member

    Fixed since commit 189f253 which is part of Release v1.6.0.

  13. modified the milestones: , v1.6.1, v1.6.0 on Feb 21, 2020
  14. linked a pull request that will close this issueinitial support for STM32L41X #799on Mar 20, 2020
  15. locked as resolved and limited conversation to collaborators on Apr 23, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions