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,459件の閲覧回数
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,565件の閲覧回数
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,565件の閲覧回数
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,566件の閲覧回数
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,565件の閲覧回数
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,565件の閲覧回数
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 件の賞賛
返信