Data storage interrupt invoked for MPC5604b on execution of lwzx

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

Data storage interrupt invoked for MPC5604b on execution of lwzx

ソリューションへジャンプ
1,819件の閲覧回数
pradeepmc
Contributor II

Hi,
Needed some help with an issue where Data storage interrupt is being invoked on execution of lwzx instruction.

I am using the following Codewarrior 10.7 evaluation edition.
Target MCU is MPC5604B

The following default settings are ON for the project:
c/c++ build -> settings -> PowerPC CPU -> Processor is set to ZEN (I cant find e200z0h core)
c/c++ build -> settings -> PowerPC CPU -> Compress for PowerPC VLE (zen)
c/c++ build -> settings -> PowerPC Compiler -> Processor -> Translate PPC ASM to VLE ASM (ZEN)

 On execution of the below code, Data storage interrupt is generated.
I did a step execution on the disassembled code and see that lwzx is the instruction causing the interrupt.

Disassembled code:

2064                  if( listCURRENT_LIST_LENGTH( &( pxReadyTasksLists[ pxCurrentTCB->uxPriority ] ) ) > ( UBaseType_t ) 1 )
40001aca:   e_lwz r3,0(r22)
40001ace:   se_lwz r0,44(r3)
40001ad0:   e_mulli r9,r0,20
40001ad4:   e_lis r8,0x4000
40001ad8:   e_add16i r8,r8,19464
40001adc:   lwzx r0,r8,r9
40001ae0:   se_cmpli r0,0x0001
40001ae2:   se_ble xTaskIncrementTick+0xf0 (0x40001ae6); 0x40001AE6

The assembly code is generated by the compiler.
The above code is part of an ISR.

As per the BOOK E reference manual:
checked the Excection syndrome register.

ESR    0x00000021    $ESR

Only below fields are set. Not sure what to do with this data.

   VLEMI =1

   XTE=1

Any help would be appreciated.


Regards,
Pradeep M C

ラベル(1)
0 件の賞賛
返信
1 解決策
1,593件の閲覧回数
davidtosenovjan
NXP TechSupport
NXP TechSupport

Hi, XTE marks External Termination Error.

Typically it can be caused by

- ECC error  

- accessing of reserved memory

- accessing of unimplemented register

- accessing of peripheral registers that is turned off

- can be asserted by EBI bus monitor if enabled

元の投稿で解決策を見る

0 件の賞賛
返信
2 返答(返信)
1,594件の閲覧回数
davidtosenovjan
NXP TechSupport
NXP TechSupport

Hi, XTE marks External Termination Error.

Typically it can be caused by

- ECC error  

- accessing of reserved memory

- accessing of unimplemented register

- accessing of peripheral registers that is turned off

- can be asserted by EBI bus monitor if enabled

0 件の賞賛
返信
1,593件の閲覧回数
pradeepmc
Contributor II

Thanks David.

Yes, it is because of the accessing of reserved memory.

I checked the DEAR register and the address was some invalid value.

I was able to fix the logical error in my code.

0 件の賞賛
返信