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/TMS320F28335: In debug session F8 runs code from Flash not from Ram while F5 steps code from Ram

Part Number: TMS320F28335
Other Parts Discussed in Thread: C2000WARE

Tool/software: Code Composer Studio

Hi,

I'm beginner with Code Composer Studio,  and I'm  trying to do exercises from ssqc019 tutorial (C2000 Teaching ROM).
But following the instructions in Module_03 I'm unable to start code from Ram memory of my Experimenter's Kit Delfino.

1. Ubuntu 14.04.LTS x64

2. No anti-virus

3. Code Composer Studio Version: 7.4.0.00015

4. F28335 controlCard RELEASE 2.2 on Dockin-Stn USB-EMU [R3]

5. Problem description.

I'm trying to run simple program from RAM on F28335 Delfino Experimenter's Kit.

->New->CCS Project

Target: Experimenter's - Kit Delfino F28335

Connection: Texas Instruments XDS 100v1 Debug Probe (or XDS 100v2 debug probe)

In case of both probes verification is Ok.

Project name: Test3

Compiler version: Ti v16.9.6LTS

Output type: Executable

Output format: legacy COFF

Linker command file: 28335_RAM_lnk.cmd

Runtime support library: rts 2800_fpu32.lib

Project templates and examples:

Empty project (with main.c)

->Finish

->Project->Properties

->C2000 Linker ->Basic Options

Set C system stack size: 0x400

->Ok

Then I'm writing program doing “nothing”

01 unsigned int k;

02 unsigned int i;

03

04 void main(void)

05 {

06      while(1)

07     {

08         for (i=0; i<100; i++)

09         {

10             k = i*i;

11         }

12     }

13 }

->Build 'Debug' for project 'Test3'

Building is finished without problems:

**** Build of configuration Debug for project Test3 ****

/home/piotr/ti/ccsv7/utils/bin/gmake -k -j 4 all -O

Building file: "../main.c"

Invoking: C2000 Compiler

"/home/piotr/ti/ccsv7/tools/compiler/ti-cgt-c2000_16.9.6.LTS/bin/cl2000" -v28 -ml -mt --float_support=fpu32 --include_path="/home/piotr/workspace_CCSv7/Test3" --include_path="/home/piotr/ti/ccsv7/tools/compiler/ti-cgt-c2000_16.9.6.LTS/include" --advice:performance=all -g --diag_warning=225 --diag_wrap=off --display_error_number --preproc_with_compile --preproc_dependency="main.d_raw" "../main.c"

Finished building: "../main.c"

Building target: "Test3.out"

Invoking: C2000 Linker

"/home/piotr/ti/ccsv7/tools/compiler/ti-cgt-c2000_16.9.6.LTS/bin/cl2000" -v28 -ml -mt --float_support=fpu32 --advice:performance=all -g --diag_warning=225 --diag_wrap=off --display_error_number -z -m"Test3.map" --stack_size=0x400 --warn_sections -i"/home/piotr/ti/ccsv7/tools/compiler/ti-cgt-c2000_16.9.6.LTS/lib" -i"/home/piotr/ti/ccsv7/tools/compiler/ti-cgt-c2000_16.9.6.LTS/include" --reread_libs --diag_wrap=off --display_error_number --xml_link_info="Test3_linkInfo.xml" --rom_model -o "Test3.out" "./main.obj" "../28335_RAM_lnk.cmd" -lrts2800_fpu32.lib

<Linking>

Finished building target: "Test3.out"

**** Build Finished ****

->Debug As Code Composer Debug Session

Program is loaded into RAM memory and execution stops before for (i=0; i<100; i++) instruction, blue arrow appears in line number 8. Then I'm able to push Step Into (button F5) and one line of code is executed from RAM. I can keep pushing F5 and code executes in steps. I can observe values of variables i and k in Expressions tab. In the Disassembly window I see my program and my instructions. When I try to run the code by clicking Resume (F8) it starts code execution from Flash memory. In my case two leds: LD1 and LD2, starts blinking on the control card. The program with blinking led diodes is flashed and starts on powering on the device. After pushing F8 button it is possible to Suspend (Alt+F8) the program but the content of Disassembly window is different. There is no my program with for loop increasing i variable.

How can I run code from Ram?

What should I checked?

Best Regards

Piotr

  • Piotr,

    On C2000 devices, there are some additional files/options that are set up in typical projects that (along other things) redirects where code is to be executed from after boot ROM. I would suggest that you install C2000Ware and import one of the F28335 examples from there into CCS. Even if you do not wish to exercise the peripherals right now, the examples should provide a good starting point for your development. 

    To get your basic example going, I would think that you would need to add the DSP2833x_CodeStartBranch.asm to your project, at a minimum. You can find the file within C2000Ware. In addition, you probably need to set the linker entry point to code_start. Again, I think the best way to get started is with an example project because all the necessary files and options should already be set up as required by the device family.