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.

CCS/MSP430FR6047: OVER THE AIR PEOGRAMMING

Part Number: MSP430FR6047


Tool/software: Code Composer Studio

I am trying to use the project MSPBoot_fr5994_UART for dual image mode software upgrade,

I have modified project for MSP430FR6047 target,

I am getting following error when I tried to debug the code, 

MSP430: Trouble Writing Memory Block at 0x1c24 on Page 0 of Length 0x2: Could not erase device memory
MSP430: File Loader: Verification failed: Target failed to write 0x01C24
MSP430: GEL: File: D:\SBEM WORK FROM HOME\ti chipset for ufm\OTA\OTA_SOFTWARE\MSPBoot_FR5994_UART_DOMWM\BSLBased_DualImg\MSPBoot_FR5994_UART_DOMWM.out: Load failed.

 hoe to resolve this issue

  • You can refer to this document 

    https://www.ti.com/lit/an/slaa968/slaa968.pdf?ts=1607323485747&ref_url=https%253A%252F%252Fwww.google.com%252F 

    For this document is not support dual image mode, you must use dual image mode?

  • how to download "bootloader host" GUI?

  • how to download "bootloader host" GUI mentioned in SLA968

  • Hi Gajanan

    It should be mentioned in section 2.2. Which step you don't clear? I can give more details for you

  • section 2.2. step7:- 7. Use the GUI to download the FR2311_App_uart.txt firmware (see Section 3.1 for details)

    3 GUI Introduction The included GUI support these functions: 1. Download the firmware by UART BSL 2. Generate the linker file and header file for the boot and application projects 3. Convert TXT image to header file for host project 3.1 Download Firmware by UART BSL With PC,

    The GUI mentioned in section 3.1 Download Firmware by UART BSL With PC, the PC side utility, 

    please provide link to download the installation file of this utility

  • step3.2 Generate Linker File and Header File for Boot and Application Project

    unable to generate linker file and header file as GUI utility software not installed on my PC,

    Can you provide install file of the GUI?

  • Hi 

    The GUI is a exe file and don't need to be installed.

  • Please share link to download the exe file of GUI?

  • Hi 

    You can download the software here  

    and the exe file at MSP430FR_Bootloader_1_00\BSL_GUI_V1\gui.exe

  • unable to locate this file "MSP430FR_Bootloader_1_00\BSL_GUI_V1\gui.exe", please help

  • Sorry I will update it later.

  • The new software package is on line now. Thanks for inform us.

  • Dear Sir,

    i am using UltrasonicWaterFR604x_02_40_00_00(water demo) software for my water meter project,

    Also I am trying to use MSP430FRBoot_1_03_00_00 for over the air programming dual image mode

    I have modified the linker files of boot code as well as application code, 

    I also got success in writing .bin to file download memory and then jumping to application,

    but while running application when __bis_SR_register(lpmMode + GIE) when this statement is executed program counter jumps to invalid address and msp430fr6047 resets, reset source is watchdog timer,

    can you help, attached are linker files

    /******************************************************************************/
    /* LINKER COMMAND FILE FOR MSPBoot BOOTLOADER USING msp430fr6047  */
    /* File generated with MSPBootLinkerGen.py on 2020-12-05 */
    /*----------------------------------------------------------------------------*/
    
    
    /****************************************************************************/
    /* SPECIFY THE SYSTEM MEMORY MAP                                            */
    /****************************************************************************/
    /* The following definitions can be changed to customize the memory map for a different device
     *   or other adjustments
     *  Note that the changes should match the definitions used in MEMORY and SECTIONS
     *
     */
    /* RAM Memory Addresses */
    __RAM_Start = 0x1c00;                 /* RAM Start */
    __RAM_End = 0x2bff;                     /* RAM End */
        /* RAM shared between App and Bootloader, must be reserved */
        PassWd = 0x1c00;                 /* Password sent by App to force boot  mode */
        StatCtrl = 0x1c02;             /* Status and Control  byte used by Comm */
        CI_State_Machine = 0x1c03;         /*  State machine variable used by Comm */
        CI_Callback_ptr = 0x1c04;   /* Pointer to Comm callback structure */
        /* Unreserved RAM used for Bootloader or App purposes */
        _NonReserved_RAM_Start = 0x1c08; /* Non-reserved RAM */
    
    /* Flash memory addresses */
    /* App area     : 0x4000-0xefff & 0x10000-0x247ff*/
    /* Download area: 0x24800-0x43fff*/
    /* Boot area    : 0xf000-0xffff*/
    
    _Appl_Start = 0x4000;             /* Start of Application area */
    _Appl_End = 0xefff;                 /* End of Application area */
    _Flex_Start = 0x10000;             /* Start of flex space (app or download, project-dependent) */
    _Flex_End = 0x247ff;                 /* End of flex space (app or download, project-dependent) */
    _Down_Start = 0x24800;		/* Download Area */
    _Down_End = 0x43fff;        /*End of Download Area */
    
        /* Reserved Flash locations for Bootloader Area */
        __Boot_Start = 0xf000;         /* Boot flash */
        __Boot_Reset = 0xFFFE;                          /* Boot reset vector */
        __Boot_VectorTable = 0xFF90;      /* Boot vector table */
        __Boot_SharedCallbacks_Len = 0x10; /* Length of shared callbacks (2 calls =4B(msp430) or 8B(msp43 ) */
        __Boot_SharedCallbacks = 0xff70; /* Start of Shared callbacks */
        _Appl_Vector_Start = 0xef90; /* Interrupt table */
        /* Reserved Flash locations for Application Area */
    //    _Appl_Checksum = (_Appl_Start);                 /* CRC16 of Application */
    //    _Appl_Checksum_8 = (_Appl_Start+2);             /* CRC8 of Application */
    //    _Appl_Start_Memory = (_Appl_Start+3);                 /* Application Area */
    
        _Appl_Checksum =  (_Flex_End-2); //@SCP modified
    
        _Appl_Checksum_8 = (_Flex_End-4); //@SCP modified
    
        _Appl_Start_Memory = (_Appl_Start+ 0); //@SCP modified                /* Application Area */
        _Appl_CRC_Size1 = (_Appl_End - _Appl_Start_Memory +1);         /* Number of bytes in lower memory calculated for CRC */
        _Appl_CRC_Size2 = (_Flex_End - _Flex_Start + 1); /* Number of bytes in upper memory calculated for CRC */
    
    		_Appl_Reset_Vector = (__Boot_Start - 2);
    		_Down_Checksum = (_Down_Start);
    	    _Down_Checksum_8 = (_Down_Start+2);
    	    _Down_Start_Memory = (_Down_Start+3);
    	    _Down_CRC_Size1 = (_Down_End - _Down_Start_Memory + 1);
    	    _Down_CRC_Size2 = (_Down_End - _Down_Start_Memory + 1);
    	    _Down_Offset_Size = (__Boot_Start - 1);
    	    _Down_Offset1 = (_Down_Start - _Appl_Start);
    	    _Down_Offset2 = (__Boot_Start - _Appl_Start + _Down_Start - _Flex_Start);
    
        
        /* MEMORY definition, adjust based on definitions above */
    MEMORY
    {
        SFR                     : origin = 0x0000, length = 0x0010
        PERIPHERALS_8BIT        : origin = 0x0010, length = 0x00F0
        PERIPHERALS_16BIT       : origin = 0x0100, length = 0x0100
        JTAGSIGNATURE           : origin = 0xFF80, length = 0x0004, fill = 0xFFFF
        BSLSIGNATURE            : origin = 0xFF84, length = 0x0004, fill = 0xFFFF
        IPESIGNATURE            : origin = 0xFF88, length = 0x0008, fill = 0xFFFF
        // RAM from _NonReserved_RAM_Start - __RAM_End
        RAM                     : origin = 0x1c08, length = 0xff8
        // Flash from __Boot_Start -( __Boot_SharedCallbacks or INT_VECTOR_TABLE)
        FLASH                   : origin = 0xf000, length = 0xf70
        // Shared callbacks from __Boot_SharedCallbacks + Len (when used)
        BOOT_SHARED_CALLBACKS   : origin = 0xff70, length = 0x10
        // Boot vector Table from __Boot_VectorTable- __Boot_Reset
        INT_VECTOR_TABLE        : origin = 0xFF90, length = 110
        // Boot reset from __Boot_Reset-_Flash_End
        RESET                   : origin = 0xFFFE, length = 0x0002
    }
    
    /****************************************************************************/
    /* SPECIFY THE SECTIONS ALLOCATION INTO MEMORY                              */
    /****************************************************************************/
    
    SECTIONS
    {
        .bss        : {} > RAM                /* GLOBAL & STATIC VARS              */
        .data       : {} > RAM                /* GLOBAL & STATIC VARS              */
        .sysmem     : {} > RAM                /* DYNAMIC MEMORY ALLOCATION AREA    */
        .stack      : {} > RAM (HIGH)         /* SOFTWARE SYSTEM STACK             */
    
        .text       : {} >> FLASH       /* CODE                 */
        .cinit      : {} > FLASH       /* INITIALIZATION TABLES*/
        .const      : {} >> FLASH       /* CONSTANT DATA        */
        .cio        : {} > RAM          /* C I/O BUFFER                      */
    	.jtagsignature      : {} > JTAGSIGNATURE
        .bslsignature       : {} > BSLSIGNATURE
        GROUP(SIGNATURE_SHAREDMEMORY)
        {
            .ipesignature       : {}            /* IPE Signature                     */
            .jtagpassword       : {}            /* JTAG Password                     */
        } > IPESIGNATURE
    
        .BOOT_APP_VECTORS : {} > BOOT_SHARED_CALLBACKS
        /* MSP430 INTERRUPT VECTORS          */
        .BOOT_VECTOR_TABLE : {} > INT_VECTOR_TABLE
        .reset       : {}               > RESET  /* MSP430 RESET VECTOR         */ 
    }
    
    /****************************************************************************/
    /* INCLUDE PERIPHERALS MEMORY MAP                                           */
    /****************************************************************************/
    
    -l msp430fr6047.cmd
    
    
    /******************************************************************************
    *
    * Copyright (C) 2012 - 2020 Texas Instruments Incorporated - http://www.ti.com/
    *
    * 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.
    *
    * Default linker command file for Texas Instruments MSP430FR6047
    *
    *****************************************************************************/
    
    /******************************************************************************/
    /*                                                                            */
    /*   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            */
    /*                                                                            */
    /*----------------------------------------------------------------------------*/
    /* 1.209 */
    /*----------------------------------------------------------------------------*/
    -stack 0x0400
    
    //#define __USS_RUN_ALG_FROM_RAM__
    
    /****************************************************************************/
    /* SPECIFY THE SYSTEM MEMORY MAP                                            */
    /****************************************************************************/
    /* The following definitions can be changed to customize the memory map for a different device
     *   or other adjustments
     *  Note that the changes should match the definitions used in MEMORY and SECTIONS
     *
     */
    /* RAM Memory Addresses */
    __RAM_Start = 0x1c00;                 /* RAM Start */
    __RAM_End = 0x2bff;                     /* RAM End */
        /* RAM shared between App and Bootloader, must be reserved */
        PassWd = 0x1c00;                 /* Password sent by App to force boot  mode */
        StatCtrl = 0x1c02;             /* Status and Control  byte used by Comm */
        CI_State_Machine = 0x1c03;         /*  State machine variable used by Comm */
        CI_Callback_ptr = 0x1c04;   /* Pointer to Comm callback structure */
        /* Unreserved RAM used for Bootloader or App purposes */
        _NonReserved_RAM_Start = 0x1c08; /* Non-reserved RAM */
    
    /* Flash memory addresses */
    /* App area     : 0x4000-0xefff & 0x10000-0x247ff*/
    /* Download area: 0x24800-0x43fff*/
    /* Boot area    : 0xf000-0xffff*/
    
    __FRAM_Start = 0x4000;             /* Start of Application area */
       /* Reserved Flash locations for Bootloader Area */
        __Boot_Start = 0xf000;         /* Boot flash */
        __Boot_Reset = 0xFFFE;                          /* Boot reset vector */
        __Boot_VectorTable = 0xFF90;      /* Boot vector table */
        __Boot_SharedCallbacks_Len = 0x10; /* Length of shared callbacks (2 calls =4B(msp430) or 8B(msp430x) */
        __Boot_SharedCallbacks = 0xff70; /* Start of Shared callbacks */
         _BOOT_APPVECTOR = __Boot_SharedCallbacks;       /* Definition for application table             */
        _Appl_Vector_Start = 0xef90; /* Interrupt table */
        /* Reserved Flash locations for Application Area */
    
    /* MEMORY definition, adjust based on definitions above */ 
    MEMORY
    {
        TINYRAM                 : origin = 0xA, length = 0x16
        BSL                     : origin = 0x1000, length = 0x800
        CAL_CONF                : origin = 0x1900, length = 0x100
        TLVMEM                  : origin = 0x1A00, length = 0x100
        BOOTROM                 : origin = 0x1B00, length = 0x100
    
        // RAM from _NonReserved_RAM_Start - __RAM_End
    	RAM                     : origin = 0x1c08, length = 0xff8
        // Flash from _App_Start -> (APP_VECTORS-1)
    	FRAM                    : origin = 0x4000, length = 0xaf7f /*0xaF8d*/ //0xBF80
        FRAM2                   : origin = 0x10000,length = 0x14800-4 //0x33FE0
    
    //    JTAGSIGNATURE           : origin = 0xef70 /*0xFF80*/, length = 0x0004, fill = 0xFFFF
    //    BSLSIGNATURE            : origin = 0xef74 /*0xFF84*/, length = 0x0004, fill = 0xFFFF
    //    IPESIGNATURE            : origin = 0xef78 /*0xFF88*/, length = 0x0008, fill = 0xFFFF
        VERSION                 : origin = 0xef80  /*0x43FF0*/,length = 0x0008
        LIB_VERSION             : origin = 0xef88 /*0x43FF8*/,length = 0x0008
    
        // Interrupt table from  _App_Vector_Start->(RESET-1)
    	INT00            : origin = 0xef90, length = 0x0002
        INT01            : origin = 0xef92, length = 0x0002
        INT02            : origin = 0xef94, length = 0x0002
        INT03            : origin = 0xef96, length = 0x0002
        INT04            : origin = 0xef98, length = 0x0002
        INT05            : origin = 0xef9a, length = 0x0002
        INT06            : origin = 0xef9c, length = 0x0002
        INT07            : origin = 0xef9e, length = 0x0002
        INT08            : origin = 0xefa0, length = 0x0002
        INT09            : origin = 0xefa2, length = 0x0002
        INT10            : origin = 0xefa4, length = 0x0002
        INT11            : origin = 0xefa6, length = 0x0002
        INT12            : origin = 0xefa8, length = 0x0002
        INT13            : origin = 0xefaa, length = 0x0002
        INT14            : origin = 0xefac, length = 0x0002
        INT15            : origin = 0xefae, length = 0x0002
        INT16            : origin = 0xefb0, length = 0x0002
        INT17            : origin = 0xefb2, length = 0x0002
        INT18            : origin = 0xefb4, length = 0x0002
        INT19            : origin = 0xefb6, length = 0x0002
        INT20            : origin = 0xefb8, length = 0x0002
        INT21            : origin = 0xefba, length = 0x0002
        INT22            : origin = 0xefbc, length = 0x0002
        INT23            : origin = 0xefbe, length = 0x0002
        INT24            : origin = 0xefc0, length = 0x0002
        INT25            : origin = 0xefc2, length = 0x0002
        INT26            : origin = 0xefc4, length = 0x0002
        INT27            : origin = 0xefc6, length = 0x0002
        INT28            : origin = 0xefc8, length = 0x0002
        INT29            : origin = 0xefca, length = 0x0002
        INT30            : origin = 0xefcc, length = 0x0002
        INT31            : origin = 0xefce, length = 0x0002
        INT32            : origin = 0xefd0, length = 0x0002
        INT33            : origin = 0xefd2, length = 0x0002
        INT34            : origin = 0xefd4, length = 0x0002
        INT35            : origin = 0xefd6, length = 0x0002
        INT36            : origin = 0xefd8, length = 0x0002
        INT37            : origin = 0xefda, length = 0x0002
        INT38            : origin = 0xefdc, length = 0x0002
        INT39            : origin = 0xefde, length = 0x0002
        INT40            : origin = 0xefe0, length = 0x0002
        INT41            : origin = 0xefe2, length = 0x0002
        INT42            : origin = 0xefe4, length = 0x0002
        INT43            : origin = 0xefe6, length = 0x0002
        INT44            : origin = 0xefe8, length = 0x0002
        INT45            : origin = 0xefea, length = 0x0002
        INT46            : origin = 0xefec, length = 0x0002
        INT47            : origin = 0xefee, length = 0x0002
        INT48            : origin = 0xeff0, length = 0x0002
        INT49            : origin = 0xeff2, length = 0x0002
        INT50            : origin = 0xeff4, length = 0x0002
        INT51            : origin = 0xeff6, length = 0x0002
        INT52            : origin = 0xeff8, length = 0x0002
        INT53            : origin = 0xeffa, length = 0x0002
        INT54            : origin = 0xeffc, length = 0x0002
    
     	// App reset from _App_Reset_Vector    
    	RESET                   : origin = 0xeffe, length = 0x0002
    }
    
    /****************************************************************************/
    /* Specify the LEA memory map                                               */
    /****************************************************************************/
    
    #define LEASTACK_SIZE   0x138
    
    MEMORY
    {
        LEARAM                  : origin = 0x2C00, length = 0x1000 - LEASTACK_SIZE
        LEASTACK                : origin = 0x3C00 - LEASTACK_SIZE, length = LEASTACK_SIZE
    }
    
    /****************************************************************************/
    /* SPECIFY THE SECTIONS ALLOCATION INTO MEMORY                              */
    /****************************************************************************/
    
    SECTIONS
    {
        GROUP(RW_IPE)
        {
    
            GROUP(READ_WRITE_MEMORY)
            {
            	// Place USS configuration at top of memory
    			uss_config :
    			{
    				//USS_userConfig.obj(.TI.persistent:checksum16bit)
    				//USS_userConfig.obj(.TI.persistent:checksum8bit)
    //				USS_userConfig.obj(.TI.persistent:app_code_crc_ccitt)
    				USS_userConfig.obj(.TI.persistent:gUssSWConfig)
    				USS_userConfig.obj(.TI.persistent:ussSystemConfig)
    				USS_userConfig.obj(.TI.persistent:ussMeterConfig)
    				USS_userConfig.obj(.TI.persistent:ussMeasurementConfig)
    				USS_userConfig.obj(.TI.persistent:ussPLLConfig)
    				USS_userConfig.obj(.TI.persistent:ussCaptureConfig)
    				USS_userConfig.obj(.TI.persistent:ussTriggerConfig)
    				USS_userConfig.obj(.TI.persistent:ussInterruptConfig)
    				USS_userConfig.obj(.TI.persistent:ussAlgConfig)
    				USS_userConfig.obj(.TI.persistent:ussPulseConfig)
    				USS_userConfig.obj(.TI.persistent:singDualToneConfig)
    				USS_userConfig.obj(.TI.persistent:gUserConfg)
    				USS_userConfig.obj(.TI.persistent:gdataloggpara)
    				USS_userConfig.obj(.TI.persistent:comm_para)
    			}
                .TI.persistent : {}              /* For #pragma persistent            */
                .cio           : {}              /* C I/O Buffer                      */
                .sysmem        : {}              /* Dynamic memory allocation area    */
            } PALIGN(0x0400), RUN_START(fram_rw_start)
    
            GROUP(IPENCAPSULATED_MEMORY)
            {
    
                .ipestruct     : {}              /* IPE Data structure             */
                .ipe           : {}              /* IPE                            */
                .ipe_const     : {}              /* IPE Protected constants        */
                .ipe:_isr      : {}              /* IPE ISRs                       */
            } PALIGN(0x0400), RUN_START(fram_ipe_start) RUN_END(fram_ipe_end) RUN_END(fram_rx_start)
    
        } > 0x4000
    
        .version          : {}  > VERSION
        .libVersion       : {}  > LIB_VERSION
    
        .cinit            : {}  > FRAM          /* Initialization tables             */
        .binit            : {}  > FRAM          /* Boot-time Initialization tables   */
        .pinit            : {}  > FRAM          /* C++ Constructor tables            */
        .init_array       : {}  > FRAM          /* C++ Constructor tables            */
        .mspabi.exidx     : {}  > FRAM          /* C++ Constructor tables            */
        .mspabi.extab     : {}  > FRAM          /* C++ Constructor tables            */
        .text:_isr        : {}  > FRAM          /* Code ISRs                         */
    #ifndef __USS_RUN_ALG_FROM_RAM__
    	.USS_ramfunc      : {}  > FRAM
    #endif
    
    #ifndef __LARGE_DATA_MODEL__
        .const            : {} > FRAM           /* Constant data                     */
    #else
        .const            : {} >> FRAM | FRAM2  /* Constant data                     */
    #endif
    
    #ifndef __LARGE_CODE_MODEL__
        .text             : {} > FRAM           /* Code                              */
    #else
        .text             : {} >> FRAM2 | FRAM  /* Code                              */
    #endif
    
        #ifdef __TI_COMPILER_VERSION__
            #if __TI_COMPILER_VERSION__ >= 15009000
                #ifndef __LARGE_CODE_MODEL__
                    .TI.ramfunc : {} load=FRAM, run=RAM, table(BINIT)
                #else
                    .TI.ramfunc : {} load=FRAM | FRAM2, run=RAM, table(BINIT)
                #endif
            #endif
        #endif
    
    	#ifdef __USS_RUN_ALG_FROM_RAM__
    	    #ifdef __TI_COMPILER_VERSION__
    	        #if __TI_COMPILER_VERSION__ >= 15009000
    				#ifndef __LARGE_DATA_MODEL__
    	                .USS_ramfunc : {} load=FRAM, run=RAM, table(BINIT)
    				#else
    	                .USS_ramfunc : {} load=FRAM | FRAM2, run=RAM, table(BINIT)
    	        	#endif
    		#endif
    	#endif
    #endif
    
    //    .jtagsignature      : {} > JTAGSIGNATURE
    //    .bslsignature       : {} > BSLSIGNATURE
    
    //    GROUP(SIGNATURE_SHAREDMEMORY)
    //    {
    //        .ipesignature       : {}            /* IPE Signature                     */
    //        .jtagpassword       : {}            /* JTAG Password                     */
    //    } > IPESIGNATURE
    
        #ifdef __USS_RUN_ALG_FROM_RAM__
            .bss        : {} > RAM | FRAM                 /* Global & static vars              */
            .data       : {} > RAM | FRAM                 /* Global & static vars              */
            .TI.noinit  : {} > RAM | FRAM                 /* For #pragma noinit                */
        #else
            .bss        : {} > RAM                 /* Global & static vars              */
            .data       : {} > RAM                 /* Global & static vars              */
            .TI.noinit  : {} > RAM                 /* For #pragma noinit                */
        #endif
        .stack      : {} > RAM (HIGH)           /* Software system stack             */
    
        .tinyram    : {} > TINYRAM              /* Tiny RAM                          */
    
        .leaRAM      : {} > LEARAM               /* LEA RAM                           */
        .leaStack    : {} > LEASTACK (HIGH)      /* LEA STACK                         */
    
        /* 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
        SDHS         : { * ( .int14 ) } > INT14 type = VECT_INIT
        SAPH         : { * ( .int15 ) } > INT15 type = VECT_INIT
        HSPLL        : { * ( .int16 ) } > INT16 type = VECT_INIT
        UUPS         : { * ( .int17 ) } > INT17 type = VECT_INIT
        LEA          : { * ( .int18 ) } > INT18 type = VECT_INIT
        PORT9        : { * ( .int19 ) } > INT19 type = VECT_INIT
        PORT8        : { * ( .int20 ) } > INT20 type = VECT_INIT
        PORT7        : { * ( .int21 ) } > INT21 type = VECT_INIT
        EUSCI_B1     : { * ( .int22 ) } > INT22 type = VECT_INIT
        EUSCI_A3     : { * ( .int23 ) } > INT23 type = VECT_INIT
        EUSCI_A2     : { * ( .int24 ) } > INT24 type = VECT_INIT
        PORT6        : { * ( .int25 ) } > INT25 type = VECT_INIT
        PORT5        : { * ( .int26 ) } > INT26 type = VECT_INIT
        TIMER4_A1    : { * ( .int27 ) } > INT27 type = VECT_INIT
        TIMER4_A0    : { * ( .int28 ) } > INT28 type = VECT_INIT
        AES256       : { * ( .int29 ) } > INT29 type = VECT_INIT
        RTC_C        : { * ( .int30 ) } > INT30 type = VECT_INIT
        LCD_C        : { * ( .int31 ) } > INT31 type = VECT_INIT
        PORT4        : { * ( .int32 ) } > INT32 type = VECT_INIT
        PORT3        : { * ( .int33 ) } > INT33 type = VECT_INIT
        TIMER3_A1    : { * ( .int34 ) } > INT34 type = VECT_INIT
        TIMER3_A0    : { * ( .int35 ) } > INT35 type = VECT_INIT
        PORT2        : { * ( .int36 ) } > INT36 type = VECT_INIT
        TIMER2_A1    : { * ( .int37 ) } > INT37 type = VECT_INIT
        TIMER2_A0    : { * ( .int38 ) } > INT38 type = VECT_INIT
        PORT1        : { * ( .int39 ) } > INT39 type = VECT_INIT
        TIMER1_A1    : { * ( .int40 ) } > INT40 type = VECT_INIT
        TIMER1_A0    : { * ( .int41 ) } > INT41 type = VECT_INIT
        DMA          : { * ( .int42 ) } > INT42 type = VECT_INIT
        EUSCI_A1     : { * ( .int43 ) } > INT43 type = VECT_INIT
        TIMER0_A1    : { * ( .int44 ) } > INT44 type = VECT_INIT
        TIMER0_A0    : { * ( .int45 ) } > INT45 type = VECT_INIT
        ADC12_B      : { * ( .int46 ) } > INT46 type = VECT_INIT
        EUSCI_B0     : { * ( .int47 ) } > INT47 type = VECT_INIT
        EUSCI_A0     : { * ( .int48 ) } > INT48 type = VECT_INIT
        WDT          : { * ( .int49 ) } > INT49 type = VECT_INIT
        TIMER0_B1    : { * ( .int50 ) } > INT50 type = VECT_INIT
        TIMER0_B0    : { * ( .int51 ) } > INT51 type = VECT_INIT
        COMP_E       : { * ( .int52 ) } > INT52 type = VECT_INIT
        UNMI         : { * ( .int53 ) } > INT53 type = VECT_INIT
        SYSNMI       : { * ( .int54 ) } > INT54 type = VECT_INIT
        .reset       : {}               > RESET  /* MSP430 reset vector         */
    
    }
    /****************************************************************************/
    /* MPU/IPE SPECIFIC MEMORY SEGMENT DEFINITONS                               */
    /****************************************************************************/
    
    #ifdef _IPE_ENABLE
        #define IPE_MPUIPLOCK 0x0080
        #define IPE_MPUIPENA 0x0040
        #define IPE_MPUIPPUC 0x0020
    
        // Evaluate settings for the control setting of IP Encapsulation
        #if defined(_IPE_ASSERTPUC1)
            #if defined(_IPE_LOCK ) && (_IPE_ASSERTPUC1 == 0x08))
                fram_ipe_enable_value = (IPE_MPUIPENA | IPE_MPUIPPUC |IPE_MPUIPLOCK);
            #elif defined(_IPE_LOCK )
                fram_ipe_enable_value = (IPE_MPUIPENA | IPE_MPUIPLOCK);
            #elif (_IPE_ASSERTPUC1 == 0x08)
                fram_ipe_enable_value = (IPE_MPUIPENA | IPE_MPUIPPUC);
            #else
                fram_ipe_enable_value = (IPE_MPUIPENA);
            #endif
        #else
            #if defined(_IPE_LOCK )
                fram_ipe_enable_value = (IPE_MPUIPENA | IPE_MPUIPLOCK);
            #else
                fram_ipe_enable_value = (IPE_MPUIPENA);
            #endif
        #endif
    
        // Segment definitions
        #ifdef _IPE_MANUAL                  // For custom sizes selected in the GUI
            fram_ipe_border1 = (_IPE_SEGB1>>4);
            fram_ipe_border2 = (_IPE_SEGB2>>4);
        #else                           // Automated sizes generated by the Linker
            fram_ipe_border2 = fram_ipe_end >> 4;
            fram_ipe_border1 = fram_ipe_start >> 4;
        #endif
    
        fram_ipe_settings_struct_address = Ipe_settingsStruct >> 4;
        fram_ipe_checksum = ~((fram_ipe_enable_value & fram_ipe_border2 & fram_ipe_border1) | (fram_ipe_enable_value & ~fram_ipe_border2 & ~fram_ipe_border1) | (~fram_ipe_enable_value & fram_ipe_border2 & ~fram_ipe_border1) | (~fram_ipe_enable_value & ~fram_ipe_border2 & fram_ipe_border1));
    #endif
    
    #ifdef _MPU_ENABLE
        #define MPUPW (0xA500)    /* MPU Access Password */
        #define MPUENA (0x0001)   /* MPU Enable */
        #define MPULOCK (0x0002)  /* MPU Lock */
        #define MPUSEGIE (0x0010) /* MPU Enable NMI on Segment violation */
    
        __mpu_enable = 1;
        // Segment definitions
        #ifdef _MPU_MANUAL // For custom sizes selected in the GUI
            mpu_segment_border1 = _MPU_SEGB1 >> 4;
            mpu_segment_border2 = _MPU_SEGB2 >> 4;
            mpu_sam_value = (_MPU_SAM0 << 12) | (_MPU_SAM3 << 8) | (_MPU_SAM2 << 4) | _MPU_SAM1;
        #else // Automated sizes generated by Linker
            #ifdef _IPE_ENABLE //if IPE is used in project too
            //seg1 = any read + write persistent variables
            //seg2 = ipe = read + write + execute access
            //seg3 = code, read + execute only
        	       mpu_segment_border1 = fram_ipe_start >> 4;
        	       mpu_segment_border2 = fram_rx_start >> 4;
        	       mpu_sam_value = 0x1573; // Info R, Seg3 RX, Seg2 RWX, Seg1 RW
            #else
        	       mpu_segment_border1 = fram_rx_start >> 4;
        	       mpu_segment_border2 = fram_rx_start >> 4;
        	       mpu_sam_value = 0x1513; // Info R, Seg3 RX, Seg2 R, Seg1 RW
            #endif
        #endif
        #ifdef _MPU_LOCK
            #ifdef _MPU_ENABLE_NMI
                mpu_ctl0_value = MPUPW | MPUENA | MPULOCK | MPUSEGIE;
            #else
                mpu_ctl0_value = MPUPW | MPUENA | MPULOCK;
            #endif
        #else
            #ifdef _MPU_ENABLE_NMI
                mpu_ctl0_value = MPUPW | MPUENA | MPUSEGIE;
            #else
                mpu_ctl0_value = MPUPW | MPUENA;
            #endif
        #endif
    #endif
    
    /****************************************************************************/
    /* INCLUDE PERIPHERALS MEMORY MAP                                           */
    /****************************************************************************/
    
    -l msp430fr6047.cmd
    
    
    

  • Hi Gajana

    That seems you have not stop the watch dog. Have you stop the watchdog or feed it before reset?

**Attention** This is a public forum