title: How to make data bank size more than 256 bytes [Linker File - MPLAB ]
body: <p><strong>I have PIC18F87J11 FAMILY and I am using MPLAB C18 Compiler. What is the maximum bytes I can give the following variable.</strong> </p>
  
  <p>I know that I have to modify the linker file to achive more than 256 bytes.  </p>
  
  <pre><code>#pragma udata CONNECTION_TABLE
  </code></pre>
  
  <p>This is my clean linker file. </p>
  
  <pre><code>// File: 18f87j11_g.lkr
  // Generic linker script for the PIC18F87J11 processor
  
  #DEFINE _CODEEND _DEBUGCODESTART - 1
  #DEFINE _CEND _CODEEND + _DEBUGCODELEN
  #DEFINE _DATAEND _DEBUGDATASTART - 1
  #DEFINE _DEND _DATAEND + _DEBUGDATALEN
  
  LIBPATH .
  
  #IFDEF _CRUNTIME
    #IFDEF _EXTENDEDMODE
      FILES c018i_e.o
      FILES clib_e.lib
      FILES p18f87j11_e.lib
  
    #ELSE
      FILES c018i.o
      FILES clib.lib
      FILES p18f87j11.lib
    #FI
  
  #FI
  
  #IFDEF _DEBUGCODESTART
    CODEPAGE   NAME=page       START=0x0               END=_CODEEND
    CODEPAGE   NAME=debug      START=_DEBUGCODESTART   END=_CEND        PROTECTED
  #ELSE
    CODEPAGE   NAME=page       START=0x0               END=0x1FFF7
  #FI
  
  CODEPAGE   NAME=config     START=0x1FFF8           END=0x1FFFD        PROTECTED
  CODEPAGE   NAME=devid      START=0x3FFFFE          END=0x3FFFFF       PROTECTED
  
  #IFDEF _EXTENDEDMODE
    DATABANK   NAME=gpre       START=0x0               END=0x5F
  #ELSE
    ACCESSBANK NAME=accessram  START=0x0               END=0x5F
  #FI
  
  DATABANK   NAME=gpr0       START=0x60              END=0xFF
  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=0x7FF
  DATABANK   NAME=gpr8       START=0x800             END=0x8FF
  DATABANK   NAME=gpr9       START=0x900             END=0x9FF
  DATABANK   NAME=gpr10      START=0xA00             END=0xAFF
  DATABANK   NAME=gpr11      START=0xB00             END=0xBFF
  DATABANK   NAME=gpr12      START=0xC00             END=0xCFF
  DATABANK   NAME=gpr13      START=0xD00             END=0xDFF
  
  #IFDEF _DEBUGDATASTART
    DATABANK   NAME=gpr14      START=0xE00             END=_DATAEND
    DATABANK   NAME=dbgspr     START=_DEBUGDATASTART   END=_DEND           PROTECTED
  #ELSE //no debug
    DATABANK   NAME=gpr14      START=0xE00             END=0xEFF
  #FI
  
  DATABANK   NAME=gpr15      START=0xF00             END=0xF3F
  DATABANK   NAME=sfr15      START=0xF5A             END=0xF5F          PROTECTED
  ACCESSBANK NAME=accesssfr  START=0xF60             END=0xFFF          PROTECTED
  
  #IFDEF _CRUNTIME
    SECTION    NAME=CONFIG     ROM=config
    #IFDEF _DEBUGDATASTART
      STACK SIZE=0x100 RAM=gpr13
    #ELSE
      STACK SIZE=0x100 RAM=gpr14
    #FI
  #FI
  </code></pre>
  
  <p>This is my modified linker file to give CONNECTION_TABLE more than 256 bytes. </p>
  
  <pre><code>// File: 18f87j11_g.lkr
  // Generic linker script for the PIC18F87J11 processor
  
  #DEFINE _CODEEND _DEBUGCODESTART - 1
  #DEFINE _CEND _CODEEND + _DEBUGCODELEN
  #DEFINE _DATAEND _DEBUGDATASTART - 1
  #DEFINE _DEND _DATAEND + _DEBUGDATALEN
  
  LIBPATH .
  
  #IFDEF _CRUNTIME
    #IFDEF _EXTENDEDMODE
      FILES c018i_e.o
      FILES clib_e.lib
      FILES p18f87j11_e.lib
  
    #ELSE
      FILES c018i.o
      FILES clib.lib
      FILES p18f87j11.lib
    #FI
  
  #FI
  
  #IFDEF _DEBUGCODESTART
    CODEPAGE   NAME=page       START=0x0               END=_CODEEND
    CODEPAGE   NAME=debug      START=_DEBUGCODESTART   END=_CEND        PROTECTED
  #ELSE
    CODEPAGE   NAME=page       START=0x0               END=0x1FFF7
  #FI
  
  CODEPAGE   NAME=config     START=0x1FFF8           END=0x1FFFD        PROTECTED
  CODEPAGE   NAME=devid      START=0x3FFFFE          END=0x3FFFFF       PROTECTED
  
  #IFDEF _EXTENDEDMODE
    DATABANK   NAME=gpre       START=0x0               END=0x5F
  #ELSE
    ACCESSBANK NAME=accessram  START=0x0               END=0x5F
  #FI
  
  DATABANK   NAME=gpr0       START=0x60              END=0xFF
  DATABANK   NAME=CONNECTION_TABLE   START=0x100     END=0x999 PROTECTED
  SECTION   NAME=CONNECTION_TABLE    RAM=CONNECTION_TABLE
  DATABANK   NAME=gpr10      START=0xA00             END=0xAFF
  DATABANK   NAME=gpr11      START=0xB00             END=0xBFF
  DATABANK   NAME=gpr12      START=0xC00             END=0xCFF
  DATABANK   NAME=gpr13      START=0xD00             END=0xDFF
  
  
  #IFDEF _DEBUGDATASTART
    DATABANK   NAME=gpr14      START=0xE00             END=_DATAEND
    DATABANK   NAME=dbgspr     START=_DEBUGDATASTART   END=_DEND           PROTECTED
  #ELSE //no debug
    DATABANK   NAME=gpr14      START=0xE00             END=0xEFF
  #FI
  
  DATABANK   NAME=gpr15      START=0xF00             END=0xF3F
  DATABANK   NAME=sfr15      START=0xF5A             END=0xF5F          PROTECTED
  ACCESSBANK NAME=accesssfr  START=0xF60             END=0xFFF          PROTECTED
  
  #IFDEF _CRUNTIME
    SECTION    NAME=CONFIG     ROM=config
    #IFDEF _DEBUGDATASTART
      STACK SIZE=0x100 RAM=gpr13
    #ELSE
      STACK SIZE=0x100 RAM=gpr14
    #FI
  #FI
  </code></pre>
  
  <p>As you can see my <strong>CONNECTION_TABLE</strong> starts from <code>0x100</code> and ends at <code>0x999</code>. If I want to give it more bytes, what is the maximum I can give it? </p>
  
  <p>If you look closely you will notice I have the following code. </p>
  
  <pre><code>ACCESSBANK NAME=accesssfr  START=0xF60             END=0xFFF          PROTECTED
  </code></pre>
  
  <p>Does that mean <strong>CONNECTION_TABLE</strong> can not get more than <code>0xFFF</code>? </p>
  
  <p>Pretty much I want to double the number of bytes for my <strong>CONNECTION_TABLE</strong>, how can I do that?</p>
  
  <p>Currently I have it start at <code>0x100</code> and ends at <code>0x999</code>, can I change the ending to <code>0x1332</code>? Or that won't work because I will go over the boundary <code>0xFFF</code>?</p>
  
  <p>Thanks!</p>