You are going to have to nail down the location with the define of a structure and some magic in your linker command file.
in one of your c modules....
/* Note, this structure is not referenced by the main code but rather is
used by the code in the FlashProgrammer and BootLoader project to locate
entities within the main image. Changes here will require changes
to of the other two projects. Changes will, void backwards
compatibility */
__declspec(rodata) const unsigned long myROData[SIZEOF_CONST_MY_DATA/sizeof(unsigned long)]=
{
0, /* version */ //0x1004
0, /* starting address for execution */ //0x1008
0, /* addr of text section0 */ //0x100C
0, /* size of text section0 */ //0x1010
0, /* addr of text section1 */ //0x1014
0, /* size of text section1 */ //0x1018
,,,,,,,
0, /* addr of application data */ //0x102C
0, /* size of application data */ //0x1030
0, /* addr of romp */ //0x1034
0, /* size of romp */ //0x1038
0, /* end of text section marker */ //0x103C
0 /* filler */ //0x1040
};
in your linker command file,,,
KEEP_SECTION{.My_ROData} # Force into image so WRTITEWs below will have a target
___SOFTWARE_REVISION = 2;
#
# The following structure is reference by _main in this application and by the
# update manager (aka BootLoader). Check out both before changing it in any way.
#
.My_ROData : AT (0x1004)
{
WRITEW(0x01000000+___SOFTWARE_REVISION);# MyAddr + version data 0x1004
WRITEW(__QSIstart); # Starting address for main 0x1008
WRITEW(ADDR(.application_text0)); # Start of section 0x100C
WRITEW(SIZEOF(.application_text0)+4); # size of secttion 0x1010
WRITEW(ADDR(.application_text1)); # Start of section 0x1014
WRITEW(SIZEOF(.application_text1)+4); # size of section 0x1018
WRITEW(ADDR(.application_text2)); # Start of section 0x101C
WRITEW(SIZEOF(.application_text2)+4); # size of section 0x1020
WRITEW(ADDR(.application_text3)); # Start of section 0x1024
WRITEW(SIZEOF(.application_text3)+4); # size of section 0x1028
WRITEW(application_data_ROM); # Start of section 0x102C
WRITEW(SIZEOF(.application_data)); # size of section 0x1030
WRITEW(__S_romp); # Start of section 0x1034
WRITEW(SIZEOF(.romp)); # size of section 0x1038
WRITEW(0); # end of RO sections 0x103C
WRITEW(0); # filler, maintains pairings 0x1040
}
RODATA_SIZE = SIZEOF(.My_ROData);
Hope this gets you on the right track.