volatile/auto variable access for Kinetis MPU (K8x)

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

volatile/auto variable access for Kinetis MPU (K8x)

505 Views
muratcakmak
Contributor II

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?

0 Kudos
2 Replies

368 Views
jorge_a_vazquez
NXP Employee
NXP Employee

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

0 Kudos

368 Views
muratcakmak
Contributor II

The other interesting thing is when build project with ARMCC, it works as expected.

Problem is about GCC compiler.

0 Kudos