Hi,
I am currently evaluating the MSP432 both for new designs and as a possible port for MSP430-based designs. As part of the evaluation and as a way to compare apples to apples I have ported parts of projects and compared some parameters of interest.
A problem arose when I was trying to do ISRs the MSP430 way instead of the new table approach, which is OK and it works but imposes in C++ projects with ISRs defined as static members of a class the overhead of having to wrap them in a function to be able to include them in the table.
So the problem is that if I do, for example:
#pragma vector = 0x60u
__interrupt void my_class::my_isr( void ) // A static member of my_class
{ // This is line 652
...
}
I get:
>> Compilation failure
INTERNAL ERROR: /home/swdev/ti/ccsv6/tools/compiler/ti-cgt-arm_5.2.6/bin/armacpia experienced a segmentation fault while processing function (unknown or file scope) file ../stim.cpp line 652
This is caused by a defect in the compiler itself. TI Customer Support may be able to suggest a workaround to avoid this.
The same code (without using #pragma and __interrupt), but using a wrapper instead:
void c_my_ISR( void ) { my_class::my_isr(); } // a friend of my_class
compiles and works fine. Any explanation for this?
Thanks,
Pibe