volatile/auto variable access for Kinetis MPU (K8x)

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

volatile/auto variable access for Kinetis MPU (K8x)

1,145件の閲覧回数
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?

タグ(3)
0 件の賞賛
返信
2 返答(返信)

1,008件の閲覧回数
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 件の賞賛
返信

1,008件の閲覧回数
muratcakmak
Contributor II

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

Problem is about GCC compiler.

0 件の賞賛
返信