Hello,
Interestingly, volatile and auto variables show different behaviours with Kinetis Custom MPU HW module.
BUS fault is rised only with volatile variable access. Please see following combinations.
#define RESTRICTED_ADDRESS 0x2001000
/* OK! Rises BUS Fault */
volatile uint32_t val = *(volatile uint32_t*)RESTRICTED_ADDRESS;
/* OK! Rises BUS Fault */
volatile uint32_t val = *(uint32_t*)RESTRICTED_ADDRESS;
/* OK! Rises BUS Fault */
uint32_t val = *(volatile uint32_t*)RESTRICTED_ADDRESS;
/* UPS!!!!!!!!!!!!!!! No BUS Fault Exception, continues to execution */
uint32_t val = *(uint32_t*)RESTRICTED_ADDRESS;
Any idea? Any limitation on Kinetis Custom MPU?
Hi Murat Cakmak
Could you tell us what IDE and MCU are you using? I have tried to replicate what you mention but in my case it rises BUS Fault as expected.
Regards
Jorge Alcala
The other interesting thing is when build project with ARMCC, it works as expected.
Problem is about GCC compiler.