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.

Using the profiler clock with a C5510?

I am using an IP library with quoted execution times, but the speed isn't really living up to the hype.  I'd like to turn on the clock and step over the library function to measure clock ticks.  But I keep getting the following error.

 

C55xx_0: Can't enable profiling as it requires AU1 which is already claimed for RTDX or breakpoint(s)

 

I'm using a C5510A, with DSP/BIOS.  Is there something special I need to do to make this work?  If it won't work because of some C55xx limitation, is there another good way to measure execution time?

Thanks

  • Try disabling RTDX.   Assuming you are using BIOS 5 double click on the tcf file in your project.  This will open the BIOS configuration editor.  Expand Input/Output.  Right click on RTDX and select properties, uncheck the "Enable Real-Time Data Exchange" box.  Save the file and rebuild your app.

     

    John

  • I tried that, and I still get the following when I try to enable the clock.

     

    C55xx_0: Can't enable profiling as it requires AU1 which is already claimed for RTDX or breakpoint(s) 

    C55xx_0: Can't enable profiling as it requires AU1 which is already claimed for RTDX or breakpoint(s)

     

    But anytime I uncheck the RTDX box, and click apply, the box rechecks itself.  (Sorcery in CCSv4.1.1... bug filed.)  So I think the setting isn't "taking"/being respected.  Or... some other setting is not compatible with disabled RTDX.

     

  • Hmmm... I see the same thing.  The BIOS config editor just isn't accepting the change.  Another option is to try BIOS statistics objects.  I am going to move the thread into the BIOS forum to see if the team there can help.

    John

     

  • For debugging, I've setup TIMER1, and I'm reading its TIM register, but I need to use that Timer for other things.  i.e. I turned off a bunch of timed functionality to be able to measure ticks.  I'd hope there's a scalable solution for this.

  • (1)  Disabling RTDX takes a couple of steps.   The "HST" module is dependent on RTDX, so you need to set the HST linktype to "NONE" before you can disable RTDX.  The following script code will do the trick (I captured these 2 lines below by using gconf GUI)

     

    bios.HST.HOSTLINKTYPE = "NONE";
    bios.RTDX.ENABLERTDX = 0;

     

    (2)  CLK_gethtime() returns 32-bit time counter value.  The units are processor dependent.  You can use CLK_cpuCyclesPerHtime() to convert these to CPU cycles.  And then GBL_getFrequency() to convert to time in milliseconds.

     

    time1 = CLK_gethtime();

    ... processing ...

    time2 = CLK_gethtime();

    CPUcycles = (time2 - time1) * CLK_cpuCyclesPerHtime();

    /* calculate absolute time in milliseconds */

    TimeAbsolute = CPUCycles / GBL_getFrequency();

  • Karl,

     

    Thanks!  I'll give that a try and let you know how it worked.  I appreciate the info.  Does this imply the profiler will work as well once I turn RTDX off?  And also, I'm not too familiar with RTDX, other than what it stands for.  Does turning it off imply something about the debugability of my app while I'm JTAG'ing?

     

    Thanks again!

     

  • Turning it off will disable some of the RTA (real-time analysis) features like real-time LOG view and CPU load graphs.  You can disable it for your current work and then reenable if/when you want to use these features.  You can still view LOG buffers via RTA LOG view when you halt target, but RTDX is needed to update the views while target is running.

  • Forgot to verify this.  This is true.  :)

    One more question.  Is there a way to get CPU load/utilization information programmatically?  i.e...

    int_q8 = bios_cpu_load();

    LOG_printf( &trace "print out my CPU ute : %whatev" );

  • 2816.load.zip

     

    No built in way to do this, but the attached might be useful.   The .h file contains some documentation on how to use.