Gracias a los dos.
Parece que he solucionado algo
Incluyendo esto: creo una "seccion del programa" en la direccion 0 que realiza un salto a BOOT_START (direccion donde comienza mi cargador)
#asm
psect redirect,abs
goto BOOT_START
#endasm
Pero ahora viene otro problema. Como quiero ubicar mi cargador en la parte alta de la memoria de codigo, en las opciones del linkador viene una opcion para especificar un offset. Pues bien, si el offset que especifico es mayor que 0x4000h cierta parte del codigo me lo coloca a partir de 0x4000h y si el offset indicado es menor, me desplaza el programa bien.
He aqui el resultado cuando especifico un offset de 0x6000 por ejemplo:
Psect Usage Map:
Psect | Contents | Memory Range
---------|--------------------------|--------------------
redirect | User defined psect | $000000 - $000003
text | Program and library code | $004000 - $004067
text | Program and library code | $004068 - $00408B
text | Program and library code | $00408C - $00409D
powerup | Power on reset code | $006000 - $006003
init | Initialization code | $006018 - $006031
end_init | Initialization code | $006032 - $006035
param | Parameter auto blocks | $0000FF - $0000FF
bigbss | Large RAM variables | $0005FF - $0005FF
rbit | Bit variables | $000000 - $000000
Memory Usage Map:
Program ROM $000000 - $000003 $000004 ( 4) bytes
Program ROM $004000 - $00409D $00009E ( 158) bytes
Program ROM $006000 - $006003 $000004 ( 4) bytes
Program ROM $006018 - $006035 $00001E ( 30) bytes
$0000C4 ( 196) bytes total Program ROM
RAM data $0000FF - $0000FF $000001 ( 1) bytes
RAM data $0005FF - $0005FF $000001 ( 1) bytes
$000002 ( 2) bytes total RAM data
Near bits $000000 - $000000 $000001 ( 1) bits total Near bits
Si os fijais, la seccion de codigo de inicialización queda a partir de 0x6000h pero la seccion de codigo de las librerias quedan a partir de 0x4000h (16384)
¿Sabe alguien que puede estar pasando?.
¿Tiene alguien algo de practica en reubicar programas?
Gracias