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.

STRANGE MEMORY ISSUE.IS THIS RELATED TO THE DEBUGGER OR CCS?

Other Parts Discussed in Thread: CC430F6137

Hi,

I am using CCSV4.2.3.00004 against  CC430F6137 and JTAG(MSP-FET430UIF).

I am able to built and debug my project successfully.But while checking allocated

memory locations I did not find the data which I am writing into that location.

My application data starts at the .BSS segment .While debugging any value that is displayed

as the contents  (in watch window ) is incorrect.The problem is resolved when I introduced a

dummy array  of 260 bytes aligned with the start address of .BSS data segment .I am using the

stack of 128 bytes and heap of 250 bytes .

 

  Below figures are my screen shot with out introducing the dummy array .

.

 THIS IS THE WATCH WINDOW.

 

THIS IS THE MEMORY WINDOW.

 

  • Hi,

      Below figures are my screen shots after introducing of  dummy array for previous problem .

    .

     

    THIS IS WATCH WINDOW.

     

    THIS IS MY MEMORY WINDOW.

     

     

    Does that introducing the dummy array would cause the problem after burnt to the target board.

    How can i resolve it.Is debugger causing it or CCS or my code.

    If you need more info I can give more details related to the problem.

    Please let me know how to resolve it.

    Thanks in advance,

    JAGAS EDARA.

     

  •   Oops,Sorry I forgot to attach Stack window to my previous Posts.

    .

     

    Reagrds,

    JAGAS EDARA.

     

     

  • Hi,

    Below  text is the content of Linker_CC430f6137.cmd  file.I think this might help.

     

    /******************************************************************************/
    /* lnk_cc430f6137.cmd - LINKER COMMAND FILE FOR LINKING CC430F6137 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 */
    /* */
    /*----------------------------------------------------------------------------*/


    /****************************************************************************/
    /* SPECIFY THE SYSTEM MEMORY MAP */
    /****************************************************************************/

    MEMORY
    {
    SFR : origin = 0x0000, length = 0x0010
    PERIPHERALS_8BIT : origin = 0x0010, length = 0x00F0
    PERIPHERALS_16BIT : origin = 0x0100, length = 0x0100
    RAM : origin = 0x1C00, length = 0x0FFE
    INFOA : origin = 0x1980, length = 0x0080
    INFOB : origin = 0x1900, length = 0x0080
    INFOC : origin = 0x1880, length = 0x0080
    INFOD : origin = 0x1800, length = 0x0080
    FLASH_VL_OV : origin = 0x8000, length = 0x0360
    FLASH_VL_ISFS : origin = 0x8360, length = 0x00A0
    FLASH_VL_GFB : origin = 0x8400, length = 0x0400
    FLASH_VL_ISF : origin = 0x8800, length = 0x0800
    FLASH_VL_EXT : origin = 0x9000, length = 0x0800
    FLASH : origin = 0x9800, length = 0x6780
    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 */
    .sysmem : {} > RAM /* DYNAMIC MEMORY ALLOCATION AREA */
    .stack : {} > RAM (HIGH) /* SOFTWARE SYSTEM STACK */

    .vl_ov : {} > FLASH_VL_OV /* All VL data is for the filesystem */
    .vl_isfs : {} > FLASH_VL_ISFS
    .vl_gfb : {} > FLASH_VL_GFB
    .vl_isf : {} > FLASH_VL_ISF
    .vl_ext : {} > FLASH_VL_EXT

    .text : {} > FLASH /* CODE */
    .cinit : {} > FLASH /* INITIALIZATION TABLES */
    .const : {} > FLASH /* CONSTANT DATA */
    .cio : {} > RAM /* C I/O BUFFER */

    .pinit : {} > FLASH /* C++ CONSTRUCTOR TABLES */

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

    .int00 : {} > INT00 /* MSP430 INTERRUPT VECTORS */
    .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
    .int41 : {} > INT41
    .int42 : {} > INT42
    .int43 : {} > INT43
    .int44 : {} > INT44
    .int45 : {} > INT45
    .int46 : {} > INT46
    .int47 : {} > INT47
    .int48 : {} > INT48
    .int49 : {} > INT49
    .int50 : {} > INT50
    .int51 : {} > INT51
    .int52 : {} > INT52
    .int53 : {} > INT53
    .int54 : {} > INT54
    .int55 : {} > INT55
    .int56 : {} > INT56
    .int57 : {} > INT57
    .int58 : {} > INT58
    .int59 : {} > INT59
    .int60 : {} > INT60
    .int61 : {} > INT61
    .int62 : {} > INT62
    .reset : {} > RESET /* MSP430 RESET VECTOR */
    }

    /****************************************************************************/
    /* INCLUDE PERIPHERALS MEMORY MAP */
    /****************************************************************************/

    -l cc430f6137.cmd

    Thanks and regards,

    JAGAS EDARA.

  • Hi Jagas,

    once again I need more information.  Are you trying to write memory in your code?  If so how?  What settings and code do you use?

    Regards,

    Lisa

  • Hi Lisa,

    Check the other posts of mine.Yesterday it self I posted 8 screen shots and linker files

    related to that problem in CCS and MCU forums but i didnt posted them in as single post.

     I highlighted what kind of problem I am facing in my screen shorts. 

    Actually I created a queue(which is structure and pointing to the data array) and data array .

    And I am using it to store uart side receive and transmit data.

    Check below code you may get an idea.One thing the debugger didnt shows any errors.

    ////////////////////////////////////////////////////////////////////////////////

    I defined this structure in queue.h file

    typedef struct {
    ot_u16 max;
     ot_u16 length;
    Twobytes options;
    ot_u8* front;
    ot_u8* getcursor;
    ot_u8* putcursor;
    } Queue;

    ///////////////////////////////////////////////////////////////////////////////////

    This is in queue.c file 
    ot_u8 utxq_data[255];
    ot_u8 urxq_data[255];
    Queue utxq;
    Queue urxq;

    Queue txq;
    Queue rxq;
    ot_u8 txq_data[TXQ_ALLOC];
    ot_u8 rxq_data[RXQ_ALLOC];

    void q_writebyte(Queue* q, ot_u8 byte_in) {
    *(q->putcursor) = byte_in;
    q->putcursor++;
    q->length++;
    }

    void q_writeshort(Queue* q, ot_uint short_in) {
    ot_u8* data;
    data = (ot_u8*)&short_in;

    # if (PLATFORM_ENDIAN == BIG_ENDIAN)
    q->putcursor[0] = data[0];
    q->putcursor[1] = data[1];
    # else
    q->putcursor[0] = data[1];
    q->putcursor[1] = data[0];
    # endif

    q->putcursor += 2;
    q->length += 2;
    }

    void q_writelong(Queue* q, ot_ulong long_in) {
    ot_u8* data;
    data = (ot_u8*)&long_in;

    # if (PLATFORM_ENDIAN == BIG_ENDIAN)
    q->putcursor[0] = data[0];
    q->putcursor[1] = data[1];
    q->putcursor[2] = data[2];
    q->putcursor[3] = data[3];
    # else
    q->putcursor[0] = data[3];
    q->putcursor[1] = data[2];
    q->putcursor[2] = data[1];
    q->putcursor[3] = data[0];
    # endif

    q->putcursor += 4;
    q->length += 4;
    }

    //////////////////////////////////////////////////////////////////////////////////

    This is my main.c file.



    void main()
    {
     unsigned int cmd_len;

    platform_poweron(); //power on plotform
    platform_init_OT(); //initilizing all the modules including serial uart.

    uartInit(); //its initialize the uart RX-TX buffers.
       
    InitButtonLeds();
    platform_ot_run();
    cmd_len=17;
        while(1)
    {

    P3OUT ^= BIT6; //red led on


    P1IFG = 0;
    q_writebyte(&utxq,PID1);-------------------------"here i am trying store the value of PID1 in utxq_data array using utxq but I could not able to see what I am storing to that array."
    q_writebyte(&utxq,PCKOP1);
    q_writeshort(&utxq,cmd_len);
    q_writeshort(&utxq,TMANFID1);
    q_writelong(&urxq,SERID1);---------------------------------"It is working I can see what I am storing in that array."
    q_writeshort(&urxq,SID1);
    q_writebyte(&urxq,WRMEM_CMD1);
    q_writebyte(&txq,PKTLEN1);
      q_writebyte(&txq,DATA1);----------------------------------- "It is working I can see what I am storing in that array."
    q_writebyte(&txq,DATA2);
    q_writebyte(&txq,DATA3);
    q_writebyte(&txq,DATA4);
     TIMA_ITConfig(TIM0A5, ENABLE);
    SLEEP_MCU();
       
    }
    }

    Thanks and regards,

    JAGAS EDARA.

  • Hi Lisa,

    Sorry I forgot to ask one thing.You asked me about the setting I didnt get what kind of setting you are asking actually.

     

     

     

     

     

    Thanks and regards,

    JAGAS EDARA.

     

     

     

     

  • Hi Jagas,

    I have been going through some posts and it seems you have had things answered by the MSP430 team.  Is this correct?  It is hard to follow when things are across so many posts.  Once again I would like to request one clean tidy post showing all information please.

    Best Regards,

    Lisa

  • Hi Lisa,

    Sorry for many posts.I felt its too much for single post .

     Since I do not know the cause for this strange issue I thought it would be CCS bug as suggested by MSP430 team.

    So I am trying to get the new version of CCS but still I am not sure that will eliminate this issue.Anyhow  I need to try

    and let you know  whether its working or not.

    Thank you very much for your support.I am really appreciating your help.

     

     

     

     

    Regards,

    JAGAS EDARA.

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

  • Hi Jagas,

    Just thought I would check if you have been able to try the latest CCS Version.

    Best Regards,
    Lisa

  • Hi Lisa,

    No.I am not trying to get any new version.Kind of busy with on going work.Let you know if i wanted to try.

     

     

     

    Regards,

    Jagas edara