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.

Firmware Upgrade using MSP430F5247

Other Parts Discussed in Thread: MSP430F5247, UNIFLASH, MSP430G2553

Hello,

I am trying to upgrade the firmware using MSP430F5247.

I have seached and through many e2e.ti forums and posts and have developed the custom bootloader and a test application.

Initially for this I am blinking different LED to verify the jumping from bootloader to test application.

I have followed this approach, I am attaching my linker files for bootloader and test application

test_application.txt
/* ============================================================================ */
/* Copyright (c) 2014, Texas Instruments Incorporated                           */
/*  All rights reserved.                                                        */
/*                                                                              */
/*  Redistribution and use in source and binary forms, with or without          */
/*  modification, are permitted provided that the following conditions          */
/*  are met:                                                                    */
/*                                                                              */
/*  *  Redistributions of source code must retain the above copyright           */
/*     notice, this list of conditions and the following disclaimer.            */
/*                                                                              */
/*  *  Redistributions in binary form must reproduce the above copyright        */
/*     notice, this list of conditions and the following disclaimer in the      */
/*     documentation and/or other materials provided with the distribution.     */
/*                                                                              */
/*  *  Neither the name of Texas Instruments Incorporated nor the names of      */
/*     its contributors may be used to endorse or promote products derived      */
/*     from this software without specific prior written permission.            */
/*                                                                              */
/*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" */
/*  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,       */
/*  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR      */
/*  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR            */
/*  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,       */
/*  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,         */
/*  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; */
/*  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,    */
/*  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR     */
/*  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,              */
/*  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                          */
/* ============================================================================ */

/******************************************************************************/
/* lnk_msp430f5247.cmd - LINKER COMMAND FILE FOR LINKING MSP430F5247 PROGRAMS     */
/*                                                                            */
/*   Usage:  lnk430 <obj files...>    -o <out file> -m <map file> lnk.cmd     */
/*           cl430  <src files...> -z -o <out file> -m <map file> lnk.cmd     */
/*                                                                            */
/*----------------------------------------------------------------------------*/
/* These linker options are for command line linking only.  For IDE linking,  */
/* you should set your linker options in Project Properties                   */
/* -c                                               LINK USING C CONVENTIONS  */
/* -stack  0x0100                                   SOFTWARE STACK SIZE       */
/* -heap   0x0100                                   HEAP AREA SIZE            */
/*                                                                            */
/*----------------------------------------------------------------------------*/
/* Version: 1.159                                                             */
/*----------------------------------------------------------------------------*/

/****************************************************************************/
/* Specify the system memory map                                            */
/****************************************************************************/


	__Flash_Start = 0x4400;             /* Start of Flash */
	__Flash_End = 0x143FF;                           /* End of Flash */
    __Boot_Start = 0xDF80;         /* Boot flash */
    __Boot_Reset = 0xFFFE;                          /* Boot reset vector */
    _App_Proxy_Vector_Start = 0xDDFE;
    __Boot_VectorTable = 0xFF80;      /* Boot vector table */
   // _App_Start = (__Flash_Start+3);                 /* Application Area */
   // _App_End = (__Boot_Start-1);                    /* End of application area (before boot) */
     _App_Reset_Vector = 0xFF7E;


MEMORY
{
    SFR                     : origin = 0x0000, length = 0x0010
    PERIPHERALS_8BIT        : origin = 0x0010, length = 0x00F0
    PERIPHERALS_16BIT       : origin = 0x0100, length = 0x0100
    RAM                     : origin = 0x2400, length = 0x2000
    INFOA                   : origin = 0x1980, length = 0x0080
    INFOB                   : origin = 0x1900, length = 0x0080
    INFOC                   : origin = 0x1880, length = 0x0080
    INFOD                   : origin = 0x1800, length = 0x0080
    //FLASH                   : origin = 0x4400, length = 0xBB80

    FLASH                   : origin = 0x4400, length = 0x99FE
    FLASH2                  : origin = 0x10000,length = 0x4400

   	APP_PROXY_VECTORS       : origin = 0xDDFE, length = 0x17E

    /*INT00                   : origin = 0xFF80, length = 0x0002
    INT01                   : origin = 0xFF82, length = 0x0002
    INT02                   : origin = 0xFF84, length = 0x0002
    INT03                   : origin = 0xFF86, length = 0x0002
    INT04                   : origin = 0xFF88, length = 0x0002
    INT05                   : origin = 0xFF8A, length = 0x0002
    INT06                   : origin = 0xFF8C, length = 0x0002
    INT07                   : origin = 0xFF8E, length = 0x0002
    INT08                   : origin = 0xFF90, length = 0x0002
    INT09                   : origin = 0xFF92, length = 0x0002
    INT10                   : origin = 0xFF94, length = 0x0002
    INT11                   : origin = 0xFF96, length = 0x0002
    INT12                   : origin = 0xFF98, length = 0x0002
    INT13                   : origin = 0xFF9A, length = 0x0002
    INT14                   : origin = 0xFF9C, length = 0x0002
    INT15                   : origin = 0xFF9E, length = 0x0002
    INT16                   : origin = 0xFFA0, length = 0x0002
    INT17                   : origin = 0xFFA2, length = 0x0002
    INT18                   : origin = 0xFFA4, length = 0x0002
    INT19                   : origin = 0xFFA6, length = 0x0002
    INT20                   : origin = 0xFFA8, length = 0x0002
    INT21                   : origin = 0xFFAA, length = 0x0002
    INT22                   : origin = 0xFFAC, length = 0x0002
    INT23                   : origin = 0xFFAE, length = 0x0002
    INT24                   : origin = 0xFFB0, length = 0x0002
    INT25                   : origin = 0xFFB2, length = 0x0002
    INT26                   : origin = 0xFFB4, length = 0x0002
    INT27                   : origin = 0xFFB6, length = 0x0002
    INT28                   : origin = 0xFFB8, length = 0x0002
    INT29                   : origin = 0xFFBA, length = 0x0002
    INT30                   : origin = 0xFFBC, length = 0x0002
    INT31                   : origin = 0xFFBE, length = 0x0002
    INT32                   : origin = 0xFFC0, length = 0x0002
    INT33                   : origin = 0xFFC2, length = 0x0002
    INT34                   : origin = 0xFFC4, length = 0x0002
    INT35                   : origin = 0xFFC6, length = 0x0002
    INT36                   : origin = 0xFFC8, length = 0x0002
    INT37                   : origin = 0xFFCA, length = 0x0002
    INT38                   : origin = 0xFFCC, length = 0x0002
    INT39                   : origin = 0xFFCE, length = 0x0002
    INT40                   : origin = 0xFFD0, length = 0x0002
    INT41                   : origin = 0xFFD2, length = 0x0002
    INT42                   : origin = 0xFFD4, length = 0x0002
    INT43                   : origin = 0xFFD6, length = 0x0002
    INT44                   : origin = 0xFFD8, length = 0x0002
    INT45                   : origin = 0xFFDA, length = 0x0002
    INT46                   : origin = 0xFFDC, length = 0x0002
    INT47                   : origin = 0xFFDE, length = 0x0002
    INT48                   : origin = 0xFFE0, length = 0x0002
    INT49                   : origin = 0xFFE2, length = 0x0002
    INT50                   : origin = 0xFFE4, length = 0x0002
    INT51                   : origin = 0xFFE6, length = 0x0002
    INT52                   : origin = 0xFFE8, length = 0x0002
    INT53                   : origin = 0xFFEA, length = 0x0002
    INT54                   : origin = 0xFFEC, length = 0x0002
    INT55                   : origin = 0xFFEE, length = 0x0002
    INT56                   : origin = 0xFFF0, length = 0x0002
    INT57                   : origin = 0xFFF2, length = 0x0002
    INT58                   : origin = 0xFFF4, length = 0x0002
    INT59                   : origin = 0xFFF6, length = 0x0002
    INT60                   : origin = 0xFFF8, length = 0x0002
    INT61                   : origin = 0xFFFA, length = 0x0002
    INT62                   : origin = 0xFFFC, length = 0x0002*/
    RESET                   : origin = 0xDF7C, length = 0x0004
}

/****************************************************************************/
/* Specify the sections allocation into memory                              */
/****************************************************************************/

SECTIONS
{
    .bss        : {} > RAM                  /* Global & static vars              */
    .data       : {} > RAM                  /* Global & static vars              */
    .TI.noinit  : {} > RAM                  /* For #pragma noinit                */
    .sysmem     : {} > RAM                  /* Dynamic memory allocation area    */
    .stack      : {} > RAM (HIGH)           /* Software system stack             */

#ifndef __LARGE_DATA_MODEL__
    .text       : {}>> FLASH                /* Code                              */
#else
    .text       : {}>> FLASH2 | FLASH       /* Code                              */
#endif
    .text:_isr  : {} > FLASH                /* ISR Code space                    */
    .cinit      : {} > FLASH                /* Initialization tables             */
#ifndef __LARGE_DATA_MODEL__
    .const      : {} > FLASH                /* Constant data                     */
#else
    .const      : {} > FLASH | FLASH2       /* Constant data                     */
#endif
    .cio        : {} > RAM                  /* C I/O Buffer                      */

    .pinit      : {} > FLASH                /* C++ Constructor tables            */
    .init_array : {} > FLASH                /* C++ Constructor tables            */
    .mspabi.exidx : {} > FLASH              /* C++ Constructor tables            */
    .mspabi.extab : {} > FLASH              /* C++ Constructor tables            */

    .infoA     : {} > INFOA              /* MSP430 INFO FLASH Memory segments */
    .infoB     : {} > INFOB
    .infoC     : {} > INFOC
    .infoD     : {} > INFOD

	.APP_PROXY_VECTORS : {} > APP_PROXY_VECTORS /* INTERRUPT PROXY TABLE            */
    /* MSP430 Interrupt vectors
    .int00       : {}               > INT00
    .int01       : {}               > INT01
    .int02       : {}               > INT02
    .int03       : {}               > INT03
    .int04       : {}               > INT04
    .int05       : {}               > INT05
    .int06       : {}               > INT06
    .int07       : {}               > INT07
    .int08       : {}               > INT08
    .int09       : {}               > INT09
    .int10       : {}               > INT10
    .int11       : {}               > INT11
    .int12       : {}               > INT12
    .int13       : {}               > INT13
    .int14       : {}               > INT14
    .int15       : {}               > INT15
    .int16       : {}               > INT16
    .int17       : {}               > INT17
    .int18       : {}               > INT18
    .int19       : {}               > INT19
    .int20       : {}               > INT20
    .int21       : {}               > INT21
    .int22       : {}               > INT22
    .int23       : {}               > INT23
    .int24       : {}               > INT24
    .int25       : {}               > INT25
    .int26       : {}               > INT26
    .int27       : {}               > INT27
    .int28       : {}               > INT28
    .int29       : {}               > INT29
    .int30       : {}               > INT30
    .int31       : {}               > INT31
    .int32       : {}               > INT32
    .int33       : {}               > INT33
    .int34       : {}               > INT34
    .int35       : {}               > INT35
    .int36       : {}               > INT36
    .int37       : {}               > INT37
    .int38       : {}               > INT38
    .int39       : {}               > INT39
    .int40       : {}               > INT40
    RTC          : { * ( .int41 ) } > INT41 type = VECT_INIT
    PORT2        : { * ( .int42 ) } > INT42 type = VECT_INIT
    TIMER2_A1    : { * ( .int43 ) } > INT43 type = VECT_INIT
    TIMER2_A0    : { * ( .int44 ) } > INT44 type = VECT_INIT
    USCI_B1      : { * ( .int45 ) } > INT45 type = VECT_INIT
    USCI_A1      : { * ( .int46 ) } > INT46 type = VECT_INIT
    PORT1        : { * ( .int47 ) } > INT47 type = VECT_INIT
    TIMER1_A1    : { * ( .int48 ) } > INT48 type = VECT_INIT
    TIMER1_A0    : { * ( .int49 ) } > INT49 type = VECT_INIT
    DMA          : { * ( .int50 ) } > INT50 type = VECT_INIT
    .int51       : {}               > INT51
    TIMER0_A1    : { * ( .int52 ) } > INT52 type = VECT_INIT
    TIMER0_A0    : { * ( .int53 ) } > INT53 type = VECT_INIT
    ADC10        : { * ( .int54 ) } > INT54 type = VECT_INIT
    USCI_B0      : { * ( .int55 ) } > INT55 type = VECT_INIT
    USCI_A0      : { * ( .int56 ) } > INT56 type = VECT_INIT
    WDT          : { * ( .int57 ) } > INT57 type = VECT_INIT
    TIMER0_B1    : { * ( .int58 ) } > INT58 type = VECT_INIT
    TIMER0_B0    : { * ( .int59 ) } > INT59 type = VECT_INIT
    COMP_B       : { * ( .int60 ) } > INT60 type = VECT_INIT
    UNMI         : { * ( .int61 ) } > INT61 type = VECT_INIT
    SYSNMI       : { * ( .int62 ) } > INT62 type = VECT_INIT*/
    .reset       : {}               > RESET  /* MSP430 Reset vector         */
}

/****************************************************************************/
/* Include peripherals memory map                                           */
/****************************************************************************/

-l msp430f5247.cmd

test_application.txt
/* ============================================================================ */
/* Copyright (c) 2014, Texas Instruments Incorporated                           */
/*  All rights reserved.                                                        */
/*                                                                              */
/*  Redistribution and use in source and binary forms, with or without          */
/*  modification, are permitted provided that the following conditions          */
/*  are met:                                                                    */
/*                                                                              */
/*  *  Redistributions of source code must retain the above copyright           */
/*     notice, this list of conditions and the following disclaimer.            */
/*                                                                              */
/*  *  Redistributions in binary form must reproduce the above copyright        */
/*     notice, this list of conditions and the following disclaimer in the      */
/*     documentation and/or other materials provided with the distribution.     */
/*                                                                              */
/*  *  Neither the name of Texas Instruments Incorporated nor the names of      */
/*     its contributors may be used to endorse or promote products derived      */
/*     from this software without specific prior written permission.            */
/*                                                                              */
/*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" */
/*  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,       */
/*  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR      */
/*  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR            */
/*  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,       */
/*  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,         */
/*  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; */
/*  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,    */
/*  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR     */
/*  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,              */
/*  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                          */
/* ============================================================================ */

/******************************************************************************/
/* lnk_msp430f5247.cmd - LINKER COMMAND FILE FOR LINKING MSP430F5247 PROGRAMS     */
/*                                                                            */
/*   Usage:  lnk430 <obj files...>    -o <out file> -m <map file> lnk.cmd     */
/*           cl430  <src files...> -z -o <out file> -m <map file> lnk.cmd     */
/*                                                                            */
/*----------------------------------------------------------------------------*/
/* These linker options are for command line linking only.  For IDE linking,  */
/* you should set your linker options in Project Properties                   */
/* -c                                               LINK USING C CONVENTIONS  */
/* -stack  0x0100                                   SOFTWARE STACK SIZE       */
/* -heap   0x0100                                   HEAP AREA SIZE            */
/*                                                                            */
/*----------------------------------------------------------------------------*/
/* Version: 1.159                                                             */
/*----------------------------------------------------------------------------*/

/****************************************************************************/
/* Specify the system memory map                                            */
/****************************************************************************/


	__Flash_Start = 0x4400;             /* Start of Flash */
	__Flash_End = 0x143FF;                           /* End of Flash */
    __Boot_Start = 0xDF80;         /* Boot flash */
    __Boot_Reset = 0xFFFE;                          /* Boot reset vector */
    _App_Proxy_Vector_Start = 0xDDFE;
    __Boot_VectorTable = 0xFF80;      /* Boot vector table */
   // _App_Start = (__Flash_Start+3);                 /* Application Area */
   // _App_End = (__Boot_Start-1);                    /* End of application area (before boot) */
     _App_Reset_Vector = 0xFF7E;


MEMORY
{
    SFR                     : origin = 0x0000, length = 0x0010
    PERIPHERALS_8BIT        : origin = 0x0010, length = 0x00F0
    PERIPHERALS_16BIT       : origin = 0x0100, length = 0x0100
    RAM                     : origin = 0x2400, length = 0x2000
    INFOA                   : origin = 0x1980, length = 0x0080
    INFOB                   : origin = 0x1900, length = 0x0080
    INFOC                   : origin = 0x1880, length = 0x0080
    INFOD                   : origin = 0x1800, length = 0x0080
    //FLASH                   : origin = 0x4400, length = 0xBB80

    FLASH                   : origin = 0x4400, length = 0x99FE
    FLASH2                  : origin = 0x10000,length = 0x4400

   	APP_PROXY_VECTORS       : origin = 0xDDFE, length = 0x17E

    /*INT00                   : origin = 0xFF80, length = 0x0002
    INT01                   : origin = 0xFF82, length = 0x0002
    INT02                   : origin = 0xFF84, length = 0x0002
    INT03                   : origin = 0xFF86, length = 0x0002
    INT04                   : origin = 0xFF88, length = 0x0002
    INT05                   : origin = 0xFF8A, length = 0x0002
    INT06                   : origin = 0xFF8C, length = 0x0002
    INT07                   : origin = 0xFF8E, length = 0x0002
    INT08                   : origin = 0xFF90, length = 0x0002
    INT09                   : origin = 0xFF92, length = 0x0002
    INT10                   : origin = 0xFF94, length = 0x0002
    INT11                   : origin = 0xFF96, length = 0x0002
    INT12                   : origin = 0xFF98, length = 0x0002
    INT13                   : origin = 0xFF9A, length = 0x0002
    INT14                   : origin = 0xFF9C, length = 0x0002
    INT15                   : origin = 0xFF9E, length = 0x0002
    INT16                   : origin = 0xFFA0, length = 0x0002
    INT17                   : origin = 0xFFA2, length = 0x0002
    INT18                   : origin = 0xFFA4, length = 0x0002
    INT19                   : origin = 0xFFA6, length = 0x0002
    INT20                   : origin = 0xFFA8, length = 0x0002
    INT21                   : origin = 0xFFAA, length = 0x0002
    INT22                   : origin = 0xFFAC, length = 0x0002
    INT23                   : origin = 0xFFAE, length = 0x0002
    INT24                   : origin = 0xFFB0, length = 0x0002
    INT25                   : origin = 0xFFB2, length = 0x0002
    INT26                   : origin = 0xFFB4, length = 0x0002
    INT27                   : origin = 0xFFB6, length = 0x0002
    INT28                   : origin = 0xFFB8, length = 0x0002
    INT29                   : origin = 0xFFBA, length = 0x0002
    INT30                   : origin = 0xFFBC, length = 0x0002
    INT31                   : origin = 0xFFBE, length = 0x0002
    INT32                   : origin = 0xFFC0, length = 0x0002
    INT33                   : origin = 0xFFC2, length = 0x0002
    INT34                   : origin = 0xFFC4, length = 0x0002
    INT35                   : origin = 0xFFC6, length = 0x0002
    INT36                   : origin = 0xFFC8, length = 0x0002
    INT37                   : origin = 0xFFCA, length = 0x0002
    INT38                   : origin = 0xFFCC, length = 0x0002
    INT39                   : origin = 0xFFCE, length = 0x0002
    INT40                   : origin = 0xFFD0, length = 0x0002
    INT41                   : origin = 0xFFD2, length = 0x0002
    INT42                   : origin = 0xFFD4, length = 0x0002
    INT43                   : origin = 0xFFD6, length = 0x0002
    INT44                   : origin = 0xFFD8, length = 0x0002
    INT45                   : origin = 0xFFDA, length = 0x0002
    INT46                   : origin = 0xFFDC, length = 0x0002
    INT47                   : origin = 0xFFDE, length = 0x0002
    INT48                   : origin = 0xFFE0, length = 0x0002
    INT49                   : origin = 0xFFE2, length = 0x0002
    INT50                   : origin = 0xFFE4, length = 0x0002
    INT51                   : origin = 0xFFE6, length = 0x0002
    INT52                   : origin = 0xFFE8, length = 0x0002
    INT53                   : origin = 0xFFEA, length = 0x0002
    INT54                   : origin = 0xFFEC, length = 0x0002
    INT55                   : origin = 0xFFEE, length = 0x0002
    INT56                   : origin = 0xFFF0, length = 0x0002
    INT57                   : origin = 0xFFF2, length = 0x0002
    INT58                   : origin = 0xFFF4, length = 0x0002
    INT59                   : origin = 0xFFF6, length = 0x0002
    INT60                   : origin = 0xFFF8, length = 0x0002
    INT61                   : origin = 0xFFFA, length = 0x0002
    INT62                   : origin = 0xFFFC, length = 0x0002*/
    RESET                   : origin = 0xDF7C, length = 0x0004
}

/****************************************************************************/
/* Specify the sections allocation into memory                              */
/****************************************************************************/

SECTIONS
{
    .bss        : {} > RAM                  /* Global & static vars              */
    .data       : {} > RAM                  /* Global & static vars              */
    .TI.noinit  : {} > RAM                  /* For #pragma noinit                */
    .sysmem     : {} > RAM                  /* Dynamic memory allocation area    */
    .stack      : {} > RAM (HIGH)           /* Software system stack             */

#ifndef __LARGE_DATA_MODEL__
    .text       : {}>> FLASH                /* Code                              */
#else
    .text       : {}>> FLASH2 | FLASH       /* Code                              */
#endif
    .text:_isr  : {} > FLASH                /* ISR Code space                    */
    .cinit      : {} > FLASH                /* Initialization tables             */
#ifndef __LARGE_DATA_MODEL__
    .const      : {} > FLASH                /* Constant data                     */
#else
    .const      : {} > FLASH | FLASH2       /* Constant data                     */
#endif
    .cio        : {} > RAM                  /* C I/O Buffer                      */

    .pinit      : {} > FLASH                /* C++ Constructor tables            */
    .init_array : {} > FLASH                /* C++ Constructor tables            */
    .mspabi.exidx : {} > FLASH              /* C++ Constructor tables            */
    .mspabi.extab : {} > FLASH              /* C++ Constructor tables            */

    .infoA     : {} > INFOA              /* MSP430 INFO FLASH Memory segments */
    .infoB     : {} > INFOB
    .infoC     : {} > INFOC
    .infoD     : {} > INFOD

	.APP_PROXY_VECTORS : {} > APP_PROXY_VECTORS /* INTERRUPT PROXY TABLE            */
    /* MSP430 Interrupt vectors
    .int00       : {}               > INT00
    .int01       : {}               > INT01
    .int02       : {}               > INT02
    .int03       : {}               > INT03
    .int04       : {}               > INT04
    .int05       : {}               > INT05
    .int06       : {}               > INT06
    .int07       : {}               > INT07
    .int08       : {}               > INT08
    .int09       : {}               > INT09
    .int10       : {}               > INT10
    .int11       : {}               > INT11
    .int12       : {}               > INT12
    .int13       : {}               > INT13
    .int14       : {}               > INT14
    .int15       : {}               > INT15
    .int16       : {}               > INT16
    .int17       : {}               > INT17
    .int18       : {}               > INT18
    .int19       : {}               > INT19
    .int20       : {}               > INT20
    .int21       : {}               > INT21
    .int22       : {}               > INT22
    .int23       : {}               > INT23
    .int24       : {}               > INT24
    .int25       : {}               > INT25
    .int26       : {}               > INT26
    .int27       : {}               > INT27
    .int28       : {}               > INT28
    .int29       : {}               > INT29
    .int30       : {}               > INT30
    .int31       : {}               > INT31
    .int32       : {}               > INT32
    .int33       : {}               > INT33
    .int34       : {}               > INT34
    .int35       : {}               > INT35
    .int36       : {}               > INT36
    .int37       : {}               > INT37
    .int38       : {}               > INT38
    .int39       : {}               > INT39
    .int40       : {}               > INT40
    RTC          : { * ( .int41 ) } > INT41 type = VECT_INIT
    PORT2        : { * ( .int42 ) } > INT42 type = VECT_INIT
    TIMER2_A1    : { * ( .int43 ) } > INT43 type = VECT_INIT
    TIMER2_A0    : { * ( .int44 ) } > INT44 type = VECT_INIT
    USCI_B1      : { * ( .int45 ) } > INT45 type = VECT_INIT
    USCI_A1      : { * ( .int46 ) } > INT46 type = VECT_INIT
    PORT1        : { * ( .int47 ) } > INT47 type = VECT_INIT
    TIMER1_A1    : { * ( .int48 ) } > INT48 type = VECT_INIT
    TIMER1_A0    : { * ( .int49 ) } > INT49 type = VECT_INIT
    DMA          : { * ( .int50 ) } > INT50 type = VECT_INIT
    .int51       : {}               > INT51
    TIMER0_A1    : { * ( .int52 ) } > INT52 type = VECT_INIT
    TIMER0_A0    : { * ( .int53 ) } > INT53 type = VECT_INIT
    ADC10        : { * ( .int54 ) } > INT54 type = VECT_INIT
    USCI_B0      : { * ( .int55 ) } > INT55 type = VECT_INIT
    USCI_A0      : { * ( .int56 ) } > INT56 type = VECT_INIT
    WDT          : { * ( .int57 ) } > INT57 type = VECT_INIT
    TIMER0_B1    : { * ( .int58 ) } > INT58 type = VECT_INIT
    TIMER0_B0    : { * ( .int59 ) } > INT59 type = VECT_INIT
    COMP_B       : { * ( .int60 ) } > INT60 type = VECT_INIT
    UNMI         : { * ( .int61 ) } > INT61 type = VECT_INIT
    SYSNMI       : { * ( .int62 ) } > INT62 type = VECT_INIT*/
    .reset       : {}               > RESET  /* MSP430 Reset vector         */
}

/****************************************************************************/
/* Include peripherals memory map                                           */
/****************************************************************************/

-l msp430f5247.cmd

i

  • Hello,

    I am trying to upgrade the firmware upgrade and for this i have built custom bootloader through searching and learning e2e.ti various posts and discussions.

    I am trying to jump on the reset vector of my test application where i am blinking different LED. For this i am using a flashing SW Uniflash from which i am flashing the code of my bootloader and my test application simultaneously.

    I am attaching my linker files for bootloader and test application. Also i am jumping to the my defined reset vector address as ((void (*)())0xDF7C)();

    But what happening is only the bootloader code is ruuning the jump to the application fails as my LED doesn't glow.

    3058.test_application.txt
    /* ============================================================================ */
    /* Copyright (c) 2014, Texas Instruments Incorporated                           */
    /*  All rights reserved.                                                        */
    /*                                                                              */
    /*  Redistribution and use in source and binary forms, with or without          */
    /*  modification, are permitted provided that the following conditions          */
    /*  are met:                                                                    */
    /*                                                                              */
    /*  *  Redistributions of source code must retain the above copyright           */
    /*     notice, this list of conditions and the following disclaimer.            */
    /*                                                                              */
    /*  *  Redistributions in binary form must reproduce the above copyright        */
    /*     notice, this list of conditions and the following disclaimer in the      */
    /*     documentation and/or other materials provided with the distribution.     */
    /*                                                                              */
    /*  *  Neither the name of Texas Instruments Incorporated nor the names of      */
    /*     its contributors may be used to endorse or promote products derived      */
    /*     from this software without specific prior written permission.            */
    /*                                                                              */
    /*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" */
    /*  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,       */
    /*  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR      */
    /*  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR            */
    /*  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,       */
    /*  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,         */
    /*  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; */
    /*  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,    */
    /*  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR     */
    /*  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,              */
    /*  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                          */
    /* ============================================================================ */
    
    /******************************************************************************/
    /* lnk_msp430f5247.cmd - LINKER COMMAND FILE FOR LINKING MSP430F5247 PROGRAMS     */
    /*                                                                            */
    /*   Usage:  lnk430 <obj files...>    -o <out file> -m <map file> lnk.cmd     */
    /*           cl430  <src files...> -z -o <out file> -m <map file> lnk.cmd     */
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
    /* These linker options are for command line linking only.  For IDE linking,  */
    /* you should set your linker options in Project Properties                   */
    /* -c                                               LINK USING C CONVENTIONS  */
    /* -stack  0x0100                                   SOFTWARE STACK SIZE       */
    /* -heap   0x0100                                   HEAP AREA SIZE            */
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
    /* Version: 1.159                                                             */
    /*----------------------------------------------------------------------------*/
    
    /****************************************************************************/
    /* Specify the system memory map                                            */
    /****************************************************************************/
    
    
    	__Flash_Start = 0x4400;             /* Start of Flash */
    	__Flash_End = 0x143FF;                           /* End of Flash */
        __Boot_Start = 0xDF80;         /* Boot flash */
        __Boot_Reset = 0xFFFE;                          /* Boot reset vector */
        _App_Proxy_Vector_Start = 0xDDFE;
        __Boot_VectorTable = 0xFF80;      /* Boot vector table */
       // _App_Start = (__Flash_Start+3);                 /* Application Area */
       // _App_End = (__Boot_Start-1);                    /* End of application area (before boot) */
         _App_Reset_Vector = 0xFF7E;
    
    
    MEMORY
    {
        SFR                     : origin = 0x0000, length = 0x0010
        PERIPHERALS_8BIT        : origin = 0x0010, length = 0x00F0
        PERIPHERALS_16BIT       : origin = 0x0100, length = 0x0100
        RAM                     : origin = 0x2400, length = 0x2000
        INFOA                   : origin = 0x1980, length = 0x0080
        INFOB                   : origin = 0x1900, length = 0x0080
        INFOC                   : origin = 0x1880, length = 0x0080
        INFOD                   : origin = 0x1800, length = 0x0080
        //FLASH                   : origin = 0x4400, length = 0xBB80
    
        FLASH                   : origin = 0x4400, length = 0x99FE
        FLASH2                  : origin = 0x10000,length = 0x4400
    
       	APP_PROXY_VECTORS       : origin = 0xDDFE, length = 0x17E
    
        /*INT00                   : origin = 0xFF80, length = 0x0002
        INT01                   : origin = 0xFF82, length = 0x0002
        INT02                   : origin = 0xFF84, length = 0x0002
        INT03                   : origin = 0xFF86, length = 0x0002
        INT04                   : origin = 0xFF88, length = 0x0002
        INT05                   : origin = 0xFF8A, length = 0x0002
        INT06                   : origin = 0xFF8C, length = 0x0002
        INT07                   : origin = 0xFF8E, length = 0x0002
        INT08                   : origin = 0xFF90, length = 0x0002
        INT09                   : origin = 0xFF92, length = 0x0002
        INT10                   : origin = 0xFF94, length = 0x0002
        INT11                   : origin = 0xFF96, length = 0x0002
        INT12                   : origin = 0xFF98, length = 0x0002
        INT13                   : origin = 0xFF9A, length = 0x0002
        INT14                   : origin = 0xFF9C, length = 0x0002
        INT15                   : origin = 0xFF9E, length = 0x0002
        INT16                   : origin = 0xFFA0, length = 0x0002
        INT17                   : origin = 0xFFA2, length = 0x0002
        INT18                   : origin = 0xFFA4, length = 0x0002
        INT19                   : origin = 0xFFA6, length = 0x0002
        INT20                   : origin = 0xFFA8, length = 0x0002
        INT21                   : origin = 0xFFAA, length = 0x0002
        INT22                   : origin = 0xFFAC, length = 0x0002
        INT23                   : origin = 0xFFAE, length = 0x0002
        INT24                   : origin = 0xFFB0, length = 0x0002
        INT25                   : origin = 0xFFB2, length = 0x0002
        INT26                   : origin = 0xFFB4, length = 0x0002
        INT27                   : origin = 0xFFB6, length = 0x0002
        INT28                   : origin = 0xFFB8, length = 0x0002
        INT29                   : origin = 0xFFBA, length = 0x0002
        INT30                   : origin = 0xFFBC, length = 0x0002
        INT31                   : origin = 0xFFBE, length = 0x0002
        INT32                   : origin = 0xFFC0, length = 0x0002
        INT33                   : origin = 0xFFC2, length = 0x0002
        INT34                   : origin = 0xFFC4, length = 0x0002
        INT35                   : origin = 0xFFC6, length = 0x0002
        INT36                   : origin = 0xFFC8, length = 0x0002
        INT37                   : origin = 0xFFCA, length = 0x0002
        INT38                   : origin = 0xFFCC, length = 0x0002
        INT39                   : origin = 0xFFCE, length = 0x0002
        INT40                   : origin = 0xFFD0, length = 0x0002
        INT41                   : origin = 0xFFD2, length = 0x0002
        INT42                   : origin = 0xFFD4, length = 0x0002
        INT43                   : origin = 0xFFD6, length = 0x0002
        INT44                   : origin = 0xFFD8, length = 0x0002
        INT45                   : origin = 0xFFDA, length = 0x0002
        INT46                   : origin = 0xFFDC, length = 0x0002
        INT47                   : origin = 0xFFDE, length = 0x0002
        INT48                   : origin = 0xFFE0, length = 0x0002
        INT49                   : origin = 0xFFE2, length = 0x0002
        INT50                   : origin = 0xFFE4, length = 0x0002
        INT51                   : origin = 0xFFE6, length = 0x0002
        INT52                   : origin = 0xFFE8, length = 0x0002
        INT53                   : origin = 0xFFEA, length = 0x0002
        INT54                   : origin = 0xFFEC, length = 0x0002
        INT55                   : origin = 0xFFEE, length = 0x0002
        INT56                   : origin = 0xFFF0, length = 0x0002
        INT57                   : origin = 0xFFF2, length = 0x0002
        INT58                   : origin = 0xFFF4, length = 0x0002
        INT59                   : origin = 0xFFF6, length = 0x0002
        INT60                   : origin = 0xFFF8, length = 0x0002
        INT61                   : origin = 0xFFFA, length = 0x0002
        INT62                   : origin = 0xFFFC, length = 0x0002*/
        RESET                   : origin = 0xDF7C, length = 0x0004
    }
    
    /****************************************************************************/
    /* Specify the sections allocation into memory                              */
    /****************************************************************************/
    
    SECTIONS
    {
        .bss        : {} > RAM                  /* Global & static vars              */
        .data       : {} > RAM                  /* Global & static vars              */
        .TI.noinit  : {} > RAM                  /* For #pragma noinit                */
        .sysmem     : {} > RAM                  /* Dynamic memory allocation area    */
        .stack      : {} > RAM (HIGH)           /* Software system stack             */
    
    #ifndef __LARGE_DATA_MODEL__
        .text       : {}>> FLASH                /* Code                              */
    #else
        .text       : {}>> FLASH2 | FLASH       /* Code                              */
    #endif
        .text:_isr  : {} > FLASH                /* ISR Code space                    */
        .cinit      : {} > FLASH                /* Initialization tables             */
    #ifndef __LARGE_DATA_MODEL__
        .const      : {} > FLASH                /* Constant data                     */
    #else
        .const      : {} > FLASH | FLASH2       /* Constant data                     */
    #endif
        .cio        : {} > RAM                  /* C I/O Buffer                      */
    
        .pinit      : {} > FLASH                /* C++ Constructor tables            */
        .init_array : {} > FLASH                /* C++ Constructor tables            */
        .mspabi.exidx : {} > FLASH              /* C++ Constructor tables            */
        .mspabi.extab : {} > FLASH              /* C++ Constructor tables            */
    
        .infoA     : {} > INFOA              /* MSP430 INFO FLASH Memory segments */
        .infoB     : {} > INFOB
        .infoC     : {} > INFOC
        .infoD     : {} > INFOD
    
    	.APP_PROXY_VECTORS : {} > APP_PROXY_VECTORS /* INTERRUPT PROXY TABLE            */
        /* MSP430 Interrupt vectors
        .int00       : {}               > INT00
        .int01       : {}               > INT01
        .int02       : {}               > INT02
        .int03       : {}               > INT03
        .int04       : {}               > INT04
        .int05       : {}               > INT05
        .int06       : {}               > INT06
        .int07       : {}               > INT07
        .int08       : {}               > INT08
        .int09       : {}               > INT09
        .int10       : {}               > INT10
        .int11       : {}               > INT11
        .int12       : {}               > INT12
        .int13       : {}               > INT13
        .int14       : {}               > INT14
        .int15       : {}               > INT15
        .int16       : {}               > INT16
        .int17       : {}               > INT17
        .int18       : {}               > INT18
        .int19       : {}               > INT19
        .int20       : {}               > INT20
        .int21       : {}               > INT21
        .int22       : {}               > INT22
        .int23       : {}               > INT23
        .int24       : {}               > INT24
        .int25       : {}               > INT25
        .int26       : {}               > INT26
        .int27       : {}               > INT27
        .int28       : {}               > INT28
        .int29       : {}               > INT29
        .int30       : {}               > INT30
        .int31       : {}               > INT31
        .int32       : {}               > INT32
        .int33       : {}               > INT33
        .int34       : {}               > INT34
        .int35       : {}               > INT35
        .int36       : {}               > INT36
        .int37       : {}               > INT37
        .int38       : {}               > INT38
        .int39       : {}               > INT39
        .int40       : {}               > INT40
        RTC          : { * ( .int41 ) } > INT41 type = VECT_INIT
        PORT2        : { * ( .int42 ) } > INT42 type = VECT_INIT
        TIMER2_A1    : { * ( .int43 ) } > INT43 type = VECT_INIT
        TIMER2_A0    : { * ( .int44 ) } > INT44 type = VECT_INIT
        USCI_B1      : { * ( .int45 ) } > INT45 type = VECT_INIT
        USCI_A1      : { * ( .int46 ) } > INT46 type = VECT_INIT
        PORT1        : { * ( .int47 ) } > INT47 type = VECT_INIT
        TIMER1_A1    : { * ( .int48 ) } > INT48 type = VECT_INIT
        TIMER1_A0    : { * ( .int49 ) } > INT49 type = VECT_INIT
        DMA          : { * ( .int50 ) } > INT50 type = VECT_INIT
        .int51       : {}               > INT51
        TIMER0_A1    : { * ( .int52 ) } > INT52 type = VECT_INIT
        TIMER0_A0    : { * ( .int53 ) } > INT53 type = VECT_INIT
        ADC10        : { * ( .int54 ) } > INT54 type = VECT_INIT
        USCI_B0      : { * ( .int55 ) } > INT55 type = VECT_INIT
        USCI_A0      : { * ( .int56 ) } > INT56 type = VECT_INIT
        WDT          : { * ( .int57 ) } > INT57 type = VECT_INIT
        TIMER0_B1    : { * ( .int58 ) } > INT58 type = VECT_INIT
        TIMER0_B0    : { * ( .int59 ) } > INT59 type = VECT_INIT
        COMP_B       : { * ( .int60 ) } > INT60 type = VECT_INIT
        UNMI         : { * ( .int61 ) } > INT61 type = VECT_INIT
        SYSNMI       : { * ( .int62 ) } > INT62 type = VECT_INIT*/
        .reset       : {}               > RESET  /* MSP430 Reset vector         */
    }
    
    /****************************************************************************/
    /* Include peripherals memory map                                           */
    /****************************************************************************/
    
    -l msp430f5247.cmd
    
    
    bootloader.txt
    /* ============================================================================ */
    /* Copyright (c) 2014, Texas Instruments Incorporated                           */
    /*  All rights reserved.                                                        */
    /*                                                                              */
    /*  Redistribution and use in source and binary forms, with or without          */
    /*  modification, are permitted provided that the following conditions          */
    /*  are met:                                                                    */
    /*                                                                              */
    /*  *  Redistributions of source code must retain the above copyright           */
    /*     notice, this list of conditions and the following disclaimer.            */
    /*                                                                              */
    /*  *  Redistributions in binary form must reproduce the above copyright        */
    /*     notice, this list of conditions and the following disclaimer in the      */
    /*     documentation and/or other materials provided with the distribution.     */
    /*                                                                              */
    /*  *  Neither the name of Texas Instruments Incorporated nor the names of      */
    /*     its contributors may be used to endorse or promote products derived      */
    /*     from this software without specific prior written permission.            */
    /*                                                                              */
    /*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" */
    /*  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,       */
    /*  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR      */
    /*  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR            */
    /*  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,       */
    /*  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,         */
    /*  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; */
    /*  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,    */
    /*  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR     */
    /*  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,              */
    /*  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                          */
    /* ============================================================================ */
    
    /******************************************************************************/
    /* lnk_msp430f5247.cmd - LINKER COMMAND FILE FOR LINKING MSP430F5247 PROGRAMS     */
    /*                                                                            */
    /*   Usage:  lnk430 <obj files...>    -o <out file> -m <map file> lnk.cmd     */
    /*           cl430  <src files...> -z -o <out file> -m <map file> lnk.cmd     */
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
    /* These linker options are for command line linking only.  For IDE linking,  */
    /* you should set your linker options in Project Properties                   */
    /* -c                                               LINK USING C CONVENTIONS  */
    /* -stack  0x0100                                   SOFTWARE STACK SIZE       */
    /* -heap   0x0100                                   HEAP AREA SIZE            */
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
    /* Version: 1.159                                                             */
    /*----------------------------------------------------------------------------*/
    
    /****************************************************************************/
    /* Specify the system memory map                                            */
    /****************************************************************************/
    
    __Flash_Start = 0x4400;             /* Start of Flash */
    __Flash_End = 0x143FF;                           /* End of Flash */
    _App_Proxy_Vector_Start = 0xDDFE;
        __Boot_Start = 0xDF80;         /* Boot flash */
        __Boot_Reset = 0xFFFE;                          /* Boot reset vector */
        __Boot_VectorTable = 0xFF80;      /* Boot vector table */
    
       // _App_Start = (__Flash_Start);                 /* Application Area */
        //_App_End = (__Boot_Start-1);                    /* End of application area (before boot) */
    MEMORY
    {
        SFR                     : origin = 0x0000, length = 0x0010
        PERIPHERALS_8BIT        : origin = 0x0010, length = 0x00F0
        PERIPHERALS_16BIT       : origin = 0x0100, length = 0x0100
        RAM                     : origin = 0x2400, length = 0x2000
        INFOA                   : origin = 0x1980, length = 0x0080
        INFOB                   : origin = 0x1900, length = 0x0080
        INFOC                   : origin = 0x1880, length = 0x0080
        INFOD                   : origin = 0x1800, length = 0x0080
     //   FLASH                   : origin = 0x4400, length = 0xBB80
     //   FLASH2                  : origin = 0x10000,length = 0x4400
    // FLASH				   : origin = 0x4400, length = 0x1F40	// 8KB for OTA Bootloader
    
    
     	FLASH      				 : origin = 0xDF80, length = 0x2000 // 8KB for OTA Bootloader
    	INT_VECTOR_TABLE        : origin = 0xFF80, length = 0x7E
     //FLASH2                : origin = 0x10000,length = 0x4400
     /*   INT00                   : origin = 0xFF80, length = 0x0002
        INT01                   : origin = 0xFF82, length = 0x0002
        INT02                   : origin = 0xFF84, length = 0x0002
        INT03                   : origin = 0xFF86, length = 0x0002
        INT04                   : origin = 0xFF88, length = 0x0002
        INT05                   : origin = 0xFF8A, length = 0x0002
        INT06                   : origin = 0xFF8C, length = 0x0002
        INT07                   : origin = 0xFF8E, length = 0x0002
        INT08                   : origin = 0xFF90, length = 0x0002
        INT09                   : origin = 0xFF92, length = 0x0002
        INT10                   : origin = 0xFF94, length = 0x0002
        INT11                   : origin = 0xFF96, length = 0x0002
        INT12                   : origin = 0xFF98, length = 0x0002
        INT13                   : origin = 0xFF9A, length = 0x0002
        INT14                   : origin = 0xFF9C, length = 0x0002
        INT15                   : origin = 0xFF9E, length = 0x0002
        INT16                   : origin = 0xFFA0, length = 0x0002
        INT17                   : origin = 0xFFA2, length = 0x0002
        INT18                   : origin = 0xFFA4, length = 0x0002
        INT19                   : origin = 0xFFA6, length = 0x0002
        INT20                   : origin = 0xFFA8, length = 0x0002
        INT21                   : origin = 0xFFAA, length = 0x0002
        INT22                   : origin = 0xFFAC, length = 0x0002
        INT23                   : origin = 0xFFAE, length = 0x0002
        INT24                   : origin = 0xFFB0, length = 0x0002
        INT25                   : origin = 0xFFB2, length = 0x0002
        INT26                   : origin = 0xFFB4, length = 0x0002
        INT27                   : origin = 0xFFB6, length = 0x0002
        INT28                   : origin = 0xFFB8, length = 0x0002
        INT29                   : origin = 0xFFBA, length = 0x0002
        INT30                   : origin = 0xFFBC, length = 0x0002
        INT31                   : origin = 0xFFBE, length = 0x0002
        INT32                   : origin = 0xFFC0, length = 0x0002
        INT33                   : origin = 0xFFC2, length = 0x0002
        INT34                   : origin = 0xFFC4, length = 0x0002
        INT35                   : origin = 0xFFC6, length = 0x0002
        INT36                   : origin = 0xFFC8, length = 0x0002
        INT37                   : origin = 0xFFCA, length = 0x0002
        INT38                   : origin = 0xFFCC, length = 0x0002
        INT39                   : origin = 0xFFCE, length = 0x0002
        INT40                   : origin = 0xFFD0, length = 0x0002
        INT41                   : origin = 0xFFD2, length = 0x0002
        INT42                   : origin = 0xFFD4, length = 0x0002
        INT43                   : origin = 0xFFD6, length = 0x0002
        INT44                   : origin = 0xFFD8, length = 0x0002
        INT45                   : origin = 0xFFDA, length = 0x0002
        INT46                   : origin = 0xFFDC, length = 0x0002
        INT47                   : origin = 0xFFDE, length = 0x0002
        INT48                   : origin = 0xFFE0, length = 0x0002
        INT49                   : origin = 0xFFE2, length = 0x0002
        INT50                   : origin = 0xFFE4, length = 0x0002
        INT51                   : origin = 0xFFE6, length = 0x0002
        INT52                   : origin = 0xFFE8, length = 0x0002
        INT53                   : origin = 0xFFEA, length = 0x0002
        INT54                   : origin = 0xFFEC, length = 0x0002
        INT55                   : origin = 0xFFEE, length = 0x0002
        INT56                   : origin = 0xFFF0, length = 0x0002
        INT57                   : origin = 0xFFF2, length = 0x0002
        INT58                   : origin = 0xFFF4, length = 0x0002
        INT59                   : origin = 0xFFF6, length = 0x0002
        INT60                   : origin = 0xFFF8, length = 0x0002
        INT61                   : origin = 0xFFFA, length = 0x0002
        INT62                   : origin = 0xFFFC, length = 0x0002*/
        RESET                   : origin = 0xFFFE, length = 0x0002
    }
    
    /****************************************************************************/
    /* Specify the sections allocation into memory                              */
    /****************************************************************************/
    
    SECTIONS
    {
        .bss        : {} > RAM                  /* Global & static vars              */
        .data       : {} > RAM                  /* Global & static vars              */
        .TI.noinit  : {} > RAM                  /* For #pragma noinit                */
        .sysmem     : {} > RAM                  /* Dynamic memory allocation area    */
        .stack      : {} > RAM (HIGH)           /* Software system stack             */
    
    #ifndef __LARGE_DATA_MODEL__
        .text       : {}>> FLASH                /* Code                              */
    #else
        .text       : {}>> FLASH2 | FLASH       /* Code                              */
    #endif
        .text:_isr  : {} > FLASH                /* ISR Code space                    */
        .cinit      : {} > FLASH                /* Initialization tables             */
    #ifndef __LARGE_DATA_MODEL__
        .const      : {} > FLASH                /* Constant data                     */
    #else
        .const      : {} > FLASH | FLASH2       /* Constant data                     */
    #endif
        .cio        : {} > RAM                  /* C I/O Buffer                      */
    
        .pinit      : {} > FLASH                /* C++ Constructor tables            */
        .init_array : {} > FLASH                /* C++ Constructor tables            */
        .mspabi.exidx : {} > FLASH              /* C++ Constructor tables            */
        .mspabi.extab : {} > FLASH              /* C++ Constructor tables            */
    
        .infoA     : {} > INFOA              /* MSP430 INFO FLASH Memory segments */
        .infoB     : {} > INFOB
        .infoC     : {} > INFOC
        .infoD     : {} > INFOD
    
    	.BOOT_VECTOR_TABLE : {} > INT_VECTOR_TABLE
        /* MSP430 Interrupt vectors          */
       /* .int00       : {}               > INT00
        .int01       : {}               > INT01
        .int02       : {}               > INT02
        .int03       : {}               > INT03
        .int04       : {}               > INT04
        .int05       : {}               > INT05
        .int06       : {}               > INT06
        .int07       : {}               > INT07
        .int08       : {}               > INT08
        .int09       : {}               > INT09
        .int10       : {}               > INT10
        .int11       : {}               > INT11
        .int12       : {}               > INT12
        .int13       : {}               > INT13
        .int14       : {}               > INT14
        .int15       : {}               > INT15
        .int16       : {}               > INT16
        .int17       : {}               > INT17
        .int18       : {}               > INT18
        .int19       : {}               > INT19
        .int20       : {}               > INT20
        .int21       : {}               > INT21
        .int22       : {}               > INT22
        .int23       : {}               > INT23
        .int24       : {}               > INT24
        .int25       : {}               > INT25
        .int26       : {}               > INT26
        .int27       : {}               > INT27
        .int28       : {}               > INT28
        .int29       : {}               > INT29
        .int30       : {}               > INT30
        .int31       : {}               > INT31
        .int32       : {}               > INT32
        .int33       : {}               > INT33
        .int34       : {}               > INT34
        .int35       : {}               > INT35
        .int36       : {}               > INT36
        .int37       : {}               > INT37
        .int38       : {}               > INT38
        .int39       : {}               > INT39
        .int40       : {}               > INT40
        RTC          : { * ( .int41 ) } > INT41 type = VECT_INIT
        PORT2        : { * ( .int42 ) } > INT42 type = VECT_INIT
        TIMER2_A1    : { * ( .int43 ) } > INT43 type = VECT_INIT
        TIMER2_A0    : { * ( .int44 ) } > INT44 type = VECT_INIT
        USCI_B1      : { * ( .int45 ) } > INT45 type = VECT_INIT
        USCI_A1      : { * ( .int46 ) } > INT46 type = VECT_INIT
        PORT1        : { * ( .int47 ) } > INT47 type = VECT_INIT
        TIMER1_A1    : { * ( .int48 ) } > INT48 type = VECT_INIT
        TIMER1_A0    : { * ( .int49 ) } > INT49 type = VECT_INIT
        DMA          : { * ( .int50 ) } > INT50 type = VECT_INIT
        .int51       : {}               > INT51
        TIMER0_A1    : { * ( .int52 ) } > INT52 type = VECT_INIT
        TIMER0_A0    : { * ( .int53 ) } > INT53 type = VECT_INIT
        ADC10        : { * ( .int54 ) } > INT54 type = VECT_INIT
        USCI_B0      : { * ( .int55 ) } > INT55 type = VECT_INIT
        USCI_A0      : { * ( .int56 ) } > INT56 type = VECT_INIT
        WDT          : { * ( .int57 ) } > INT57 type = VECT_INIT
        TIMER0_B1    : { * ( .int58 ) } > INT58 type = VECT_INIT
        TIMER0_B0    : { * ( .int59 ) } > INT59 type = VECT_INIT
        COMP_B       : { * ( .int60 ) } > INT60 type = VECT_INIT
        UNMI         : { * ( .int61 ) } > INT61 type = VECT_INIT
        SYSNMI       : { * ( .int62 ) } > INT62 type = VECT_INIT*/
        .reset       : {}               > RESET  /* MSP430 Reset vector         */ 
    }
    
    /****************************************************************************/
    /* Include peripherals memory map                                           */
    /****************************************************************************/
    
    -l msp430f5247.cmd
    
    

  • Hello,

    I am trying to upgrade the firmware usinf MSP430F5247.

    For this i have built custom bootloader through learning vrious e2e.ti posts. But while jumping to my app reset vector as ((void (*)())0xDF7C)(); but nothing happens as i am glowing fifferent LED to test the jump from bootloader to test application.

    I am attaching the linker file for the bootloader and test application.

    Through Uniflash I am flasing both the code for bootloader and test application and after reading the flash from FET-pro430. it clearly seen there nothing on the addresses where application is written.

    5001.bootloader.txt
    /* ============================================================================ */
    /* Copyright (c) 2014, Texas Instruments Incorporated                           */
    /*  All rights reserved.                                                        */
    /*                                                                              */
    /*  Redistribution and use in source and binary forms, with or without          */
    /*  modification, are permitted provided that the following conditions          */
    /*  are met:                                                                    */
    /*                                                                              */
    /*  *  Redistributions of source code must retain the above copyright           */
    /*     notice, this list of conditions and the following disclaimer.            */
    /*                                                                              */
    /*  *  Redistributions in binary form must reproduce the above copyright        */
    /*     notice, this list of conditions and the following disclaimer in the      */
    /*     documentation and/or other materials provided with the distribution.     */
    /*                                                                              */
    /*  *  Neither the name of Texas Instruments Incorporated nor the names of      */
    /*     its contributors may be used to endorse or promote products derived      */
    /*     from this software without specific prior written permission.            */
    /*                                                                              */
    /*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" */
    /*  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,       */
    /*  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR      */
    /*  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR            */
    /*  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,       */
    /*  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,         */
    /*  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; */
    /*  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,    */
    /*  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR     */
    /*  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,              */
    /*  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                          */
    /* ============================================================================ */
    
    /******************************************************************************/
    /* lnk_msp430f5247.cmd - LINKER COMMAND FILE FOR LINKING MSP430F5247 PROGRAMS     */
    /*                                                                            */
    /*   Usage:  lnk430 <obj files...>    -o <out file> -m <map file> lnk.cmd     */
    /*           cl430  <src files...> -z -o <out file> -m <map file> lnk.cmd     */
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
    /* These linker options are for command line linking only.  For IDE linking,  */
    /* you should set your linker options in Project Properties                   */
    /* -c                                               LINK USING C CONVENTIONS  */
    /* -stack  0x0100                                   SOFTWARE STACK SIZE       */
    /* -heap   0x0100                                   HEAP AREA SIZE            */
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
    /* Version: 1.159                                                             */
    /*----------------------------------------------------------------------------*/
    
    /****************************************************************************/
    /* Specify the system memory map                                            */
    /****************************************************************************/
    
    __Flash_Start = 0x4400;             /* Start of Flash */
    __Flash_End = 0x143FF;                           /* End of Flash */
    _App_Proxy_Vector_Start = 0xDDFE;
        __Boot_Start = 0xDF80;         /* Boot flash */
        __Boot_Reset = 0xFFFE;                          /* Boot reset vector */
        __Boot_VectorTable = 0xFF80;      /* Boot vector table */
    
       // _App_Start = (__Flash_Start);                 /* Application Area */
        //_App_End = (__Boot_Start-1);                    /* End of application area (before boot) */
    MEMORY
    {
        SFR                     : origin = 0x0000, length = 0x0010
        PERIPHERALS_8BIT        : origin = 0x0010, length = 0x00F0
        PERIPHERALS_16BIT       : origin = 0x0100, length = 0x0100
        RAM                     : origin = 0x2400, length = 0x2000
        INFOA                   : origin = 0x1980, length = 0x0080
        INFOB                   : origin = 0x1900, length = 0x0080
        INFOC                   : origin = 0x1880, length = 0x0080
        INFOD                   : origin = 0x1800, length = 0x0080
     //   FLASH                   : origin = 0x4400, length = 0xBB80
     //   FLASH2                  : origin = 0x10000,length = 0x4400
    // FLASH				   : origin = 0x4400, length = 0x1F40	// 8KB for OTA Bootloader
    
    
     	FLASH      				 : origin = 0xDF80, length = 0x2000 // 8KB for OTA Bootloader
    	INT_VECTOR_TABLE        : origin = 0xFF80, length = 0x7E
     //FLASH2                : origin = 0x10000,length = 0x4400
     /*   INT00                   : origin = 0xFF80, length = 0x0002
        INT01                   : origin = 0xFF82, length = 0x0002
        INT02                   : origin = 0xFF84, length = 0x0002
        INT03                   : origin = 0xFF86, length = 0x0002
        INT04                   : origin = 0xFF88, length = 0x0002
        INT05                   : origin = 0xFF8A, length = 0x0002
        INT06                   : origin = 0xFF8C, length = 0x0002
        INT07                   : origin = 0xFF8E, length = 0x0002
        INT08                   : origin = 0xFF90, length = 0x0002
        INT09                   : origin = 0xFF92, length = 0x0002
        INT10                   : origin = 0xFF94, length = 0x0002
        INT11                   : origin = 0xFF96, length = 0x0002
        INT12                   : origin = 0xFF98, length = 0x0002
        INT13                   : origin = 0xFF9A, length = 0x0002
        INT14                   : origin = 0xFF9C, length = 0x0002
        INT15                   : origin = 0xFF9E, length = 0x0002
        INT16                   : origin = 0xFFA0, length = 0x0002
        INT17                   : origin = 0xFFA2, length = 0x0002
        INT18                   : origin = 0xFFA4, length = 0x0002
        INT19                   : origin = 0xFFA6, length = 0x0002
        INT20                   : origin = 0xFFA8, length = 0x0002
        INT21                   : origin = 0xFFAA, length = 0x0002
        INT22                   : origin = 0xFFAC, length = 0x0002
        INT23                   : origin = 0xFFAE, length = 0x0002
        INT24                   : origin = 0xFFB0, length = 0x0002
        INT25                   : origin = 0xFFB2, length = 0x0002
        INT26                   : origin = 0xFFB4, length = 0x0002
        INT27                   : origin = 0xFFB6, length = 0x0002
        INT28                   : origin = 0xFFB8, length = 0x0002
        INT29                   : origin = 0xFFBA, length = 0x0002
        INT30                   : origin = 0xFFBC, length = 0x0002
        INT31                   : origin = 0xFFBE, length = 0x0002
        INT32                   : origin = 0xFFC0, length = 0x0002
        INT33                   : origin = 0xFFC2, length = 0x0002
        INT34                   : origin = 0xFFC4, length = 0x0002
        INT35                   : origin = 0xFFC6, length = 0x0002
        INT36                   : origin = 0xFFC8, length = 0x0002
        INT37                   : origin = 0xFFCA, length = 0x0002
        INT38                   : origin = 0xFFCC, length = 0x0002
        INT39                   : origin = 0xFFCE, length = 0x0002
        INT40                   : origin = 0xFFD0, length = 0x0002
        INT41                   : origin = 0xFFD2, length = 0x0002
        INT42                   : origin = 0xFFD4, length = 0x0002
        INT43                   : origin = 0xFFD6, length = 0x0002
        INT44                   : origin = 0xFFD8, length = 0x0002
        INT45                   : origin = 0xFFDA, length = 0x0002
        INT46                   : origin = 0xFFDC, length = 0x0002
        INT47                   : origin = 0xFFDE, length = 0x0002
        INT48                   : origin = 0xFFE0, length = 0x0002
        INT49                   : origin = 0xFFE2, length = 0x0002
        INT50                   : origin = 0xFFE4, length = 0x0002
        INT51                   : origin = 0xFFE6, length = 0x0002
        INT52                   : origin = 0xFFE8, length = 0x0002
        INT53                   : origin = 0xFFEA, length = 0x0002
        INT54                   : origin = 0xFFEC, length = 0x0002
        INT55                   : origin = 0xFFEE, length = 0x0002
        INT56                   : origin = 0xFFF0, length = 0x0002
        INT57                   : origin = 0xFFF2, length = 0x0002
        INT58                   : origin = 0xFFF4, length = 0x0002
        INT59                   : origin = 0xFFF6, length = 0x0002
        INT60                   : origin = 0xFFF8, length = 0x0002
        INT61                   : origin = 0xFFFA, length = 0x0002
        INT62                   : origin = 0xFFFC, length = 0x0002*/
        RESET                   : origin = 0xFFFE, length = 0x0002
    }
    
    /****************************************************************************/
    /* Specify the sections allocation into memory                              */
    /****************************************************************************/
    
    SECTIONS
    {
        .bss        : {} > RAM                  /* Global & static vars              */
        .data       : {} > RAM                  /* Global & static vars              */
        .TI.noinit  : {} > RAM                  /* For #pragma noinit                */
        .sysmem     : {} > RAM                  /* Dynamic memory allocation area    */
        .stack      : {} > RAM (HIGH)           /* Software system stack             */
    
    #ifndef __LARGE_DATA_MODEL__
        .text       : {}>> FLASH                /* Code                              */
    #else
        .text       : {}>> FLASH2 | FLASH       /* Code                              */
    #endif
        .text:_isr  : {} > FLASH                /* ISR Code space                    */
        .cinit      : {} > FLASH                /* Initialization tables             */
    #ifndef __LARGE_DATA_MODEL__
        .const      : {} > FLASH                /* Constant data                     */
    #else
        .const      : {} > FLASH | FLASH2       /* Constant data                     */
    #endif
        .cio        : {} > RAM                  /* C I/O Buffer                      */
    
        .pinit      : {} > FLASH                /* C++ Constructor tables            */
        .init_array : {} > FLASH                /* C++ Constructor tables            */
        .mspabi.exidx : {} > FLASH              /* C++ Constructor tables            */
        .mspabi.extab : {} > FLASH              /* C++ Constructor tables            */
    
        .infoA     : {} > INFOA              /* MSP430 INFO FLASH Memory segments */
        .infoB     : {} > INFOB
        .infoC     : {} > INFOC
        .infoD     : {} > INFOD
    
    	.BOOT_VECTOR_TABLE : {} > INT_VECTOR_TABLE
        /* MSP430 Interrupt vectors          */
       /* .int00       : {}               > INT00
        .int01       : {}               > INT01
        .int02       : {}               > INT02
        .int03       : {}               > INT03
        .int04       : {}               > INT04
        .int05       : {}               > INT05
        .int06       : {}               > INT06
        .int07       : {}               > INT07
        .int08       : {}               > INT08
        .int09       : {}               > INT09
        .int10       : {}               > INT10
        .int11       : {}               > INT11
        .int12       : {}               > INT12
        .int13       : {}               > INT13
        .int14       : {}               > INT14
        .int15       : {}               > INT15
        .int16       : {}               > INT16
        .int17       : {}               > INT17
        .int18       : {}               > INT18
        .int19       : {}               > INT19
        .int20       : {}               > INT20
        .int21       : {}               > INT21
        .int22       : {}               > INT22
        .int23       : {}               > INT23
        .int24       : {}               > INT24
        .int25       : {}               > INT25
        .int26       : {}               > INT26
        .int27       : {}               > INT27
        .int28       : {}               > INT28
        .int29       : {}               > INT29
        .int30       : {}               > INT30
        .int31       : {}               > INT31
        .int32       : {}               > INT32
        .int33       : {}               > INT33
        .int34       : {}               > INT34
        .int35       : {}               > INT35
        .int36       : {}               > INT36
        .int37       : {}               > INT37
        .int38       : {}               > INT38
        .int39       : {}               > INT39
        .int40       : {}               > INT40
        RTC          : { * ( .int41 ) } > INT41 type = VECT_INIT
        PORT2        : { * ( .int42 ) } > INT42 type = VECT_INIT
        TIMER2_A1    : { * ( .int43 ) } > INT43 type = VECT_INIT
        TIMER2_A0    : { * ( .int44 ) } > INT44 type = VECT_INIT
        USCI_B1      : { * ( .int45 ) } > INT45 type = VECT_INIT
        USCI_A1      : { * ( .int46 ) } > INT46 type = VECT_INIT
        PORT1        : { * ( .int47 ) } > INT47 type = VECT_INIT
        TIMER1_A1    : { * ( .int48 ) } > INT48 type = VECT_INIT
        TIMER1_A0    : { * ( .int49 ) } > INT49 type = VECT_INIT
        DMA          : { * ( .int50 ) } > INT50 type = VECT_INIT
        .int51       : {}               > INT51
        TIMER0_A1    : { * ( .int52 ) } > INT52 type = VECT_INIT
        TIMER0_A0    : { * ( .int53 ) } > INT53 type = VECT_INIT
        ADC10        : { * ( .int54 ) } > INT54 type = VECT_INIT
        USCI_B0      : { * ( .int55 ) } > INT55 type = VECT_INIT
        USCI_A0      : { * ( .int56 ) } > INT56 type = VECT_INIT
        WDT          : { * ( .int57 ) } > INT57 type = VECT_INIT
        TIMER0_B1    : { * ( .int58 ) } > INT58 type = VECT_INIT
        TIMER0_B0    : { * ( .int59 ) } > INT59 type = VECT_INIT
        COMP_B       : { * ( .int60 ) } > INT60 type = VECT_INIT
        UNMI         : { * ( .int61 ) } > INT61 type = VECT_INIT
        SYSNMI       : { * ( .int62 ) } > INT62 type = VECT_INIT*/
        .reset       : {}               > RESET  /* MSP430 Reset vector         */ 
    }
    
    /****************************************************************************/
    /* Include peripherals memory map                                           */
    /****************************************************************************/
    
    -l msp430f5247.cmd
    
    
    2330.test_application.txt
    /* ============================================================================ */
    /* Copyright (c) 2014, Texas Instruments Incorporated                           */
    /*  All rights reserved.                                                        */
    /*                                                                              */
    /*  Redistribution and use in source and binary forms, with or without          */
    /*  modification, are permitted provided that the following conditions          */
    /*  are met:                                                                    */
    /*                                                                              */
    /*  *  Redistributions of source code must retain the above copyright           */
    /*     notice, this list of conditions and the following disclaimer.            */
    /*                                                                              */
    /*  *  Redistributions in binary form must reproduce the above copyright        */
    /*     notice, this list of conditions and the following disclaimer in the      */
    /*     documentation and/or other materials provided with the distribution.     */
    /*                                                                              */
    /*  *  Neither the name of Texas Instruments Incorporated nor the names of      */
    /*     its contributors may be used to endorse or promote products derived      */
    /*     from this software without specific prior written permission.            */
    /*                                                                              */
    /*  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" */
    /*  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,       */
    /*  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR      */
    /*  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR            */
    /*  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,       */
    /*  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,         */
    /*  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; */
    /*  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,    */
    /*  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR     */
    /*  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,              */
    /*  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                          */
    /* ============================================================================ */
    
    /******************************************************************************/
    /* lnk_msp430f5247.cmd - LINKER COMMAND FILE FOR LINKING MSP430F5247 PROGRAMS     */
    /*                                                                            */
    /*   Usage:  lnk430 <obj files...>    -o <out file> -m <map file> lnk.cmd     */
    /*           cl430  <src files...> -z -o <out file> -m <map file> lnk.cmd     */
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
    /* These linker options are for command line linking only.  For IDE linking,  */
    /* you should set your linker options in Project Properties                   */
    /* -c                                               LINK USING C CONVENTIONS  */
    /* -stack  0x0100                                   SOFTWARE STACK SIZE       */
    /* -heap   0x0100                                   HEAP AREA SIZE            */
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
    /* Version: 1.159                                                             */
    /*----------------------------------------------------------------------------*/
    
    /****************************************************************************/
    /* Specify the system memory map                                            */
    /****************************************************************************/
    
    
    	__Flash_Start = 0x4400;             /* Start of Flash */
    	__Flash_End = 0x143FF;                           /* End of Flash */
        __Boot_Start = 0xDF80;         /* Boot flash */
        __Boot_Reset = 0xFFFE;                          /* Boot reset vector */
        _App_Proxy_Vector_Start = 0xDDFE;
        __Boot_VectorTable = 0xFF80;      /* Boot vector table */
       // _App_Start = (__Flash_Start+3);                 /* Application Area */
       // _App_End = (__Boot_Start-1);                    /* End of application area (before boot) */
         _App_Reset_Vector = 0xFF7E;
    
    
    MEMORY
    {
        SFR                     : origin = 0x0000, length = 0x0010
        PERIPHERALS_8BIT        : origin = 0x0010, length = 0x00F0
        PERIPHERALS_16BIT       : origin = 0x0100, length = 0x0100
        RAM                     : origin = 0x2400, length = 0x2000
        INFOA                   : origin = 0x1980, length = 0x0080
        INFOB                   : origin = 0x1900, length = 0x0080
        INFOC                   : origin = 0x1880, length = 0x0080
        INFOD                   : origin = 0x1800, length = 0x0080
        //FLASH                   : origin = 0x4400, length = 0xBB80
    
        FLASH                   : origin = 0x4400, length = 0x99FE
        FLASH2                  : origin = 0x10000,length = 0x4400
    
       	APP_PROXY_VECTORS       : origin = 0xDDFE, length = 0x17E
    
        /*INT00                   : origin = 0xFF80, length = 0x0002
        INT01                   : origin = 0xFF82, length = 0x0002
        INT02                   : origin = 0xFF84, length = 0x0002
        INT03                   : origin = 0xFF86, length = 0x0002
        INT04                   : origin = 0xFF88, length = 0x0002
        INT05                   : origin = 0xFF8A, length = 0x0002
        INT06                   : origin = 0xFF8C, length = 0x0002
        INT07                   : origin = 0xFF8E, length = 0x0002
        INT08                   : origin = 0xFF90, length = 0x0002
        INT09                   : origin = 0xFF92, length = 0x0002
        INT10                   : origin = 0xFF94, length = 0x0002
        INT11                   : origin = 0xFF96, length = 0x0002
        INT12                   : origin = 0xFF98, length = 0x0002
        INT13                   : origin = 0xFF9A, length = 0x0002
        INT14                   : origin = 0xFF9C, length = 0x0002
        INT15                   : origin = 0xFF9E, length = 0x0002
        INT16                   : origin = 0xFFA0, length = 0x0002
        INT17                   : origin = 0xFFA2, length = 0x0002
        INT18                   : origin = 0xFFA4, length = 0x0002
        INT19                   : origin = 0xFFA6, length = 0x0002
        INT20                   : origin = 0xFFA8, length = 0x0002
        INT21                   : origin = 0xFFAA, length = 0x0002
        INT22                   : origin = 0xFFAC, length = 0x0002
        INT23                   : origin = 0xFFAE, length = 0x0002
        INT24                   : origin = 0xFFB0, length = 0x0002
        INT25                   : origin = 0xFFB2, length = 0x0002
        INT26                   : origin = 0xFFB4, length = 0x0002
        INT27                   : origin = 0xFFB6, length = 0x0002
        INT28                   : origin = 0xFFB8, length = 0x0002
        INT29                   : origin = 0xFFBA, length = 0x0002
        INT30                   : origin = 0xFFBC, length = 0x0002
        INT31                   : origin = 0xFFBE, length = 0x0002
        INT32                   : origin = 0xFFC0, length = 0x0002
        INT33                   : origin = 0xFFC2, length = 0x0002
        INT34                   : origin = 0xFFC4, length = 0x0002
        INT35                   : origin = 0xFFC6, length = 0x0002
        INT36                   : origin = 0xFFC8, length = 0x0002
        INT37                   : origin = 0xFFCA, length = 0x0002
        INT38                   : origin = 0xFFCC, length = 0x0002
        INT39                   : origin = 0xFFCE, length = 0x0002
        INT40                   : origin = 0xFFD0, length = 0x0002
        INT41                   : origin = 0xFFD2, length = 0x0002
        INT42                   : origin = 0xFFD4, length = 0x0002
        INT43                   : origin = 0xFFD6, length = 0x0002
        INT44                   : origin = 0xFFD8, length = 0x0002
        INT45                   : origin = 0xFFDA, length = 0x0002
        INT46                   : origin = 0xFFDC, length = 0x0002
        INT47                   : origin = 0xFFDE, length = 0x0002
        INT48                   : origin = 0xFFE0, length = 0x0002
        INT49                   : origin = 0xFFE2, length = 0x0002
        INT50                   : origin = 0xFFE4, length = 0x0002
        INT51                   : origin = 0xFFE6, length = 0x0002
        INT52                   : origin = 0xFFE8, length = 0x0002
        INT53                   : origin = 0xFFEA, length = 0x0002
        INT54                   : origin = 0xFFEC, length = 0x0002
        INT55                   : origin = 0xFFEE, length = 0x0002
        INT56                   : origin = 0xFFF0, length = 0x0002
        INT57                   : origin = 0xFFF2, length = 0x0002
        INT58                   : origin = 0xFFF4, length = 0x0002
        INT59                   : origin = 0xFFF6, length = 0x0002
        INT60                   : origin = 0xFFF8, length = 0x0002
        INT61                   : origin = 0xFFFA, length = 0x0002
        INT62                   : origin = 0xFFFC, length = 0x0002*/
        RESET                   : origin = 0xDF7C, length = 0x0004
    }
    
    /****************************************************************************/
    /* Specify the sections allocation into memory                              */
    /****************************************************************************/
    
    SECTIONS
    {
        .bss        : {} > RAM                  /* Global & static vars              */
        .data       : {} > RAM                  /* Global & static vars              */
        .TI.noinit  : {} > RAM                  /* For #pragma noinit                */
        .sysmem     : {} > RAM                  /* Dynamic memory allocation area    */
        .stack      : {} > RAM (HIGH)           /* Software system stack             */
    
    #ifndef __LARGE_DATA_MODEL__
        .text       : {}>> FLASH                /* Code                              */
    #else
        .text       : {}>> FLASH2 | FLASH       /* Code                              */
    #endif
        .text:_isr  : {} > FLASH                /* ISR Code space                    */
        .cinit      : {} > FLASH                /* Initialization tables             */
    #ifndef __LARGE_DATA_MODEL__
        .const      : {} > FLASH                /* Constant data                     */
    #else
        .const      : {} > FLASH | FLASH2       /* Constant data                     */
    #endif
        .cio        : {} > RAM                  /* C I/O Buffer                      */
    
        .pinit      : {} > FLASH                /* C++ Constructor tables            */
        .init_array : {} > FLASH                /* C++ Constructor tables            */
        .mspabi.exidx : {} > FLASH              /* C++ Constructor tables            */
        .mspabi.extab : {} > FLASH              /* C++ Constructor tables            */
    
        .infoA     : {} > INFOA              /* MSP430 INFO FLASH Memory segments */
        .infoB     : {} > INFOB
        .infoC     : {} > INFOC
        .infoD     : {} > INFOD
    
    	.APP_PROXY_VECTORS : {} > APP_PROXY_VECTORS /* INTERRUPT PROXY TABLE            */
        /* MSP430 Interrupt vectors
        .int00       : {}               > INT00
        .int01       : {}               > INT01
        .int02       : {}               > INT02
        .int03       : {}               > INT03
        .int04       : {}               > INT04
        .int05       : {}               > INT05
        .int06       : {}               > INT06
        .int07       : {}               > INT07
        .int08       : {}               > INT08
        .int09       : {}               > INT09
        .int10       : {}               > INT10
        .int11       : {}               > INT11
        .int12       : {}               > INT12
        .int13       : {}               > INT13
        .int14       : {}               > INT14
        .int15       : {}               > INT15
        .int16       : {}               > INT16
        .int17       : {}               > INT17
        .int18       : {}               > INT18
        .int19       : {}               > INT19
        .int20       : {}               > INT20
        .int21       : {}               > INT21
        .int22       : {}               > INT22
        .int23       : {}               > INT23
        .int24       : {}               > INT24
        .int25       : {}               > INT25
        .int26       : {}               > INT26
        .int27       : {}               > INT27
        .int28       : {}               > INT28
        .int29       : {}               > INT29
        .int30       : {}               > INT30
        .int31       : {}               > INT31
        .int32       : {}               > INT32
        .int33       : {}               > INT33
        .int34       : {}               > INT34
        .int35       : {}               > INT35
        .int36       : {}               > INT36
        .int37       : {}               > INT37
        .int38       : {}               > INT38
        .int39       : {}               > INT39
        .int40       : {}               > INT40
        RTC          : { * ( .int41 ) } > INT41 type = VECT_INIT
        PORT2        : { * ( .int42 ) } > INT42 type = VECT_INIT
        TIMER2_A1    : { * ( .int43 ) } > INT43 type = VECT_INIT
        TIMER2_A0    : { * ( .int44 ) } > INT44 type = VECT_INIT
        USCI_B1      : { * ( .int45 ) } > INT45 type = VECT_INIT
        USCI_A1      : { * ( .int46 ) } > INT46 type = VECT_INIT
        PORT1        : { * ( .int47 ) } > INT47 type = VECT_INIT
        TIMER1_A1    : { * ( .int48 ) } > INT48 type = VECT_INIT
        TIMER1_A0    : { * ( .int49 ) } > INT49 type = VECT_INIT
        DMA          : { * ( .int50 ) } > INT50 type = VECT_INIT
        .int51       : {}               > INT51
        TIMER0_A1    : { * ( .int52 ) } > INT52 type = VECT_INIT
        TIMER0_A0    : { * ( .int53 ) } > INT53 type = VECT_INIT
        ADC10        : { * ( .int54 ) } > INT54 type = VECT_INIT
        USCI_B0      : { * ( .int55 ) } > INT55 type = VECT_INIT
        USCI_A0      : { * ( .int56 ) } > INT56 type = VECT_INIT
        WDT          : { * ( .int57 ) } > INT57 type = VECT_INIT
        TIMER0_B1    : { * ( .int58 ) } > INT58 type = VECT_INIT
        TIMER0_B0    : { * ( .int59 ) } > INT59 type = VECT_INIT
        COMP_B       : { * ( .int60 ) } > INT60 type = VECT_INIT
        UNMI         : { * ( .int61 ) } > INT61 type = VECT_INIT
        SYSNMI       : { * ( .int62 ) } > INT62 type = VECT_INIT*/
        .reset       : {}               > RESET  /* MSP430 Reset vector         */
    }
    
    /****************************************************************************/
    /* Include peripherals memory map                                           */
    /****************************************************************************/
    
    -l msp430f5247.cmd
    
    

  • Hi,

    We merged all of your threads since they seemed to all be the same question. First off, I wanted to know if you were aware of MSPBoot:
    www.ti.com/.../slaa600
    software-dl.ti.com/.../index_FDS.html
    It is a main memory bootloader example that we provide? Using it as a framework may help you with your development - it is a little bit hard to say what your issue is if you are using something you've totally created on your own so if you use this as an example/framework it may be easier to help you. You could also try providing some detailed info about your program flow where you'd expect your device to jump to the main application and how you are testing your issue.
    Can you also try using Uniflash or another tool to read out the full memory of your part to make sure that both your bootloader and your main application code were both loaded correctly?

    Regards,
    Katie
  • Target_m.txtHi, Katie

    Thankyou for your response. Yes i have tried to read the memory contents of the MCU but the code for the test application wasn't there. I have flashed both codes using Uniflash.

    I have attached the .txt file of memory contents of the MCU

  • TI_MSP_BOOT source code for G series is available on the different sources. Do you please share the custom bootloader source code for the MSP430F5247(F series)

  • Hi Rachit,

    Your Target_m.txt file looks totally blank (all 0xFF) so I think you didn't actually load either of your programs. When you loaded your device using Uniflash, what type of file were you using - were you using the CCS .out files? Or ti-txt files (note that uniflash I don't think currently supports TI-txt files, only .out)? Can you show a screenshot of how you are loading the part?

    Regards,
    Katie
  • Hi, Katie 

    Now I am able to jump on the defined address as i am giving now ((void (*)()) _App_Reset_Vector)();, which i have mapped in the linker file of the application.

    But now my actual application in building a test file as it saying -

    USCI_A0_ISR
    USCI_A1_ISR
    TIMER0_A0_ISR

    Errors in Source - Assembler Aborted

    >> Compilation failure
    gmake: *** [TI_MSPBoot_Mgr_Vectors.obj] Error 1
    gmake: Target `all' not remade because of errors.

    Build Finished

    Also if i open the declaration of the inline branch instruction of these ISR it is going there.

    Why it is still saying it is undefined.

    __asm (" .sect .APP_PROXY_VECTORS");
    __asm (" .retain .APP_PROXY_VECTORS");
    __asm (" .global ProxyVectorTable");
    __asm ("ProxyVectorTable:");
    __asm (" BRA #Dummy_Isr;"); /* APP_PROXY_VECTOR(0) USCI B2 Receive/Transmit */
    __asm (" BRA #Dummy_Isr;"); /* APP_PROXY_VECTOR(1) USCI A2 Receive/Transmit */
    __asm (" BRA #Dummy_Isr;"); /* APP_PROXY_VECTOR(2) Port 4 */
    __asm (" BRA #Dummy_Isr;"); /* APP_PROXY_VECTOR(3) Port 3 */
    __asm (" BRA #Dummy_Isr;"); /* APP_PROXY_VECTOR(4) Timer2_A5 CC1-4, TA */
    __asm (" BRA #USCI_A1_ISR;"); /* APP_PROXY_VECTOR(5) Usci_A1
    __asm (" BRA #Dummy_Isr;"); /* APP_PROXY_VECTOR(6) DAC12 */
    __asm (" BRA #Dummy_Isr;"); /* APP_PROXY_VECTOR(7) RTC */
    __asm (" BRA #Dummy_Isr;"); /* APP_PROXY_VECTOR(8) Port 2 */
    __asm (" BRA #Dummy_Isr;"); /* APP_PROXY_VECTOR(9) USCI B1 Receive/Transmit */
    __asm (" BRA #Dummy_Isr;"); /* APP_PROXY_VECTOR(10) USCI A1 Receive/Transmit */
    __asm (" BRA #Dummy_Isr;"); /* APP_PROXY_VECTOR(11) Port 1 */
    __asm (" BRA #TIMER0_A0_ISR;"); /* APP_PROXY_VECTOR(12) Timer0_A0 */
    __asm (" BRA #Dummy_Isr;"); /* APP_PROXY_VECTOR(13) USCI A0 Receive/Transmit */
    __asm (" BRA #Dummy_Isr;"); /* APP_PROXY_VECTOR(14) DMA */
    __asm (" BRA #USCI_A0_ISR;"); /* APP_PROXY_VECTOR(15)  UartA0 event */
    __asm (" BRA #Dummy_Isr;"); /* APP_PROXY_VECTOR(16) Timer0_A5 CC1-4, TA */
    __asm (" BRA #Dummy_Isr;"); /* APP_PROXY_VECTOR(17) Timer0_A5 CC0 */
    __asm (" BRA #Dummy_Isr;"); /* APP_PROXY_VECTOR(18) ADC */
    __asm (" BRA #Dummy_Isr;"); /* APP_PROXY_VECTOR(19) USCI B0 Receive/Transmit */
    __asm (" BRA #Dummy_Isr;"); /* APP_PROXY_VECTOR(20) USCI A0 Receive/Transmit */
    __asm (" BRA #Dummy_Isr;"); /* APP_PROXY_VECTOR(21) Watchdog Timer */

    I have found these instructions on the internet and i have updated them as per my MCU MSP430F5247.

    They are defined in my code where i have blocked their Pragma_vectors as to decline their multiple declaration.

    Please help me out.

    Thank you...

  • Hello Katie,

    I duly need help on this.

    Hoping for the precious help.

    Thankyou

  • Now i am able to jump on the test application with-
    #pragma DATA_SECTION(ProxyVectorTable, ".APP_PROXY_VECTORS")
    #pragma RETAIN(ProxyVectorTable)
    const uint16_t ProxyVectorTable[] =
    {
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(0) RTC_A
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(1) Port2
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(2) Timer2_A1
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(3) Timer2_A0
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(4) USCI_B1
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(5) USCI_A1
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(6) Port1
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(7) Timer1_A1
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(8) Timer1_A0
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(9) DMA
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(10) USB_UBM
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(11) Timer0_A1
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(12) Timer0_A0
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(13) ADC10_A
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(14) USCI_B0
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(15) USCI_A0
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(16) Watchdog Timer_A
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(17) Timer0_B1
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(18) Timer0_B0
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(19) Comp_B
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(20) User NMI
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(21) System NMI
    };


    But no i am modifying the ISR for my main application but my main application is not running.

    #pragma DATA_SECTION(ProxyVectorTable, ".APP_PROXY_VECTORS")
    #pragma RETAIN(ProxyVectorTable)
    const uint16_t ProxyVectorTable[] =
    {
    //0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(0) RTC_A
    0x4030, (uint16_t) port2_ISR, // APP_PROXY_VECTOR(1) Port2
    //0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(2) Timer2_A1
    //0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(3) Timer2_A0
    //0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(4) USCI_B1
    0x4030, (uint16_t) USCI_A1_ISR, // APP_PROXY_VECTOR(5) USCI_A1
    0x4030, (uint16_t) port1_ISR, // APP_PROXY_VECTOR(6) Port1
    //0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(7) Timer1_A1
    //0x4030, (uint16_t) TIMER1_A0_ISR, // APP_PROXY_VECTOR(8) Timer1_A0
    //0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(9) DMA
    //0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(10) USB_UBM
    //0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(11) Timer0_A1
    0x4030, (uint16_t) TIMER0_A0_ISR, // APP_PROXY_VECTOR(12) Timer0_A0
    //0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(13) ADC10_A
    //0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(14) USCI_B0
    0x4030, (uint16_t) USCI_A0_ISR, // APP_PROXY_VECTOR(15) USCI_A0
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(16) Watchdog Timer_A
    //0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(17) Timer0_B1
    //0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(18) Timer0_B0
    //0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(19) Comp_B
    //0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(20) User NMI
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(21) System NMI
    };
  • Hi Rachit,

    Here's how I imagine the proxy interrupt vector table should look for the MSP430F5247:

    #pragma DATA_SECTION(ProxyVectorTable, ".APP_PROXY_VECTORS")
    #pragma RETAIN(ProxyVectorTable)
    const uint16_t ProxyVectorTable[] =
    {
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(0) RTC
    0x4030, (uint16_t) port2_ISR, // APP_PROXY_VECTOR(1) P2
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(2) TA2_1
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(3) TA2_0
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(4) USCI_B1
    0x4030, (uint16_t) USCI_A1_ISR, // APP_PROXY_VECTOR(5) USCI_A1
    0x4030, (uint16_t) port1_ISR, // APP_PROXY_VECTOR(6) P1
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(7) TA1_1
    0x4030, (uint16_t) TIMER1_A0_ISR, // APP_PROXY_VECTOR(8) TA1_0
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(9) DMA
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(10) TA0_1
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(11) TA0_0
    0x4030, (uint16_t) TIMER0_A0_ISR, // APP_PROXY_VECTOR(12) ADC10
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(13) USCI_B0
    0x4030, (uint16_t) USCI_A0_ISR, // APP_PROXY_VECTOR(14) USCI_A0
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(15) WDT
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(16) TB0_1
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(17) TB0_0
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(18) COMP_B
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(19) UNMI
    0x4030, (uint16_t) Dummy_Isr, // APP_PROXY_VECTOR(20) SYSNMI
    };

    And should each be defined in either the main.c or TI_MSPBoot_Mgr_CI.c files, please refer to the MSPBoot App2 code examples. The VecRed file inside of the MSPBoot project should then be:

    #pragma DATA_SECTION(Vector_Table, ".BOOT_VECTOR_TABLE")
    #pragma RETAIN(Vector_Table)
    const uint16_t Vector_Table[] =
    {

    APP_PROXY_VECTOR(0), // FFD2 = RTC
    APP_PROXY_VECTOR(1), // FFD4 = P2
    APP_PROXY_VECTOR(2), // FFD6 = TA2_1
    APP_PROXY_VECTOR(3), // FFD8 = TA2_0
    APP_PROXY_VECTOR(4), // FFDA = USCI_B1
    APP_PROXY_VECTOR(5), // FFDC = USCI_A1
    APP_PROXY_VECTOR(6), // FFDE = P1
    APP_PROXY_VECTOR(7), // FFE0 = TA1_1
    APP_PROXY_VECTOR(8), // FFE2 = TA1_0
    APP_PROXY_VECTOR(9), // FFE4 = DMA
    UNUSED, // FFE6 = unused
    APP_PROXY_VECTOR(10), // FFE8 = TA0_1
    APP_PROXY_VECTOR(11), // FFEA = TA0_0
    APP_PROXY_VECTOR(12), // FFEC = ADC10
    APP_PROXY_VECTOR(13), // FFEE = USCI_B0
    APP_PROXY_VECTOR(14), // FFF0 = USCI_A0
    APP_PROXY_VECTOR(15), // FFF2 = WDT
    APP_PROXY_VECTOR(16), // FFF4 = TB0_1
    APP_PROXY_VECTOR(17), // FFF6 = TB0_0
    APP_PROXY_VECTOR(18), // FFF8 = COMP_B
    APP_PROXY_VECTOR(19), // FFFA = UNMI
    APP_PROXY_VECTOR(20), // FFFC = SYSNMI
    };

    Disclaimer: This is all untested code and only reflects my opinion of correct vector initialization. If none of these suggestions work then please attach your CCS project so that we can attempt to debug the issue on our end.

    Regards,
    Ryan
  • 4478.code.rarHello Ryan Brown1 (3460875) ,

    Thankyou for your precious feedback. But i am still not able to jump on the app with these proxy vectors.

    I am attaching the bootloader code and application code.

    Please takae a review and kindly guide me where am i lacking.

  • i Have tried with/without blocking pragma but their is no change.
    Now what i am trying is after jumping i am trying to glow a led in timer0 isr but itn't happening.
    the jump is kind of successful but the isr isn't working.
  • Rachit,

    Please look at a MSP430G2553 Boot code example. INT_VECTOR_TABLE in the .cmd file starts at FFE0 and the Vector_Table inside of the VecRed file does the same, starting with UNUSED for FFE0 & FFE2 before starting APP_PROXY_VECTOR(0) for FFE4/P1.

    On the contrary, your boot code's INT_VECTOR_TABLE starts is initialized to FF80 yet the Vector_Table begins at 0xFFD2. Therefore, when the application interrupt vectors are copied to the boot memory all of the locations are incorrectly offset by 0x52 (0xFFD2 - 0xFF80, RTC to 0xFF80, P2 to 0xFF82, etc). Obviously the ISRs will not be correctly serviced in this state, the solution to this issue would be to re-initialize INT_VECTOR_TABLE for an origin of 0xFFD2 or to initialize several UNUSED spaces at the beginning of the VecRed Vector_Table. The application code should also need to be altered to reflect these changes.

    This is one error that I noticed upon review of your code but there may be more, we can further review after the above changes have been implemented.  Also be warned that the MSPBoot firmware is not equipped to handle 20-bit memory spaces (FLASH2/0x10000 and above) so you will need to keep your application code within the 0x9357 bytes allocated inside of FLASH.

    Regards,
    Ryan

  • Hello Ryan,

    Thanks for your valuable feedback but there are 2 parts of flash in msfp430f5247, so in future i'll be needing the flash2 which is defined as 0x10000-0x4400.
    Also it will be very helpful if u can alter the linker files as per these locations. I have tried quite a no. of things but doesn't know where am i lacking.
  • Also when i'll use several 'unused vectors' then is the number in the app_proxy_vector will change as
    APP_PROXY_VECTOR(41),
    .
    .
    .
    .APP_PROXY_VECTOR(62),
  • Use of the 20-bit space will require several changes to the source code. You will either need to develop this on your own or wait for a MSPBoot update that is planned for later this year.

    APP_PROXY_VECTOR should still start at 0 but you need to add 42 UNUSED spaces if you plan to retain INT_VECTOR_TABLE at 0xFF80.

    Regards,
    Ryan
  • Thanks a lot Ryan for your quick reply.
    So it possible is it still possible do it ?
  • Do provide your valuable opinions on this.
  • what will be the address for unused spaces, i saw in g255 it was 0x3fff, so i have taken 0x43ff as my flash starts from 0x4400...is it correct ?
  • MSPBoot is not correctly initialized to use the 0x10000 to 0x14400 20-bit space but it is possible to customize the project files for this purpose, other customers have done as such for their own purposes. 0x43ff is located in valid RAM space (Sector 3), preferably you would use an address not used by the MSP430 at all like somewhere from 0x1C00 to 0x23FF.

    Regards,
    Ryan
  • Thanks a lot Ryan by adding Unused spaces @ address 0x23ff. ISR are working totally fine...

  • As an update to a side-issue discussed in this thread: the latest version of Uniflash now supports TI-txt files. You can access it at http://dev.ti.com.

    Regards,
    Katie

**Attention** This is a public forum