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.

*** MSP430F stack memory issue



I used J-TAG to Program the Evaluation board of TI. This Evaluation Board is a single point electricity meter. I calibrate one day and the next day it is no more calibrated!

Not to mention that I have the following warning:

The stack pointer for stack 'Stack' (currently Memory:0x0) is outside the stack range (Memory:0x20B0 to Memory:0x2100)

My info-mem is as follows.

// ************************************************
//
// XLINK configuration file for MSP430F47197
//
// Copyright 1996-2010 IAR Systems AB
//
// $Revision: $
//
// ************************************************

// ---------------------------------------------------------
// Description
//

//
// Usage:
//
//   xlink [file file ...] -f lnk430f47197.xcl
//
// -----------------------------------------------
// Device summary
//

//
// Core:                           MSP430X
//
// Interrupt vectors:              32
//
// Peripheral units:                   0-001FF
//
// Information memory (FLASH):     01000-010FF
//
// Read/write memory (RAM):        01100-020FF
//
// Read-only memory (FLASH):       02100-0FFFF
//                                 10000-1FFFF
//


// -----------------------------------------------
// Segments
//

// -------------------------------------
// Data read/write segments (RAM)
//

//
// The following segments are available for both
// the DATA16 and DATA20 segment groups.
//
// segment         Usage
// -------         --------------------------
// DATA<nn>_Z      Data initialized to zero
// DATA<nn>_I      Data initialized by copying from DATA<nn>_ID
// DATA<nn>_N      Data defined using __no_init
// DATA<nn>_HEAP   The heap used by 'malloc' and 'free'
//
// segment         Usage
// -------         --------------------------
// CSTACK          Runtime stack
// TLS16_I         Thread-local storage for main thread
//                 (require custom runtime library)
//


// -------------------------------------
// Program and data read-only segments (FLASH)
//

//
// The following segments are available for both
// the DATA16 and DATA20 segment groups.
//
// segment         Usage
// -------         --------------------------
// DATA<nn>_C      Constant data, including string literals
// DATA<nn>_ID     initializers for DATA<nn>_I
//
// segment         Usage
// -------         --------------------------
// INFO            Information memory
// INFOA           Information memory, bank A
// INFOB           Information memory, bank B
// INFOC           Information memory, bank C
// INFOD           Information memory, bank D
// CSTART          Program startup code
// CODE            Program code
// ISR_CODE        Program code for interrupt service routines
// DIFUNCT         Dynamic initialization vector used by C++
// CHECKSUM        Checksum byte(s) generated by the -J option
// INTVEC          Interrupt vectors
// RESET           The reset vector
// TLS16_ID        Thread-local initializers for main thread
//                 (require custom runtime library)
//
// Notes:
//
// * The segments CSTART, ISR_CODE, and DIFUNCT, as well as the segments in
//   the DATA16 and TLS16 segment groups must be placed in in the range
//   0000-FFFD.
//
// * The INFOx and INFO segments overlap, this allows data either to be
//   placed in a specific bank or anywhere in the info memory.
//
// * The INTVEC and RESET segments overlap. This allows an application to
//   either use the reset vector provided by the runtime library, or
//   provide a reset function by defining an interrupt function associated
//   with the reset vector.
//


// ---------------------------------------------------------
// Configuation
//

// -----------------------------------------------
// Stack and heap sizes
//

// Uncomment for command line use
//-D_STACK_SIZE=80
//-D_DATA16_HEAP_SIZE=80
//-D_DATA20_HEAP_SIZE=80


// -----------------------------------------------
// Define cpu
//

-cmsp430


// -----------------------------------------------
// Support for placing functions in read/write memory
//

-QCODE_I=CODE_ID


// ---------------------------------------------------------
// Placement directives
//

// -----------------------------------------------
// Read/write memory
//

-Z(DATA)DATA16_I,DATA16_Z,DATA16_N,TLS16_I,DATA16_HEAP+_DATA16_HEAP_SIZE=1100-20FF
-Z(DATA)CODE_I
-Z(DATA)DATA20_I,DATA20_Z,DATA20_N,DATA20_HEAP+_DATA20_HEAP_SIZE
-Z(DATA)CSTACK+_STACK_SIZE#


// -----------------------------------------------
// Read-only memory
//

// -------------------------------------
// Information memory
//




-Z(CONST)INFO=8000-9000 
-Z(CONST)INFOA=10C0-10FF
-Z(CONST)INFOB=1080-10BF
-Z(CONST)INFOC=1040-107F
-Z(CONST)INFOD=1000-103F



// -------------------------------------
// Low memory 0-0FFFF
//

// ---------------------------
// Code
//

-Z(CODE)CSTART,ISR_CODE=2100-FFBF

// ---------------------------
// Constant data
//

-Z(CONST)DATA16_C,DATA16_ID,TLS16_ID,DIFUNCT,CHECKSUM=2100-FFBF


// -------------------------------------
// All memory 0-FFFFF
//

// ---------------------------
// Code
//

-P(CODE)CODE=2100-FFBF,10000-1FFFF
-Z(CODE)CODE_ID

// ---------------------------
// Constant data
//

-Z(CONST)DATA20_C,DATA20_ID=2100-FFBF,10000-1FFFF


// -------------------------------------
// Interrupt vectors
//

-Z(CODE)INTVEC=FFC0-FFFF
-Z(CODE)RESET=FFFE-FFFF

Am I shorten in memory? If yes, why it lets me get him calibrated and lose it the day after!

Any iidea?

**Attention** This is a public forum