This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Compiler version change Entry point is no longer at expected location. MSP430F5310

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