Strange undocumented Linker warning L4100

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 
已解决

Strange undocumented Linker warning L4100

跳至解决方案
2,055 次查看
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

 

标签 (1)
标记 (1)
0 项奖励
回复
1 解答
792 次查看
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 项奖励
回复
3 回复数
792 次查看
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 项奖励
回复
792 次查看
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 项奖励
回复
793 次查看
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 项奖励
回复