Skip to main content
Adomin
Associate II
Mar 1, 2022 11:23 PM UTC
Solved

Reading from flash causes hardfault

I'm working with the STM32wb55ceu MCU which states that it has 512K of flash memory starting from address 0x08000000.

However, I realized that if I compile and run the follow program, it will hard fault when attempting to read the value from flash (line 3)

void main ()
{
 uint8_t i = *(uint8_t *)0x0806f18c;
 (void)i;
 while (1);
}

To my understanding, the flash should end at 0x08080000. and I have confirmed that my flash memory size is 512K by using the st-info utility.

Is there some sort of memory protection I need to disable?

This topic has been closed for replies.
TDK
TDKBest answer
Mar 2, 2022 1:25 AM UTC

0x0806f18c is near the end of the flash.

You're probably reading FLASH that is reserved for the second core (CPU2) handling the wireless functions.

From the datasheet:

0693W00000Kb3QuQAJ.png

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

5 replies

Tesla DeLorean
Guru
Mar 1, 2022 11:41 PM UTC

If you dump the faulting address in the Hard Fault handler, what does it report?

Unwritten FLASH may fail ECC checks

Tips, Buy me a coffee, or three.. PayPal Venmo (See Profile) Up vote any posts that you find helpful, it shows what's working..
Adomin
AdominAuthor
Associate II
Mar 1, 2022 11:54 PM UTC

Looks like BusFault Status Register contains 0x82 which means BFARVALID is set and PRECISERR

if this is what you were asking

TDK
TDKBest answer
Mar 2, 2022 1:25 AM UTC

0x0806f18c is near the end of the flash.

You're probably reading FLASH that is reserved for the second core (CPU2) handling the wireless functions.

From the datasheet:

0693W00000Kb3QuQAJ.png

"If you feel a post has answered your question, please click ""Accept as Solution""."
Adomin
AdominAuthor
Associate II
Mar 2, 2022 1:27 AM UTC

Makes sense. I missed that in the data sheet. Thank you.

TDK
Mar 2, 2022 1:26 AM UTC

Read out FLASH_SFR to verify what's reserved for CPU2.

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