 |
|
 |
RENESAS TOOL NEWS on December 1, 2005: RSO-M3T-ICC740-051201D
Notes on Using the C Compiler Package M3T-ICC740 |
Please take note of the following problems in using the C compiler package M3T-ICC740,
which are used for the 740 MCU family:
- On handling interrupts
- On calling undefined functions
- Versions Concerned
The C compiler package M3T-ICC740 V.1.01 Release 00 and V.1.01 Release 01 (for the 740 family)
- Descriptions
| 2.1 |
|
Problems on Handling Interrupts
If a function called or to be called from an interrupt-handling function during interrupt service is called from another function, the warning message* shown below cannot be displayed at linking.
(The message is displayed in V.1.00 Release 1 through V.1.00 Release 1B.)
Warning[w16]: Function "name" in module (file) is called from two function trees (with roots name1 and name2 )
| * |
|
The M3T-ICC740 statically places local variables (arguments and auto variables) of a function. So using such a function within both an interrupt-handling function and another one may corrupt local variables. If calls are made to such a function from both of the above-mentioned functions, the linker sends Warning[w16]. However, in the product concerned, the linker does not. |
Example:
--------------------------------------------------------------------
void func2( int );
interrupt[2] void intr_1(void)
{
func2( 2 ); /* If an interrupt generated while func1() is */
/* executing func2(), local variables of */
/* func2() be corrupted after func2() returns */
/* from interrupt */
}
void func1( void )
{
func2( 1 );
}
void main( void )
{
func1();
}
--------------------------------------------------------------------
Workaround:
Don't use the same function within an interrupt-handling function and another one.
|
| 2.2 |
|
Problem on Calling Undefined Functions
Making a call to an undefined function does not display the warning message shown below at linking.
(The message is displayed in V.1.00 Release 1 through V.1.00 Release 1B.)
Error[e46:] Undefined external "external" referred in module (file)
Example
--------------------------------------------------------------------
void func3( int );
void main( void )
{
func3(); /* undefined function */
}
--------------------------------------------------------------------
Workaround:
If you need to call an undefined function, define it. |
- Schedule of Fixing the Problems
We have no plan to fix these problems.
Therefore, please use workarounds described in the Tool News to avoid the problems.
|
 |