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?