- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am performing static code analysis for my project. We developed project in aurix development studio. In IFX_INTERRUPT(AdcIsr, 5, 2); is giving violation as missing type specifier.
#define IFX_INTERRUPT(isr, vectabNum, prio) IFX_INTERRUPT_INTERNAL(isr, vectabNum, prio)
#define IFX_INTERRUPT_INTERNAL(isr, vectabNum, prio) void __interrupt(prio) __vector_table(vectabNum) isr(void)
from this above macros if __vector_table(vectabNum) removed then there is no violation. But without this interrupt service routine can't be serviced by different cores,
default ISR getting executed in core 0.
How to fix QAC(static code analyzer) with multi core ISR.
Solved! Go to Solution.
- Tags:
- IFX
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
The implementation IFX_INTERRUPT(AdcIsr, 5, 2); seems strange. As mentioned in the description of the issue, the macros is defined as: #define IFX_INTERRUPT(isr, vectabNum, prio).
- The paramater "isr" refers to the interrupt service routine: the function to be called when the interrupt is raised.
- The parameter "vertabNum" refers to the vector table number, in simpler words the cpu which will service the interrupt.
- The parameter "prio" refers to the interrupt priority.
With the implementation "IFX_INTERRUPT(AdcIsr, 5, 2)" means that the interrupt service routine AdcIsr, shall be serviced by CPU5 with a priority of 2.
If the goal is to have CPU0 service the interrupt, please try changing the second parameter to 0 (as such "IFX_INTERRUPT(AdcIsr, 0, 2)"). Depending on the device being used, it could be that there is no CPU5 which causes the error seen.
Hopefully this solves this issue.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
The implementation IFX_INTERRUPT(AdcIsr, 5, 2); seems strange. As mentioned in the description of the issue, the macros is defined as: #define IFX_INTERRUPT(isr, vectabNum, prio).
- The paramater "isr" refers to the interrupt service routine: the function to be called when the interrupt is raised.
- The parameter "vertabNum" refers to the vector table number, in simpler words the cpu which will service the interrupt.
- The parameter "prio" refers to the interrupt priority.
With the implementation "IFX_INTERRUPT(AdcIsr, 5, 2)" means that the interrupt service routine AdcIsr, shall be serviced by CPU5 with a priority of 2.
If the goal is to have CPU0 service the interrupt, please try changing the second parameter to 0 (as such "IFX_INTERRUPT(AdcIsr, 0, 2)"). Depending on the device being used, it could be that there is no CPU5 which causes the error seen.
Hopefully this solves this issue.