cancel
Showing results for 
Search instead for 
Did you mean: 

Reading from flash causes hardfault

Adomin
Associate II

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?

1 ACCEPTED SOLUTION

Accepted Solutions
TDK
Guru

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".

View solution in original post

5 REPLIES 5

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
Up vote any posts that you find helpful, it shows what's working..

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

if this is what you were asking

TDK
Guru

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".
TDK
Guru

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".
Adomin
Associate II

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