Just HOW does the gputils linker allocate the program memory?

Hello,

I have been writing a larger project and seeing huge gaps in the map file(0x374-0xe00).

I've put all the regular code in PGM CODE sections But some things needed specific addresses...

in main.asm I have: ... DEVID CODE (with a matching section in the linker file) .. vectors CODE 0x00 .. PROG0 CODE ...

in cmd.asm I have: PROG0 CODE ...

in trig.asm I have: PGM CODE ... INITC0 CODE 0xE00 ...

..and some other files with PGM CODE the individual programmes are called like this: gpasm -c -p p16f1713 main.asm -o main.o gplink -m -s ./16f1713_g.lkr stack.o sreg.o common.o trig.o main.o parse.o cmd.o uart.o -o main.hex

the linker script is: // File: 16f1713_g.lkr // Modified linker script for the PIC16F1713 processor

LIBPATH .

CODEPAGE NAME=page0 START=0x0 END=0x7FF CODEPAGE NAME=page1 START=0x800 END=0xFFF CODEPAGE NAME=.idlocs START=0x8000 END=0x8003 PROTECTED CODEPAGE NAME=.devid START=0x8006 END=0x8006 PROTECTED CODEPAGE NAME=.config START=0x8007 END=0x8008 PROTECTED

LINEARMEM NAME=linear0 START=0x2000 END=0x21EF PROTECTED

DATABANK NAME=sfr0 START=0x0 END=0x1F PROTECTED DATABANK NAME=sfr1 START=0x80 END=0x9F PROTECTED DATABANK NAME=sfr2 START=0x100 END=0x11F PROTECTED DATABANK NAME=sfr3 START=0x180 END=0x19F PROTECTED DATABANK NAME=sfr4 START=0x200 END=0x21F PROTECTED DATABANK NAME=sfr5 START=0x280 END=0x29F PROTECTED DATABANK NAME=sfr6 START=0x300 END=0x31F PROTECTED DATABANK NAME=sfr7 START=0x380 END=0x39F PROTECTED DATABANK NAME=sfr8 START=0x400 END=0x41F PROTECTED DATABANK NAME=sfr9 START=0x480 END=0x49F PROTECTED DATABANK NAME=sfr10 START=0x500 END=0x51F PROTECTED DATABANK NAME=sfr11 START=0x580 END=0x59F PROTECTED DATABANK NAME=sfr12 START=0x600 END=0x61F PROTECTED DATABANK NAME=sfr13 START=0x680 END=0x69F PROTECTED DATABANK NAME=sfr14 START=0x700 END=0x71F PROTECTED DATABANK NAME=sfr15 START=0x780 END=0x79F PROTECTED DATABANK NAME=sfr16 START=0x800 END=0x81F PROTECTED DATABANK NAME=sfr17 START=0x880 END=0x89F PROTECTED DATABANK NAME=sfr18 START=0x900 END=0x91F PROTECTED DATABANK NAME=sfr19 START=0x980 END=0x99F PROTECTED DATABANK NAME=sfr20 START=0xA00 END=0xA1F PROTECTED DATABANK NAME=sfr21 START=0xA80 END=0xA9F PROTECTED DATABANK NAME=sfr22 START=0xB00 END=0xB1F PROTECTED DATABANK NAME=sfr23 START=0xB80 END=0xB9F PROTECTED DATABANK NAME=sfr24 START=0xC00 END=0xC1F PROTECTED DATABANK NAME=sfr25 START=0xC80 END=0xC9F PROTECTED DATABANK NAME=sfr26 START=0xD00 END=0xD1F PROTECTED DATABANK NAME=sfr27 START=0xD80 END=0xD9F PROTECTED DATABANK NAME=sfr28 START=0xE00 END=0xE6F PROTECTED DATABANK NAME=sfr29 START=0xE80 END=0xEEF PROTECTED DATABANK NAME=sfr30 START=0xF00 END=0xF6F PROTECTED DATABANK NAME=sfr31 START=0xF80 END=0xFEF PROTECTED

DATABANK NAME=gpr0 START=0x20 END=0x6F SHADOW=linear0:0x2000 DATABANK NAME=gpr1 START=0xA0 END=0xEF SHADOW=linear0:0x2050 DATABANK NAME=gpr2 START=0x120 END=0x16F SHADOW=linear0:0x20A0 DATABANK NAME=gpr3 START=0x1A0 END=0x1EF SHADOW=linear0:0x20F0 DATABANK NAME=gpr4 START=0x220 END=0x26F SHADOW=linear0:0x2140 DATABANK NAME=gpr5 START=0x2A0 END=0x2EF SHADOW=linear0:0x2190 DATABANK NAME=gpr6 START=0x320 END=0x32F SHADOW=linear0:0x21E0

SHAREBANK NAME=gprnobank START=0x70 END=0x7F SHAREBANK NAME=gprnobank START=0xF0 END=0xFF PROTECTED SHAREBANK NAME=gprnobank START=0x170 END=0x17F PROTECTED SHAREBANK NAME=gprnobank START=0x1F0 END=0x1FF PROTECTED SHAREBANK NAME=gprnobank START=0x270 END=0x27F PROTECTED SHAREBANK NAME=gprnobank START=0x2F0 END=0x2FF PROTECTED SHAREBANK NAME=gprnobank START=0x370 END=0x37F PROTECTED SHAREBANK NAME=gprnobank START=0x3F0 END=0x3FF PROTECTED SHAREBANK NAME=gprnobank START=0x470 END=0x47F PROTECTED SHAREBANK NAME=gprnobank START=0x4F0 END=0x4FF PROTECTED SHAREBANK NAME=gprnobank START=0x570 END=0x57F PROTECTED SHAREBANK NAME=gprnobank START=0x5F0 END=0x5FF PROTECTED SHAREBANK NAME=gprnobank START=0x670 END=0x67F PROTECTED SHAREBANK NAME=gprnobank START=0x6F0 END=0x6FF PROTECTED SHAREBANK NAME=gprnobank START=0x770 END=0x77F PROTECTED SHAREBANK NAME=gprnobank START=0x7F0 END=0x7FF PROTECTED SHAREBANK NAME=gprnobank START=0x870 END=0x87F PROTECTED SHAREBANK NAME=gprnobank START=0x8F0 END=0x8FF PROTECTED SHAREBANK NAME=gprnobank START=0x970 END=0x97F PROTECTED SHAREBANK NAME=gprnobank START=0x9F0 END=0x9FF PROTECTED SHAREBANK NAME=gprnobank START=0xA70 END=0xA7F PROTECTED SHAREBANK NAME=gprnobank START=0xAF0 END=0xAFF PROTECTED SHAREBANK NAME=gprnobank START=0xB70 END=0xB7F PROTECTED SHAREBANK NAME=gprnobank START=0xBF0 END=0xBFF PROTECTED SHAREBANK NAME=gprnobank START=0xC70 END=0xC7F PROTECTED SHAREBANK NAME=gprnobank START=0xCF0 END=0xCFF PROTECTED SHAREBANK NAME=gprnobank START=0xD70 END=0xD7F PROTECTED SHAREBANK NAME=gprnobank START=0xDF0 END=0xDFF PROTECTED SHAREBANK NAME=gprnobank START=0xE70 END=0xE7F PROTECTED SHAREBANK NAME=gprnobank START=0xEF0 END=0xEFF PROTECTED SHAREBANK NAME=gprnobank START=0xF70 END=0xF7F PROTECTED SHAREBANK NAME=gprnobank START=0xFF0 END=0xFFF PROTECTED

SECTION NAME=PROG0 ROM=page0 // ROM code space - page0 SECTION NAME=PROG1 ROM=page1 // ROM code space - page1 SECTION NAME=IDLOCS ROM=.idlocs // ID locations SECTION NAME=DEVID ROM=.devid // Device ID SECTION NAME=LINEAR0 RAM=linear0 // Linear Memory SECTION NAME=GPR0 RAM=gpr0

the map file after the link is:

Map File - Created 10/20/2018 03:37:53 AM

Section Info Section Type Address Location Size(Bytes) --------- --------- --------- --------- --------- .config_8007_MAIN.O romdata 0x008007 program 0x000002 .config_8008_MAIN.O romdata 0x008008 program 0x000002 vectors code 0x000000 program 0x000010 PROG0 code 0x000008 program 0x00036c INITC0 code 0x000e00 program 0x000050 PGM code 0x000e28 program 0x00028c DEVID code 0x008006 program 0x000002 GPR0 udata 0x000000 data 0x000003 Common_RAM udata 0x000070 data 0x000010 LINEAR0 udata 0x002100 data 0x0000f0

Am I doing something wrong? Is this a known issue. Is this intentional?

Version: I'm using the current SVN snapshot: gplink-1.5.2 #1316 (Oct 20 2018)

Reply to
Johann Klammer
Loading thread data ...

Not a bug.. It's intentional. (looking for the best fit/smallest gaps)..

Reply to
Johann Klammer

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.