ARM Technical Support Knowledge Articles

EXTERN DECLARATIONS USING _AT_

Applies to: C51 C Compiler

Answer

Information in this article applies to:


SYMPTOMS

I receive the following error messages in my linker MAP file when I include an external declaration for physically located variables:

* * * * * * *   C O D E   M E M O R Y   * * * * * * *
            CODE    0000H     2000H     ABSOLUTE
* OVERLAP * CODE    0000H     2000H     ABSOLUTE
* OVERLAP * CODE    0000H     2000H     ABSOLUTE
* OVERLAP * CODE    0000H     2000H     ABSOLUTE
* OVERLAP * CODE    0000H     2000H     ABSOLUTE
* OVERLAP * CODE    0000H     2000H     ABSOLUTE
* OVERLAP * CODE    0000H     2000H     ABSOLUTE
* OVERLAP * CODE    0000H     2000H     ABSOLUTE
* OVERLAP * CODE    0000H     0003H     ABSOLUTE
* OVERLAP * CODE    000BH     0003H     ABSOLUTE
* OVERLAP * CODE    0013H     0003H     ABSOLUTE
* OVERLAP * CODE    0023H     0003H     ABSOLUTE
* OVERLAP * CODE    0033H     0003H     ABSOLUTE
            CODE    2000H     2000H     ABSOLUTE

My extern declaration is defined as follows:

extern code char FLASH_BUFFER [0x800] _at_ 0x2000;

What's going on here?

CAUSE

Extern definitions for physically located variables must not include the _at_ keyword.

RESOLUTION

Change your extern definitions to appear as follows (without the _at_):

extern code char FLASH_BUFFER [0x800];

MORE INFORMATION

Article last edited on: 2005-08-03 12:28:59

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