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.

No source available for main()

Other Parts Discussed in Thread: MSP430F5529, TMS320F28335

Hi,

I am using CCS 5.5.0.00077 on WinXP. I am testing out a project which builds without issues but when I run it, I get:

No source available for "main() at M:/Project\motion_driver-5.1.2\motion_driver-5.1.2\Release\motion_driver-5.1.2.out:{3} 0x611e{4}" 

Can anyone give me some suggestions as to where to look for this issue? I have attached my linker file (this file came from MSP430 examples. Extension changed to txt.)

/* ============================================================================ */
/* Copyright (c) 2013, 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_msp430f5529.cmd - LINKER COMMAND FILE FOR LINKING MSP430F5529 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 = 0x2400, length = 0x2000
    USBRAM                  : origin = 0x1C00, length = 0x0800
    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 = 0x14400
    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              */
    .sysmem     : {} > RAM                /* DYNAMIC MEMORY ALLOCATION AREA    */
    .stack      : {} > RAM (HIGH)         /* SOFTWARE SYSTEM STACK             */

    .text       : {}>> FLASH | FLASH2     /* CODE                              */
    .text:_isr  : {} > FLASH              /* ISR CODE SPACE                    */
#ifdef __LARGE_DATA_MODEL__
    .cinit      : {} > FLASH | FLASH2     /* INITIALIZATION TABLES             */
    .const      : {} > FLASH | FLASH2     /* CONSTANT DATA                     */
#else
    .cinit      : {} > FLASH              /* INITIALIZATION TABLES             */
    .const      : {} > FLASH              /* 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

    /* 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
    USB_UBM      : { * ( .int51 ) } > INT51 type = VECT_INIT
    TIMER0_A1    : { * ( .int52 ) } > INT52 type = VECT_INIT
    TIMER0_A0    : { * ( .int53 ) } > INT53 type = VECT_INIT
    ADC12        : { * ( .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 msp430f5529.cmd

Thanks.

  • Hi Tim,

    I guess your code might be executing properly even after this error, right?

    Regards,

    Gautam

  • Hello Tim,

    That's quite strange.  The linker should have given an error.

    Is main() located in the map file in the debug directory?

    Stephen

  • Gautam, the code does not run and I'm not sure where it is after I click on Run and Pause.

    Stephen, yes, it is in the map file:

                0000611e  local     .text:main (.text:main)

    I'm stumped at the moment as to what's happening.

  • Hello Tim,

    Maybe you should try and out an example project.  If that works,compare your current projects compiler and linker settings with the example project compiler and linker setting.

    Stephen

  • Also, the Debugger Source Lookup Path may be incorrect.  

    You will find it at  Run->Debug Configurations and click on the Source Tab.

    Stephen

  • Also, you can toggle a GPIO port (maybe in a timer isr)  to see if your code is actually running.

    Stephen 

  • Hi Stephen,

    I used the LED toggle sample project from TI to verify that the HW is working, and it is.

    I then use the same linker file on the same HW on the other project. Here is a screenshot of my Debugger Source Lookup configuration. I'm not sure what's the correct setting for this. It looks the same as the TI sample project.

  • It's empty???  That doesn't sound right.  Usually, I don't have to mess with it, but I thought that it might be the issue.  Are you debugging the LED sample project or just running it on the device.  I am thinking CCS doesn't have the location of the source files. That is why it can't find main() while you're debugging.

    From the source tab, try doing an add project (just click the add button then choose project) and select the project that you are trying to debug.

  • I added a project and tried running, but got same result. I am running in debug mode. It appears to be pointing to the right address (0x611e), but maybe that's not where the vector is? I remember there used to be a startup file, where did that go?

  • Just realized that the linker file specify start of Flash at: 

    FLASH                   : origin = 0x4400,

    But the map file says:

    .cinit 0 0000a95a 00000046
    0000a95a 00000023 (.cinit..data.load) [load image, compression = rle]
    0000a97d 00000001 --HOLE-- [fill = 0]
    0000a97e 0000000c (__TI_handler_table)
    0000a98a 00000006 (.cinit..bss.load) [load image, compression = zero_init]
    0000a990 00000010 (__TI_cinit_table)

    How do I make .cinit start at the beginning of FLASH?

    Thanks.

  • I don't think the placement of  .cinit is causing the problem

    The assembly code looks like it could be a main function.  Does it look like what's happening in the main function, i.e call to msp430_clock_init() and etc.? 

    I am almost certain that it has something to do with the debugger not having access to the source.

    I amusing the TMS320F28335 and the debugger configuration source tab contains my project name (I think - I don't have access to code composer at this time).  Your screenshot shows a ccmxl file.  

    When you imported the example project did it show the project name in the debug windows and the debugger configuration source tab?  Did the example project give you the same error, i.e. missing main() source?

    Stephen 

  • There is a call to msp430_clock_init() at the beginning of main(), so I think the compiler did the right thing. Not so sure about the linker, but then don't know where the problem is, so I'm clutching at straws at the moment.

    When I imported the project, it saw the project without any issues, and I did not see anything out of the ordinary and no errors. The project was built using an earlier version of CCS (I don't know which one), and appears to me compiler was 4.0.1 and I'm using 4.2.1 though I wouldn't think compiler version is an issue here.

  • When you say the project was built with an earlier version of CCS are you talking about the project that is giving you problems?

    Did you create the project that is giving you the problem?

    I thinking you should create another CCS C project and add all of your files to that project.

    Stephen

  • When you say the project was built with an earlier version of CCS are you talking about the project that is giving you problems?

    Yes.

    Did you create the project that is giving you the problem? 

    No, I did not create the project.

    I thinking you should create another CCS C project and add all of your files to that project.

    I was starting to think the same thing.

  • Tim11828 said:
    added a project and tried running, but got same result. I am running in debug mode. It appears to be pointing to the right address (0x611e), but maybe that's not where the vector is? I remember there used to be a startup file, where did that go?

    The screen shows the program is halted at the first instruction in main(), which is the expected default behaviour when CCS is used to download a program.

    The CCS debugger is display a "View Disassembly..." button, but isn't displaying a "Locate File..." button. This suggests the source file containing main() hasn't been compiled with debug information.

    Under the CCS Project Properties -> Build -> MSP430 Compiler -> Advanced Options what is "Debugging Model" set to?

    The default is "Full symbolic debug (--symdebug:dwarf,-g)", but I was able to re-create your problem on an existing project by setting the "Debugging Model" to "Suppress all symbolic debugging information (--symdebug:none)"

  • Chester is correct. This behavior is expected if the debugging model is set to --symdebug:none. Usually even in Release mode (which seems to be what you are building for), some skeletal debug information is still included, however if the option is explicitly set to none, then there will be no symbolic debug information.

  • When I try to create a debug build, after I click on OK, the dialogue box goes away but no debug build is created! Is it because some file is ready-only? I don't believe any of my workspace/project files are Read-Only.

  • As far as recreating the project using the LED project that I had that is working, when I build, I get this error:

    #29 expected an expression - line 447

    At line 447 I have this struct declared:

    The definition of this struct is in the same file, so I don't see how it does not know what the members are. Sorry for my ignorance of C! This same file compiles and builds just fine using the original project, but does not run!

  • Tim11828 said:
    The definition of this struct is in the same file, so I don't see how it does not know what the members are

    That structure is using the GCC extension for Designated Inits. Therefore, to allow it to compile think that the "Enable support for GCC extensions (-gcc)" compiler option has to selected - under CCS Project Properties -> Build -> MSP430 Compiler -> Advanced Options -> Language Options.  

  • Thank you Chester. That did the trick! I am now able to step through the code in the new project I created.