這些RAM被 ICD Debug F/W 用來除錯了。參考以前的 16F887i.lkr 檔就知道了。
新版的LKR 檔如下所示,如果你在MPLAB IDE 下選擇Release Mode 則所有的 RAM & Flash 都可用,如果是在 Debug Mode 下的話就會有一些限制。
// File: 16f887_g.lkr
// Generic linker script for the PIC16F887 processor
#IFDEF _DEBUG
LIBPATH .
CODEPAGE NAME=page0 START=0x0 END=0x7FF
CODEPAGE NAME=page1 START=0x800 END=0xFFF
CODEPAGE NAME=page2 START=0x1000 END=0x17FF
CODEPAGE NAME=page3 START=0x1800 END=0x1EFF [color=ff0000]
CODEPAGE NAME=debug START=0x1F00 END=0x1FFF PROTECTED [/color]
CODEPAGE NAME=.idlocs START=0x2000 END=0x2003 PROTECTED
CODEPAGE NAME=.config START=0x2007 END=0x2008 PROTECTED
CODEPAGE NAME=eedata START=0x2100 END=0x21FF PROTECTED
DATABANK NAME=sfr0 START=0x0 END=0x1F PROTECTED
DATABANK NAME=sfr1 START=0x80 END=0x9F PROTECTED
DATABANK NAME=sfr2 START=0x100 END=0x10F PROTECTED
DATABANK NAME=sfr3 START=0x180 END=0x18F PROTECTED
DATABANK NAME=gpr0 START=0x20 END=0x6F
DATABANK NAME=gpr1 START=0xA0 END=0xEF
DATABANK NAME=gpr2 START=0x110 END=0x16F
DATABANK NAME=gpr3 START=0x190 END=0x1E4
DATABANK NAME=dbgspr START=0x1E5 END=0x1EF PROTECTED
[color=ff0000]
SHAREBANK NAME=dbgnobnk START=0x70 END=0x70 PROTECTED
SHAREBANK NAME=dbgnobnk START=0xF0 END=0xF0 PROTECTED
SHAREBANK NAME=dbgnobnk START=0x170 END=0x170 PROTECTED
SHAREBANK NAME=dbgnobnk START=0x1F0 END=0x1F0 PROTECTED
SHAREBANK NAME=gprnobnk START=0x71 END=0x7F
SHAREBANK NAME=gprnobnk START=0xF1 END=0xFF PROTECTED
SHAREBANK NAME=gprnobnk START=0x171 END=0x17F PROTECTED
SHAREBANK NAME=gprnobnk START=0x1F1 END=0x1FF PROTECTED[/color]
SECTION NAME=PROG1 ROM=page0 // ROM code space - page0
SECTION NAME=PROG2 ROM=page1 // ROM code space - page1
SECTION NAME=PROG3 ROM=page2 // ROM code space - page2
SECTION NAME=PROG4 ROM=page3 // ROM code space - page3
SECTION NAME=IDLOCS ROM=.idlocs // ID locations
SECTION NAME=DEEPROM ROM=eedata // Data EEPROM
#ELSE
LIBPATH .
CODEPAGE NAME=page0 START=0x0 END=0x7FF
CODEPAGE NAME=page1 START=0x800 END=0xFFF
CODEPAGE NAME=page2 START=0x1000 END=0x17FF
CODEPAGE NAME=page3 START=0x1800 END=0x1FFF
CODEPAGE NAME=.idlocs START=0x2000 END=0x2003 PROTECTED
CODEPAGE NAME=.config START=0x2007 END=0x2008 PROTECTED
CODEPAGE NAME=eedata START=0x2100 END=0x21FF PROTECTED
DATABANK NAME=sfr0 START=0x0 END=0x1F PROTECTED
DATABANK NAME=sfr1 START=0x80 END=0x9F PROTECTED
DATABANK NAME=sfr2 START=0x100 END=0x10F PROTECTED
DATABANK NAME=sfr3 START=0x180 END=0x18F PROTECTED
DATABANK NAME=gpr0 START=0x20 END=0x6F
DATABANK NAME=gpr1 START=0xA0 END=0xEF
DATABANK NAME=gpr2 START=0x110 END=0x16F
DATABANK NAME=gpr3 START=0x190 END=0x1EF
SHAREBANK NAME=gprnobnk START=0x70 END=0x7F
SHAREBANK NAME=gprnobnk START=0xF0 END=0xFF PROTECTED
SHAREBANK NAME=gprnobnk START=0x170 END=0x17F PROTECTED
SHAREBANK NAME=gprnobnk START=0x1F0 END=0x1FF PROTECTED
SECTION NAME=PROG1 ROM=page0 // ROM code space - page0
SECTION NAME=PROG2 ROM=page1 // ROM code space - page1
SECTION NAME=PROG3 ROM=page2 // ROM code space - page2
SECTION NAME=PROG4 ROM=page3 // ROM code space - page3
SECTION NAME=IDLOCS ROM=.idlocs // ID locations
SECTION NAME=DEEPROM ROM=eedata // Data EEPROM
#FI