저는 PIC18F87J11 패밀리가 있으며 MPLAB C18 컴파일러를 사용하고 있습니다. 다음 변수에 지정할 수있는 최대 바이트 수는 얼마입니까?데이터 뱅크 크기를 256 바이트 이상으로 만드는 방법 [링커 파일 - MPLAB]
나는 링커 파일을 256 바이트 이상 확보해야한다는 것을 알고있다.
#pragma udata CONNECTION_TABLE
이것은 내 깨끗한 링커 파일입니다.
// 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
이것은 수정 된 링커 파일로서 CONNECTION_TABLE에 256 바이트 이상을 제공합니다.
// 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
당신이 0x100
에서 내 CONNECTION_TABLE 시작을보고 0x999
에 종료 할 수있다. 만약 내가 더 많은 바이트를주고 싶다면, 내가 줄 수있는 최대치는 얼마입니까?
자세히 보면 다음 코드가 있음을 알 수 있습니다.
ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF PROTECTED
는 그
이 CONNECTION_TABLE이
0xFFF
보다 더 얻을 수없는 것을 의미 하는가?
거의 CONNECTION_TABLE의 바이트 수를 두 배로 늘리고 싶습니다. 어떻게해야합니까?
현재 0x100
에서 시작하여 0x999
에서 끝납니다. 0x1332
으로 결말을 변경할 수 있습니까? 또는 내가 경계를 넘을 것이기 때문에 그것은 작동하지 않을 것입니다 0xFFF
?
감사합니다.
에 은행의 크기를 확장 할 수 있습니다. 나는 은행 크기를 0xF5F 이상으로 확장하고 싶었다. 다른 PIC로 업그레이드해야합니까? 어떤 추천? –
@ cookie 괴물 :이 경우에는 더 큰 패밀리 CPU 16 비트 또는 32 비트를 사용해야합니다. 귀하의 요구에 따라 제품을 선택할 수 있습니다. 트리 체크 인 : http://www.microchip.com/pagehandler/en-us/products/picmicrocontrollers –
링크를 제공해 주셔서 감사합니다! –