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.

How do I setup c_int00 to debug with source stepping

I am using CCSv6.1.2 with Windows 7 on a DSK6713.  I built a simple program that calls a function to do a dot product in c.  It is written so I can turn off the c code and compile the project with an dotp product asm file.  The intent is to not only step through C code and ASM code but to look at clock cycle profiling of different versions of the ASM code.  I have seen this in the past where c_int00 was not defined with the default build ... but I was able to turn off optimizations and I could run to a breakpoint and then do source stepping ... I think there is some new "feature" of CCSv6.1.2 that I need to configure to make this work.  Also, I would appreciate any help on setting up the profile clock for CCSv6.1.2.  Thanks,

Tom Dillon

contents of main.c:

/* Prototype */
int dotp(short *m, short *n, int count);

/* Include Files */
#include "data.h"

/* Definitions */
#define COUNT 256

/* Declarations */
short a[COUNT] = {A_ARRAY};
short x[COUNT] = {X_ARRAY};
int y = 0;

/* Main Code */
main()
{
y = dotp(a, x, COUNT);
}

#if 1
int dotp(short *m, short *n, int count)
{
int i;
int sum = 0;

for (i=0; i < count; i++)
{
sum = sum + m[i] * n[i];
}

return(sum);
}
#endif

contents of dotp_asm.asm:

*
* Dotp assembly subroutine
*
.global _dotp

******************************************************
*
* Register definitions
* A0 = a value
* A1 = x value
* A2 = counter
* A3 = product
* A4 = address of a and Y to be returned
* A6 = original counter value
* B0 = working Y value
* B4 = address of x
*****************************************************
.sect ".text" ; What section is this put into
; so the linker can find it
dotp .asmfunc
_dotp:

zero B0 ; initilize y=0
mv A6, A2 ; set up counter
loop ldh *A4++, A0 ; put the value of a into A0
ldh *B4++, A1 ; put the value of x into A1
nop 4
mpy A0, A1, A3 ; a * x --> product
nop ; put counter into A2
add A3, B0, B0 ; product + previous Y = Y
sub A2,1,A2
[A2] b loop ; repeat loop counter times
nop 5

mv B0, A4 ; store return value

b B3 ; return to main
nop 5
.endasmfunc

contents of data.h:

#define A_ARRAY 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256
#define X_ARRAY 256,255,254,253,252,251,250,249,248,247,246,245,244,243,242,241,240,239,238,237,236,235,234,233,232,231,230,229,228,227,226,225,224,223,222,221,220,219,218,217,216,215,214,213,212,211,210,209,208,207,206,205,204,203,202,201,200,199,198,197,196,195,194,193,192,191,190,189,188,187,186,185,184,183,182,181,180,179,178,177,176,175,174,173,172,171,170,169,168,167,166,165,164,163,162,161,160,159,158,157,156,155,154,153,152,151,150,149,148,147,146,145,144,143,142,141,140,139,138,137,136,135,134,133,132,131,130,129,128,127,126,125,124,123,122,121,120,119,118,117,116,115,114,113,112,111,110,109,108,107,106,105,104,103,102,101,100,99,98,97,96,95,94,93,92,91,90,89,88,87,86,85,84,83,82,81,80,79,78,77,76,75,74,73,72,71,70,69,68,67,66,65,64,63,62,61,60,59,58,57,56,55,54,53,52,51,50,49,48,47,46,45,44,43,42,41,40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21,20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1

  • Hi Tom,

    Able to enable the profile clock feature in CCS 6.1.2 .

    Steps to enable profile clock:

    1. Load the program ,run it on target.

    2. Run --> Clock --> Enable --- You will observe the profile clock at the right corner of the window like below.

    3. To view the Disassembly --->CCS --> View Disassembly.

  • You answered the last part of the question only ... That is how to setup the profile clock ... Thanks, but I still don't have an answer for c_int00 ... I built the attached project and cannot single step into the c code ... That means c_int00 is not setup and/or the compile or link optimization is not allowing me to get to the code in main ( or the .asm file) ... Please look further into the question I posted ... Thank you
  • Hi Tom,

    The attachment is missing. Please attach it again;

  • Tom,

    Your question/concern about c_int00 is not clear.

    When you build a project using CCS, the rts library is included by default, usually using a generic term in the linker setup to pull in the default rts library based on your build options. The rts library defines c_int00 for you.

    A 'normal' CCS C build will create an executable with an entry point of c_int00. And after loading that executable, CCS will automatically run to the 'main' label (sets a breakpoint at main and runs to there). Most people do not want to debug the contents of the c_int00 initialization, so it makes since in 99% of the cases to run to main, where your interesting code starts.

    If you have built something that does not have c_int00, there is usually a warning from the linker saying that the default is not being used. Since you did not mention that, I would assume you have c_int00 defined in all of your cases.

    You can look at the linker output .map file in the Build subfolder, usually Debug or Release. That text file will show a value for c_int00 if it is defined, or it will state what the entry point is near the top of the file.

    If you want to debug the assembly function you wrote, dotp, you should be able to do that with what you have.

    We will need more detail to figure out what you are doing wrong. This could be the steps you take starting with Load or the steps you take starting with Build. But nothing you have mentioned points to a problem, yet.

    Please keep adding detail.

    Regards,
    RandyP
  • I doubt that his code is not stopping at "main()" and its in free running mode due to some runtime error.
    Tom, able to stop at main() ?
    Can you please attach your project here and let us try.
  • Thanks for the suggestions ... I will take a look and reply after I can check what you suggested. Specifically, in the past I had seen that sometimes the build settings might optimize out some code and therefore when I try to "go to main" and it doesn't because c_int00 is not explicitly defined ... or the optimization has removed critical code ...
  • Thanks for the suggestions ... I will take a look and reply after I can check what you suggested. I will gather the files and attach for you to help me investigate this issue ... I stopped looking at this website to see if anyone answered two weeks ago ... thanks in advance for your help.