Log in

View Full Version : guidelines for modifying the linker script???


gnormhurst
13-02-2005, 17:02
I got into the scripting thing -- I figure it's a good way to get my newbie programmers involved quickly. I modified the scripting system to allow mutliple script routines in the one script array (I have a NAME and an END "command" that indicates the extent of each script).

So I started writing lots of little scripts (all in the one array). I'm not even halfway into it when the linker complains:

MPLINK 3.90, Linker
Copyright (c) 2004 Microchip Technology Inc.
Error - section '.idata_scripting.o' can not fit the section. Section '.idata_scripting.o' length=0x000001a5
Errors : 1 I searched other threads and saw there may be a possibility of modifying the linker script to allow for bigger arrays.

Can someone explain the syntax and semantics of the linker script? And what the physical limits are? See my linker script below.

Thanks,

Norm

// $Id: 18f8520i.lkr,v 1.4 2003/03/13 05:02:23 sealep Exp $
// File: 18f8520i.lkr
// Sample linker script for the PIC18F8520 processor

LIBPATH .

//FILES c018i.o
FILES clib.lib
FILES p18f8520.lib

CODEPAGE NAME=vectors START=0x0 END=0x7ff PROTECTED
CODEPAGE NAME=page START=0x800 END=0x7FFF
CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED
CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED
CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED
CODEPAGE NAME=eedata START=0xF00000 END=0xF003FF PROTECTED

ACCESSBANK NAME=accessram START=0x0 END=0x5F

DATABANK NAME=gpr0 START=0x80 END=0xFF PROTECTED
DATABANK NAME=gpr1 START=0x100 END=0x1FF
DATABANK NAME=gpr2 START=0x200 END=0x2FF
DATABANK NAME=gpr3 START=0x300 END=0x3FF
DATABANK NAME=gpr4 START=0x400 END=0x4FF
DATABANK NAME=gpr5 START=0x500 END=0x5FF
DATABANK NAME=gpr6 START=0x600 END=0x6FF
DATABANK NAME=gpr7 START=0x700 END=0x7F3
DATABANK NAME=dbgspr START=0x7F4 END=0x7FF PROTECTED
ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF PROTECTED

SECTION NAME=CONFIG ROM=config

STACK SIZE=0x100 RAM=gpr6

Travis_Rozek
05-03-2005, 14:23
Our team is having the same problem. Does anyone know how to fix this?

[edit]
We managed to fix this problem by activating the optimization options in the compiler. We also removed the third argument from all the autonomous scripting functions and changed the structure definition to only two arguments. We also changed the first argument from a long int to an int, all of which freed up a lot of space. Hope this helps.

ldeffenb
06-03-2005, 02:03
We tried increasing the linker file, but quickly discovered why FIRST has it marked Read-Only. The only compiler/linker switches that can help you require a complete and total recompile of everything, but there are some modules for which FIRST only supplies a library, not source code.

We went back and did some *serious* code reduction and manual optimizations to get it all to fit.

Lynn (D) - Team Voltage 386 Software

PS. Watch for us at the Central Florida Regionals, we'll be the ones capping the center goal with a vision tetra in autonomous every now and then!

See BitTorrent videos at http://ldeffenb.dnsalias.net:30049. Download the one called "20050222 Tetras".

PPS. BitTorrent clients are available at www.BitTorrent.com or www.BitTornado.com.