2020-04-22 08:45 AM
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?
Solved! Go to Solution.
2020-04-22 02:23 PM
Per product page RM0360
2020-04-22 10:32 AM
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
2020-04-22 02:02 PM
... which doesn't mean the RM shouldn't contain the correct complete information...
>STM32F030CCT6
Formally, the F030 are not covered by RM0091...
JW
2020-04-22 02:23 PM
Per product page RM0360
2020-04-22 03:35 PM
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.
2020-04-24 04:30 AM
Ah that explains it!
So it was my error using the wrong reference manual.
Glad to have the correct one now!
Thanks!