Strange undocumented Linker warning L4100

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Strange undocumented Linker warning L4100

Jump to solution
1,734 Views
slarti
Contributor I

Hello,

I am using the Codewarrior compiler/linker for the S12X and recently the linker is issueing a warning which is not listed in the documentation:

 

WARNING L4100: Failed to convert address 0x13FF94 of FOO because of 'Flash area (C000..FFFF) is not paged'

 

The FOO struct is located at 0x13FF94 by the means of the following lines in the .prm file:


SECTIONS

MY_FOO_EEPROM_SEG = NO_INIT  0x13ff94 0x13ffee;

END

PLACEMENT

FOO_EEPROM_SEG INTO MY_FOO_EEPROM_SEG;

END

 

and of course the declaration and definition of FOO in the C source are guarded by

 

#pragma DATA_SEG FOO_EEPROM_SEG

...

#pragma DATA_SEG DEFAULT

 

I can't make any sense from this message (I fear I couldn't even if it had a less strange wording). Any hints?

 

thanks,

Mark

 

Labels (1)
Tags (1)
0 Kudos
1 Solution
471 Views
CompilerGuru
NXP Employee
NXP Employee
You could also use the paged address instead of the global ones, it means the same thing.

MY_FOO_EEPROM_SEG = NO_INIT  0xf94 0xfee;

Daniel

View solution in original post

0 Kudos
3 Replies
471 Views
Navidad
Contributor III
Hello slarti,

The problem is that your address range is not really valid. I would assume that your intention is to define a memory range using addresses as they can be seen in the global memory map (i.e. global addresses). In this case you have to add a memory space designator to your address:

MY_FOO_EEPROM_SEG = NO_INIT  0x13ff94'G TO 0x13ffee'G;


Otherwise, the address must be a valid logical address. In this case, the lower two bytes of the address do not fall in any of the S12X's paging windows, nor is the address in the local memory map, hence the error. Indeed, the text of the warning does not directly point to the problem. For this issue you can open a service request.

Navidad
0 Kudos
471 Views
slarti
Contributor I
Thanks for the quick answer.
However, I really question the mental sanity of the guy who decided to define a quote character as a part of the symbol;  try to generate PRM files on the fly from shell scripts/makefiles and you know what I mean.
 
regards,
Mark
0 Kudos
472 Views
CompilerGuru
NXP Employee
NXP Employee
You could also use the paged address instead of the global ones, it means the same thing.

MY_FOO_EEPROM_SEG = NO_INIT  0xf94 0xfee;

Daniel
0 Kudos