Estoy confundido acerca de cómo asignar espacio de memoria del cargador de arranque en el microcontrolador pic18 y pasar un tiempo investigándolo y aterrizando aquí.
Pondré mi pregunta:
Tengo un controlador cuyo script de vinculador se ve así y define las secciones de memoria del controlador (que incluye el SFR, GPR y otras ubicaciones de inicio y finalización de la memoria).
Mi pregunta es ¿cómo se debe colocar el cargador de arranque en los microcontroladores ? ¿Deben mantenerse en el inicio de la memoria del programa? Tengo esta duda porque, por ejemplo, este tipo recomienda mantener el cargador de arranque en las ubicaciones de la memoria del programa 0x000-0xfff
enlace del cargador de arranque USB-HID
¿Deberían todos los cargadores de arranque reemplazar la dirección de inicio de la memoria de programación si queremos usar los cargadores de arranque? ¿Hay algo que debemos tener cuidado al asignar espacio para los cargadores de arranque?
/
Original linker fileof pic18
/ File: 18f47j53_g.lkr
// Generic linker script for the PIC18F47J53 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 p18f47j53_e.lib
#ELSE
FILES c018i.o
FILES clib.lib
FILES p18f47j53.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=0x1FFFF 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
#IFDEF _DEBUGDATASTART
DATABANK NAME=gpr12 START=0xC00 END=_DATAEND
DATABANK NAME=dbgspr START=_DEBUGDATASTART END=_DEND PROTECTED
#ELSE //no debug
DATABANK NAME=gpr12 START=0xC00 END=0xCFF
#FI
DATABANK NAME=gpr13 START=0xD00 END=0xDFF
DATABANK NAME=gpr14 START=0xE00 END=0xEAF
DATABANK NAME=sfr14 START=0xEB0 END=0xEFF PROTECTED
DATABANK NAME=sfr15 START=0xF00 END=0xF5F PROTECTED
ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF PROTECTED
#IFDEF _CRUNTIME
SECTION NAME=CONFIG ROM=config
#IFDEF _DEBUGDATASTART
STACK SIZE=0x100 RAM=gpr11
#ELSE
STACK SIZE=0x100 RAM=gpr12
#FI
#FI