I move a project from CCS 6.1 to CCS 6.2. Along with that, the compiler version went from 4.2.2 to 16.9.1. The expected entry point for the firmware is 0x8000. It has to be there to work with the bootloader.
This entry point is controlled by the following lines in the linker command file:
.boot > 0x8000
{
-l rts*.lib<boot.obj > (.text)
}
For compiler 4.2.2, this placed the entry point at 0x8000. However, for compiler, 16.9.1 it no longer works. I expect that there is no longer a section named .boot in the rts library.
I need to get this working ASAP. Any help would be appreciated.
I have attached 3 files.
A GREP excerpt of the map file showing instances of rts430 OR 8000 with compiler 4.2.2.
A GREP excerpt of the map file showing instances of rts430 OR 8000 with compiler 16.9.1 LTS.
An excerpt of linker command file that is used showing anything that seemed pertinent to this issue.
Regards, Jim
MSP430F5310 using with both compilers 4.2.2 & 16.9.1 LTS
*************************** Link Command File Excerpt *************************************
MEMORY CONFIGURATION
name origin length used unused attr fill
---------------------- -------- --------- -------- -------- ---- --------
FLASH 00008000 00005fe0 00004692 0000194e RWIX
SECTIONS
{
.bss : {} > RAM /* GLOBAL & STATIC VARS */
.data : {} > RAM /* GLOBAL & STATIC VARS */
.sysmem : {} > RAM /* DYNAMIC MEMORY ALLOCATION AREA */
.stack : {} > RAM (HIGH) /* SOFTWARE SYSTEM STACK */
.boot > 0x8000
{
-l rts*.lib<boot.obj > (.text)
}
GROUP
{
.text : {} /* CODE */
.cinit : {} /* INITIALIZATION TABLES */
.const : {} /* CONSTANT DATA */
.pinit : {} /* C++ CONSTRUCTOR TABLES */
.init_array : {} /* C++ CONSTRUCTOR TABLES */
.mspabi.exidx : {} /* C++ CONSTRUCTOR TABLES */
.mspabi.extab : {} /* C++ CONSTRUCTOR TABLES */
} load = FLASH
/*---[RUN FROM RAM]----------------------------------------*/
RAMVECT_SEG : load = FLASH, run = RAM_VECTORS, table(_ramvector)
.ovly : {} > FLASH
/*---------------------------------------------------------*/
.infoA : {} > INFOA /* MSP430 INFO FLASH MEMORY SEGMENTS */
.infoB : {} > INFOB
.infoC : {} > INFOC
.infoD : {} > INFOD
.cio : {} > RAM /* C I/O BUFFER */
.reset : {} > RESET /* MSP430 RESET VECTOR */
FLASHVECT_SEG : {} > FLASH_VECTORS
APPSWVER_SEG : {} > FLASH_APPSWVER
}
MSP430F5310 using compiler 4.2.2
This places the entry point at 0x8000 because of following entry in the linker command file:
.boot > 0x8000
{
-l rts*.lib<boot.obj > (.text)
}
=========================== Map File Excerpt ================================================
******************************************************************************
MSP430 Linker PC v4.2.2
******************************************************************************
>> Linked Mon Nov 21 15:52:53 2016
OUTPUT FILE NAME: <SynCapBdApp.out>
ENTRY POINT SYMBOL: "_c_int00" address: 00008000
MEMORY CONFIGURATION
name origin length used unused attr fill
---------------------- -------- --------- -------- -------- ---- --------
FLASH 00008000 00005fe0 00004dd5 0000120b RWIX
SECTION ALLOCATION MAP
output attributes/
section page origin length input sections
-------- ---- ---------- ---------- ----------------
.stack 0 00003260 000000a0 UNINITIALIZED
00003260 00000002 rts430x_sc_sd_eabi.lib : boot.obj (.stack)
00003262 0000009e --HOLE--
.boot 0 00008000 0000001a
00008000 0000001a rts430x_sc_sd_eabi.lib : boot.obj (.text:_c_int00_noexit)
.text 0 00008074 00004470
00008000 0000001a rts430x_sc_sd_eabi.lib : boot.obj (.text:_c_int00_noexit)
0000a9b6 000000c2 rts430x_sc_sd_eabi.lib : fs_mpy.obj (.text)
0000b686 0000005c rts430x_sc_sd_eabi.lib : copy_decompress_rle.obj (.text:__TI_decompress_rle_core)
0000b73c 0000005a rts430x_sc_sd_eabi.lib : autoinit.obj (.text:_auto_init)
0000b89e 00000058 rts430x_sc_sd_eabi.lib : div32u.obj (.text)
0000b9f6 00000054 rts430x_sc_sd_eabi.lib : cpy_tbl.obj (.text:copy_in)
0000bc9e 00000046 rts430x_sc_sd_eabi.lib : fs_tou.obj (.text)
0000bdf4 00000040 rts430x_sc_sd_eabi.lib : div32s.obj (.text)
0000beee 0000003e rts430x_sc_sd_eabi.lib : lsr32.obj (.text:l_lsr_const)
0000c15a 00000024 rts430x_sc_sd_eabi.lib : fs_utof.obj (.text)
0000c268 00000020 rts430x_sc_sd_eabi.lib : mult32_f5hw.obj (.text)
0000c2f6 0000001a rts430x_sc_sd_eabi.lib : strcat.obj (.text:strcat)
0000c340 00000016 rts430x_sc_sd_eabi.lib : div16u.obj (.text)
0000c36a 00000014 rts430x_sc_sd_eabi.lib : copy_zero_init.obj (.text:decompress:ZI:__TI_zero_init)
0000c3a4 00000012 rts430x_sc_sd_eabi.lib : copy_decompress_none.obj (.text:decompress:none:__TI_decompress_none)
0000c464 0000000e rts430x_sc_sd_eabi.lib : strlen.obj (.text:strlen)
0000c492 0000000a rts430x_sc_sd_eabi.lib : lsl16.obj (.text)
0000c4d6 00000006 rts430x_sc_sd_eabi.lib : copy_decompress_rle.obj (.text:decompress:rle24:__TI_decompress_rle24)
.reset 0 0000fffe 00000002
0000fffe 00000002 rts430x_sc_sd_eabi.lib : boot.obj (.reset)
GLOBAL SYMBOLS: SORTED ALPHABETICALLY BY Name
address name
-------- ----
00008000 _c_int00
00008000 _c_int00_noexit
GLOBAL SYMBOLS: SORTED BY Symbol Address
address name
-------- ----
00008000 _c_int00
00008000 _c_int00_noexit
MSP430F5310 using compiler 16.9.1 LTS
Using compiler 16.9.1 LTS, this DOES NOT place the entry point at 0x8000 because of following entry in the linker command file:
.boot > 0x8000
{
-l rts*.lib<boot.obj > (.text)
}
With compiler 4.2.2, this DID place the entry point at 0x8000. It is broken with the new compiler.
=========================== Map File Excerpt ================================================
******************************************************************************
MSP430 Linker PC v16.9.1
******************************************************************************
>> Linked Mon Dec 12 23:15:34 2016
OUTPUT FILE NAME: <SynCapBdApp.out>
ENTRY POINT SYMBOL: "_c_int00_noargs" address: 0000bc88
SECTION ALLOCATION MAP
output attributes/
section page origin length input sections
-------- ---- ---------- ---------- ----------------
.bss 0 00001e00 000006db UNINITIALIZED
000024a2 00000006 rts430x_sc_sd_eabi.lib : memory.obj (.bss)
.sysmem 0 000024dc 000000a0 UNINITIALIZED
000024dc 00000004 rts430x_sc_sd_eabi.lib : memory.obj (.sysmem)
.data 0 0000257c 00000076 UNINITIALIZED
000025e2 00000002 rts430x_sc_sd_eabi.lib : exit_gvars.obj (.data:__TI_cleanup_ptr)
000025e4 00000002 : exit_gvars.obj (.data:__TI_dtors_ptr)
000025e6 00000002 : _lock.obj (.data:_lock)
000025e8 00000002 : _lock.obj (.data:_unlock)
000025ea 00000002 : dtor_list.obj (.data)
000025ec 00000002 : exit.obj (.data)
000025ee 00000002 : memory.obj (.data)
.stack 0 00003260 000000a0 UNINITIALIZED
00003260 00000002 rts430x_sc_sd_eabi.lib : boot.obj (.stack)
.text 0 0000805a 00003e64
0000a45a 000000c4 rts430x_sc_sd_eabi.lib : fs_mpy.obj (.text)
0000a74c 000000ae rts430x_sc_sd_eabi.lib : memory.obj (.text:malloc)
0000aaa2 00000080 rts430x_sc_sd_eabi.lib : memory.obj (.text:free)
0000acf8 0000006e rts430x_sc_sd_eabi.lib : copy_decompress_lzss.obj (.text:decompress:lzss:__TI_decompress_lzss)
0000b200 00000058 rts430x_sc_sd_eabi.lib : cpy_tbl.obj (.text:copy_in)
0000b530 00000048 rts430x_sc_sd_eabi.lib : dtor_list.obj (.text:_Z11__TI_atexitPFYvPvES_S_)
0000b64c 00000046 rts430x_sc_sd_eabi.lib : fs_tou.obj (.text)
0000b7a2 00000044 rts430x_sc_sd_eabi.lib : exit.obj (.text:exit)
0000b866 00000040 rts430x_sc_sd_eabi.lib : div32s.obj (.text)
0000b8e4 0000003e rts430x_sc_sd_eabi.lib : lsr32.obj (.text:l_lsr_const)
0000b996 00000038 rts430x_sc_sd_eabi.lib : memory.obj (.text:minit)
0000bb3c 00000024 rts430x_sc_sd_eabi.lib : fs_utof.obj (.text)
0000bc4a 00000020 rts430x_sc_sd_eabi.lib : mult32_f5hw.obj (.text)
0000bc88 0000001c rts430x_sc_sd_eabi.lib : boot_special.obj (.text:_c_int00_noargs)
0000bd22 00000016 rts430x_sc_sd_eabi.lib : div16u.obj (.text)
0000bd4c 00000014 rts430x_sc_sd_eabi.lib : copy_zero_init.obj (.text:decompress:ZI:__TI_zero_init)
0000bd86 00000012 rts430x_sc_sd_eabi.lib : copy_decompress_none.obj (.text:decompress:none:__TI_decompress_none)
0000be60 0000000a rts430x_sc_sd_eabi.lib : lsl16.obj (.text)
0000beaa 00000006 rts430x_sc_sd_eabi.lib : dtor_list.obj (.text:__cxa_ia64_exit)
.reset 0 0000fffe 00000002
0000fffe 00000002 rts430x_sc_sd_eabi.lib : boot.obj (.reset)
MODULE SUMMARY
Module code ro data rw data
------ ---- ------- -------
C:\ti\ccsv6\tools\compiler\ti-cgt-msp430_16.9.1.LTS\lib\rts430x_sc_sd_eabi.lib
memory.obj 358 0 8
fs_mpy.obj 196 0 0
dtor_list.obj 150 0 4
autoinit_wdt.obj 126 0 0
copy_decompress_lzss.obj 110 0 0
cpy_tbl.obj 88 0 0
div32u.obj 88 0 0
exit.obj 74 0 2
fs_tou.obj 70 0 0
div32s.obj 64 0 0
lsr32.obj 62 0 0
fs_utof.obj 36 0 0
mult32_f5hw.obj 32 0 0
boot_special.obj 28 0 0
div16u.obj 22 0 0
copy_zero_init.obj 20 0 0
mult16_f5hw.obj 20 0 0
copy_decompress_none.obj 18 0 0
memcpy.obj 18 0 0
lsl16.obj 10 0 0
_lock.obj 2 0 4
exit_gvars.obj 0 0 4
pre_init.obj 4 0 0
boot.obj 0 2 0
startup.obj 2 0 0
+--+--------------------------+-------+---------+---------+
Total: 1598 2 22
LINKER GENERATED COPY TABLES
__TI_cinit_table @ 0000bf42 records: 2, size/record: 4, table size: 8
.data: load addr=0000bebe, load size=0000007a bytes, run addr=0000257c, run size=00000076 bytes, compression=copy
.bss: load addr=0000bf3e, load size=00000004 bytes, run addr=00001e00, run size=000006db bytes, compression=zero_init
_ramvector @ 0000c688 records: 1, size/record: 6, table size: 10
RAMVECT_SEG: load addr=00008000, load size=0000005a, run addr=00001c00, run size=0000005a, compression=none