ARM Technical Support Knowledge Articles

INTERRUPT GENERATES WARNING 16 (UNCALLED SEGMENT)

Applies to: BL51 Code-banking Linker/Locator

Answer


Information in this article applies to:


SYMPTOMS

I have written the following Interrupt Service Routine (ISR):

void myisr(void) interrupt 0
{
}

When I build my project I get:

WARNING 16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
SEGMENT: ?PR?MYISR?TEST

How do I tell the linker that it really is an interrupt and isn't explicitly called from anywhere in my source code?

CAUSE

This problem may be caused if you use the NOINTVECTOR compiler directive but do not include an LJMP or AJMP to the ISR.

RESOLUTION

You can resolve this in two ways:

  1. Remove the NOINTVECTOR directive and let the compiler automatically generate interrupt vectors.
  2. Generate your own interrupt vector table in assembler. Here is an example for the interrupt given above. This would be placed in a separate .a51 file and added to the project:
    EXTRN CODE (ISR41)
    
    CSEG    AT      0003H
            LJMP    ISR41
    END
    

MORE INFORMATION

SEE ALSO

Article last edited on: 2005-07-15 13:08:36

Rate this article

[Bad]
|
|
[Good]
Disagree? Move your mouse over the bar and click

Did you find this article helpful? Yes No

How can we improve this article?

Link to this article
Copyright © 2011 ARM Limited. All rights reserved. External (Open), Non-Confidential