Interrupt routing unclear

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

Interrupt routing unclear

1,211 Views
abemat
Contributor III

We would like to enable interrupts on our S32K322 dual core sample. We can trigger interrupts using the generated configuration, but the handler will always be handled by core 0. We would like it to be handled by core 1.

This is a relevant part of the generated configuration:

 

static const IntCtrl_Ip_IrqConfigType aIrqConfiguration1[] = {
    ...,
    {SIUL_0_IRQn, (boolean)TRUE, 0U},
    ...,
};
const IntCtrl_Ip_CtrlConfigType IntCtrlConfig_0 = {
    128U,
    aIrqConfiguration1 
};
/* List of configurations for routing interrupts */
static const IntCtrl_Ip_IrqRouteConfigType aIrqRouteConfig[] = {
    ...,
    {SIUL_0_IRQn, 3U, undefined_handler},
    ...,
};
/* Configuration structure for interrupt routing */
const IntCtrl_Ip_GlobalRouteConfigType intRouteConfig = {
    128U,
    aIrqRouteConfig
};

 

And calling the interrupt init from core0:

 

nxp_status |= (StatusType) IntCtrl_Ip_Init(&IntCtrlConfig_0);
nxp_status |= (StatusType) IntCtrl_Ip_ConfigIrqRouting(&intRouteConfig);
IntCtrl_Ip_InstallHandler(SIUL_0_IRQn, Siul_0_IRQHandler, NULL_PTR);
IntCtrl_Ip_EnableIrq(SIUL_0_IRQn);

 

 

When changing the interrupt routing to only be mapped to core 1 (2U), we do not see an interrupt at all anymore. What is the problem here?

 

/* List of configurations for routing interrupts */
static const IntCtrl_Ip_IrqRouteConfigType aIrqRouteConfig[] = {
    ...,
    {SIUL_0_IRQn, 2U, undefined_handler},
    ...,
};

 

 @joohau 

0 Kudos
7 Replies

1,163 Views
davidtosenovjan
NXP TechSupport
NXP TechSupport

Hi, could you clarify used environment? Thanks

0 Kudos

1,127 Views
abemat
Contributor III

Does that answer your question @davidtosenovjan 

0 Kudos

1,112 Views
davidtosenovjan
NXP TechSupport
NXP TechSupport

I have agreed with the S32DS expert to answer this question, but we currently have public holidays, so please wait until next week. Thank you for understanding

0 Kudos

779 Views
winsmen
Contributor II

Hi! Any update on this issue? @davidtosenovjan 

0 Kudos

1,157 Views
abemat
Contributor III

Hi David, 

We use the S32DS with a Segger J-link. I've debugged it by placing a breakpoint in the interrupt handler and checking from which core it paused in S32DS. We can already use the debugger to step through code on core0 and core1, so we know that it recognizes the cores separately.

0 Kudos

1,070 Views
jiri_kral
NXP Employee
NXP Employee

Hi, 

I'm not much familiar with the RTD and S32K3xx - but it looks, that there is not properly setup the platform package - if you like to handle some IRQ only by core 1, you need to uncheck core 0 (image is only for reference, the project is only single core - in your case the Core 1 column should be available for editing): 

jiri_kral_0-1657634124077.png

Jiri

0 Kudos

769 Views
winsmen
Contributor II

@jiri_kral I did uncheck core0 and set only core1 as the target of the interrupts I would like to be serviced only on core1, but with this configuration the ISRs never get called. However, I do see the flags from the peripherals which are meant to trigger the ISRs being set.

0 Kudos