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.

Compiler/CC2650: Debug mode doesn't run

Part Number: CC2650


Tool/software: TI C/C++ Compiler

Hi everyone,

when I make allocation a Single Input Section from a Library like this:

   output_section_divt2asm
   {
        rtsv7M3_T_le_eabi.lib<ll_div_t2.asm.obj>(.text)
   } > 0x0001f100

the project compiles without errors, but when I go into debug mode, the "continue" and "suspend" buttons are not active, I can only  terminate the process. It looks like the application has no entry point. How to fix it? Any help is appreciated.



Kind regards, Egor

  • A little addition.

    When I make allocation not for library function, but for my own function like this:

       output_section_
       {
             LoRa*.obj(.text:setup_params)
       } >  0x0001f100

    everything works correctly

  • I suspect this ...

    Egor Karlin said:
    when I go into debug mode, the "continue" and "suspend" buttons are not active, I can only  terminate the process

    ... is due to a hardware problem that I cannot help with.  With that in mind ...

    What is the address of the boot routine?  It is named c_int00, or something close to that.  Search for it in the linker map file.  Is the boot routine in a range of memory that is valid for execution all the time?  Sometimes, when the system starts, only some of the memory is ready for use, and the rest of the memory requires some configuration or initialization before it can be used.

    Thanks and regards,

    -George

  • When our code works properly, the following is written in the map file:
    0000cb90    00000044     boot.aem3 : boot.oem3 (.text)
    
    0000cb91  ResetISR                                                                  
    0000cb91  _c_int00  

    But when we create a section for the EABI function, then c_int00 changes to c_int00_noargs. In the map file we see the following:
    0000e5cc    00000028     rtsv7M3_T_le_eabi.lib : boot_cortex_m.c.obj (.text:_c_int00_noargs:_c_int00_noargs)
    
    0000e5cd  ResetISR                                                                  
    0000e5cd  _c_int00_noargs  
    How to identify the memory which requires some configuration or initialization before it can be used?
    Kind Regards,
    Egor
  • Some extra information

    In the file cc26hh_app.cmd we found the following fragment:

    /* The following command line options are set as part of the CCS project.            */
    /* If you are building using the command line, or for some reason want to            */
    /* define them here, you can uncomment and modify these lines as needed.             */
    /* If you are using CCS for building, it is probably better to make any such         */
    /* modifications in your CCS project and leave this file alone.                      */
    /*                                                                                   */
    /* --heap_size=0                                                                     */
    /* --stack_size=256                                                                  */
    /*--library=rtsv7M3_T_le_eabi.lib                                                    */

    We tried to uncomment /*--library=rtsv7M3_T_le_eabi.lib */
    and ran into the previously mentioned problem.

    Mentioning the rtsv7M3_T_le_eabi.lib library in the cmd file leads to problems in our case.

  • The difference between these lines from the linker map file  ...

    Egor Karlin said:
    0000cb90    00000044     boot.aem3 : boot.oem3 (.text)

    ... and ...

    Egor Karlin said:
    0000e5cc    00000028     rtsv7M3_T_le_eabi.lib : boot_cortex_m.c.obj (.text:_c_int00_noargs:_c_int00_noargs)

    ... is significant.  The first one means the startup code comes from TI-RTOS.  The second one means the startup code comes from the compiler RTS library.  Based on your other posts, your system needs the startup code to come from TI-RTOS.  

    For the build which leads to the startup code coming from the compiler RTS library ... Please rebuild the entire project.  One way to do that is to right-click on the name of the project and select Rebuild Project.  Then save the contents of the Console (not Problems) view to a text file.  Use the icon named Copy Build Log.  When you name the log file, be sure to use the file extension .txt.  Please put that build log file, plus the linker command file, into a zip file and attach it to your next post.

    Thanks and regards,

    -George

  • Egor Karlin said:
    when I go into debug mode, the "continue" and "suspend" buttons are not active, I can only  terminate the process. 

    make sure the proper Debug context is selected in the Debug view. For an example, please see:

    https://e2e.ti.com/support/tools/ccs/f/81/p/916569/3387855#3387855

  • We did a rebuild of the project and saved the necessary files.

    The archive under the name "working version" contains the Buid Log and linker command file for the case when the startup code comes from TI-RTOS.

    The archive, which is called the "non-working version", contains files for the case when we create a section for a function and the startup code comes from the compiler RTS library.

    If I understand you correctly, then we need to make sure that the startup code comes from TI-RTOS?


    Kind Regards,

    Egor 

    working version.zip

    non-working version.zip

  • Hi Ki, thanks for your advice. We tried to perform the actions from the link you provided. Unfortunately, in our case, this did not lead to a solution to the problem.

    Regards, Egor

  • We also tried to set "rtsv7M3_T_le_eabi.lib" in CCS General window, as shown in the screenshot. However, it is not possible to run the program on execution.

  • Thank you for submitting the requested files.

    You invoke gmake like this ...

    /home/runechuv/ti/ccsv8/utils/bin/gmake -s -k -j 4 all -O 
    

    ... with the -s option that causes gmake to not show the commands which compile and link the files.  These lines start with armcl and show all the options, files, libraries, etc.  For instance, here is the link command ...

    Building target: "Pribor_9000_app.out"
    Invoking: ARM Linker
    <Linking>
    "../Tools/cc26xx_app.cmd", line 140: warning #10237-D: split placement (>>) ignored for ".init_array":  split placement for this section is not permitted
    Finished building target: "Pribor_9000_app.out"
    

    Because these details are missing, I am not certain about what goes wrong.  But I am confident in my guess.

    When the program fails to work, the startup code comes from the compiler RTS library, and not from BIOS.  To insure the startup code from the RTS library is not used, a set of changes similar to these is needed.

    • Remove the linker option --reread_libs
    • Add the linker option --priority
    • Change the order the linker sees the files so the linker command file is next to last, and the compiler RTS library is last

    Please search for these options in the ARM assembly tools manual.

    Thanks and regards,

    -George

  • Thank you for your help, your advice turned out to be very useful and instructive for us.