cancel
Showing results for 
Search instead for 
Did you mean: 

STM32L471 System Memory always mapped to 0x0000_0000?

Pieter Conradie
Associate III

Hi everyone!

I have found that the System Memory (Boot ROM) is always mapped to 0x0000_0000 on the STM32L471RET6 that I'm developing on. The Flash Memory is mapped to 0x0800_0000 as expected but as soon as interrupts are triggered they jump to 0x1FFFF_xxxx.

To prevent this SCB_VTOR must be set to 0x0800_0000 by defining USER_VECT_TAB_ADDRESS so that code in system_stm32l4xx.c:SystemInit() is compiled in.

As far as I can tell there are two settings in the Reference Manual that can affect this. The BFB2 bit in User Options and the SYSCFG_MEMRMP:MEM_MODE[2:0] register.

I have checked and SYSCFG_MEMRMP = 0x0000_0000 and @0x1FFFF_7800 = 0xFF

EF_F8AA and FLASH_OPTR = 0xFFEF_F8AA so no surprises there.

Can anyone confirm that this is indeed a bug? Did I miss something?

Thanks in advance,

Pieter

https://piconomix.com

P.S. I checked and the STM32L476 on the NUCLEO-L476RG does not exhibit this problem.

This discussion is locked. Please start a new topic to ask your question.
1 ACCEPTED SOLUTION

Accepted Solutions
KnarfB
Super User

Is the BOOT0 pin low?

View solution in original post

3 REPLIES 3
KnarfB
Super User

Is the BOOT0 pin low?

Pieter Conradie
Associate III

Sorry, forgot to add that detail: yes, the BOOT0 pin is low.

Pieter Conradie
Associate III

Oh wait! Somewhere I must have lost the plot :pensive_face: Thanks @KnarfB​ ! I checked again and there was the jumper indeed, pulling BOOT0 high. There must have been a mix up somewhere during the investigation and it's hard to spot (black on black). I've removed the offending jumper and now the memory map is OK.

Apologies!

Pieter

Announcement

We’re moving the ST Community to a new platform to give you a better and more reliable community experience.