MPC5642A project with PIT ISR can only be single step executed (S32 DS V2.1)

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

MPC5642A project with PIT ISR can only be single step executed (S32 DS V2.1)

Jump to solution
824 Views
ZhouYiChuan
Contributor III

Dear NXP supporter:
The development enviroment is: S32 DS V2.1, P&E mutliLink universal debugger
Brief description of my issue is:
A MPC5642A project with PIT ISR, can't run at full speed in deugging mode, it can only be single step executed.

The very simple project (name: mpc5642_test-noISR) created with S32 DS Wizard, it can be flashed into ECU and debug with P&E multiLink at full speed.

Simple project is created like below:

createProject.PNG

I downloaded a PIT ISR example (name: MPC5644A_ISR, on MPC5644A) from NXP website, and ported it to the MPC5642A project (project name: mpc5642_test-withISR)

For the project mpc5642_test-withISR, the issue:
during debugging, I pressed the 'resume(F8)' button, the code run one step, then stopped automatically.
For example: the cursor stopped at entry position (the '{') of ISR pit0_hanlder(). please refer to following snapshot
Then I press the resume button, it then stopped at exit position (the '}') of ISR pit0_handler()

Could you please give me some hint? thank you in advance. 

BR

Zhou YiChuan

Following is the screen snapshot while debuggijng.

debug_alwaysStep.PNG

 

0 Kudos
Reply
1 Solution
787 Views
lukaszadrapa
NXP TechSupport
NXP TechSupport

Hi,

there are several ways how to write nop:

__asm__("nop");
__asm__("e_nop");
__asm__("se_nop");

The first one should be used when using BOOK E instruction set. Next ones when using VLE set.

Your project is VLE. If you use
__asm__("nop");
... it is translated as:
se_bclri r0,0x0
se_illegal

If a debugger is connected, se_illegal works as a software breakpoint.

So, solution is to use VLE versions:
__asm__("e_nop");
__asm__("se_nop");

 

In CodeWarrior IDE, __asm__("nop"); was automatically translated to VLE instruction set. But the situation is different in S32DS and you need to use VLE versions explicitly.

Regards,
Lukas

View solution in original post

0 Kudos
Reply
2 Replies
773 Views
ZhouYiChuan
Contributor III

dear Lukas:

thank you for your support. the issue is fixed. 

BR

YiChuan

0 Kudos
Reply
788 Views
lukaszadrapa
NXP TechSupport
NXP TechSupport

Hi,

there are several ways how to write nop:

__asm__("nop");
__asm__("e_nop");
__asm__("se_nop");

The first one should be used when using BOOK E instruction set. Next ones when using VLE set.

Your project is VLE. If you use
__asm__("nop");
... it is translated as:
se_bclri r0,0x0
se_illegal

If a debugger is connected, se_illegal works as a software breakpoint.

So, solution is to use VLE versions:
__asm__("e_nop");
__asm__("se_nop");

 

In CodeWarrior IDE, __asm__("nop"); was automatically translated to VLE instruction set. But the situation is different in S32DS and you need to use VLE versions explicitly.

Regards,
Lukas

0 Kudos
Reply