9S12DG256 Getting a Link Error: L1907 Fixup overflow in _FSFLOAT, to F_FRLONGK type 3, at offset 0x8

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

9S12DG256 Getting a Link Error: L1907 Fixup overflow in _FSFLOAT, to F_FRLONGK type 3, at offset 0x8

跳至解决方案
5,453 次查看
darrin
Contributor II
9S12DG256 Getting a Link Error: L1907 Fixup overflow in _FSFLOAT, to F_FRLONGK type 3, at offset 0x8  linker fault.
 
My code was compling and working, then I added a new group of 4 functions. When I enable all of them during compile/linking I get this fault.
 
What is this fault?
 

Message Edited by darrin on 2007-04-0408:52 PM

标签 (1)
标记 (1)
0 项奖励
回复
1 解答
1,559 次查看
darrin
Contributor II
I put NON_BANKED and INTERRUPT_ROUTINES into just 1 page and that appears to work.
I just hope I dont run out of room.
 
What is, and where can I get the file  rtshc12.c ?
 
Thanks

在原帖中查看解决方案

0 项奖励
回复
4 回复数
1,559 次查看
CompilerGuru
NXP Employee
NXP Employee
I asked google and found an answer I wrote some time ago, I guess you have the same issue as the OP of that thread. Daniel
The problem is that _LDIVS is calling NEG_P with a 8 bit relative offset:1233: void NEAR _LDIVS (void) { /* a = a / b signed */...000a 0700 BSR _NEG_P.. This works fine as long as you do allocate the NON_BANKED section into one single placement.However for your app it looks like all the others would just fill up the FLASH_PAGE4000 segment sothat _NEG_P does still fit into it and _LDIVS is allocated in FLASH_PAGEC000.So now what you can do about it:1. Change the allocation order in your prm file.The problem with this solution is that it does not really resolve the problem but instead it just tries to avoid it.2. Build rtshc12.c with the option -OnB=b.Either rebuild the whole library (lib\hc12c\hc12_lib.mcp) or add rtshc12.c to your project andadd the option in your project. For the second one, make sure rtshc12.c.o is before the ansi library in your link order.3. Distribute the NON_BANKED section manually to either FLASH_PAGE4000 or FLASH_PAGEC000, but not to both.
1,560 次查看
darrin
Contributor II
I put NON_BANKED and INTERRUPT_ROUTINES into just 1 page and that appears to work.
I just hope I dont run out of room.
 
What is, and where can I get the file  rtshc12.c ?
 
Thanks
0 项奖励
回复
1,559 次查看
CompilerGuru
NXP Employee
NXP Employee
You can fill up the remaining of the segment used for NON_BANKED later on with other content, just place the NON_BANKED mapping first.

If INTERRUPT_ROUTINES is your own section which is compiled with -OnB=b, then you can place it to different segments.
As summary, if you place any section compiled with the near calling convention into multiple segments, then add the compiler option -OnB=b, the NON_BANKED thing is needed if you do not recompile rtshc12.c (or the whole ansi lib) with -OnB=b.

rtshc12.c is located in lib\hc12c\src.

Daniel

0 项奖励
回复
1,559 次查看
CompilerGuru
NXP Employee
NXP Employee
You can fill up the remaining of the segment used for NON_BANKED later on with other content, just place the NON_BANKED mapping first. If INTERRUPT_ROUTINES is your own section which is compiled with -OnB=b, then you can place it to different segments. As summary, if you place any section compiled with the near calling convention into multiple segments, then add the compiler option -OnB=b, the NON_BANKED thing is needed if you do not recompile rtshc12.c (or the whole ansi lib) with -OnB=b. rtshc12.c is located in lib\hc12c\src. Daniel
0 项奖励
回复