cancel
Showing results for 
Search instead for 
Did you mean: 

STM32F0 System Memory location wrong in Reference Manual?

JopHuttenhuis
Associate

MCU: STM32F030CCT6

Programmer: ST-Link/V2

Software: STM32 ST-LINK Utility v4.1.0.0

I'm new to STM32 mcu's and trying to comprehend the memory map.

The Reference manual (RM0091, DocID018940 Rev 9) states in section 2.5 that when the Boot0 (pin) is high and the nBoot1 (bit) is high, the System memory is aliased to the boot area 0x0000 0000.

And when the Boot0 (pin) is low, the Main Flash Memory is aliased to the boot area.

To get more comfortable with working with ST-LINK Utility and test my understanding of the memory map I tought it would be a good excersise to verify this.

So using the STM32 ST-Link Utility I compare 3KB of Main Flash memory with the boot area while Boot0 (pin) is low.

And yes, the memory content between boundaries

0x0000 0000 - 0x0000 0C00

is idential to

0x0800 0000 - 0x0800 0C00

This is as expected.

Now I reboot the system while holding the Boot0 pin high (and nBoot1 

 bit is also high), thus I expect the System Memory content at the boot area.

But the memory content between boundaries

0x0000 0000 - 0x0000 0C00

is NOT idential to

0x1FFF EC00 - 0x1FFF F800

This is unexpected, right?

Further reading in AN2606 (Rev 42) Table 136 states the System memory for STM32F030xC is located at 0x1FFFD800 - 0x1FFF F7FF

When reading this section the boot area matched, so apparently the System Memory is shifted 5KByte,

from 0x1FFF EC00 to 0x1FFF D800, why is that?

This seems to me the Reference manual (RM0091, Rev9) has incorrect information about System Memory location.

Am I misunderstanding something?

1 ACCEPTED SOLUTION

Accepted Solutions
5 REPLIES 5

There are several F0 die, those supporting USB/DFU and/or I2C have larger System Memory (OTP/ROM) footprints.

For example the one supporting USB and I2C is 13KB, rather than 8KB, and starts at 0x1FFFC400

Tips, Buy me a coffee, or three.. PayPal Venmo
Up vote any posts that you find helpful, it shows what's working..

... which doesn't mean the RM shouldn't contain the correct complete information...

>STM32F030CCT6

Formally, the F030 are not covered by RM0091...

JW

TDK
Guru

It's confusing, but RM0091 is for STM32F0x1/STM32F0x2/STM32F0x8. The STM32F030 clearly doesn't fit any of these patterns.

The reference manual for STM32F030 is RM0360, which is for STM32F030x4/x6/x8/xC and STM32F070x6/xB. It correctly lists the system memory as per clive's response.

If you feel a post has answered your question, please click "Accept as Solution".
JopHuttenhuis
Associate

Ah that explains it!

So it was my error using the wrong reference manual.

Glad to have the correct one now!

Thanks!