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.

BIOS cpu load graph show nothing forever!

   hi, everyone. I have a question confused me long time. my program deal a hard work,and i want   to know the cpu effiency in order to update, but the cpu load graph show nothing while execute graph   show and updating correctly without halting the CPU, anybody advise?       

CPU: 6747, CCS:3.3(3.3.82.13), BIOS:6.1.11.

  • Thomas,

    Can you please recheck the BIOS version number?  Where are you seeing “6.1.11”?

    Thanks,
    Scott

  •   i will be going to company in order to check the version two days later, but can you give me some advise and what reason do you think?it is urgent to me!thanks a lot!

  • Thomas,

    The reason I asked is because the version in your first post doesn’t look correct, and to help we need to know if you’re using DSP/BIOS (version 5.x?) or SYS/BIOS (version 6.x?).

    If it is DSP/BIOS there is a wiki page for RTA troubleshooting that may be of help: http://processors.wiki.ti.com/index.php/DSP/BIOS_Real-time_Analysis_%28RTA%29_troubleshooting

    If SYS/BIOS, chapter 8 of Bios_User_Guide.pdf may help.

    When you are at the company again please get as much information as possible regarding precise versions and application configuration details.

    Thanks,
    Scott

  • scott gary, thank you very much.

    I had got the information about the CCS, DSP/BIOS version: 5.41.02.14; Code generation version:6.1.11; CCS version:3.3.82.13.

    can you give me further advise, because the troubleshooting in above URL does not work here.

  • Thomas,

    Is it possible for you to post the application .tcf file so we can look at it?  If you can’t post it to the public forum we can arrange for you to email it directly.  Is that possible?

    A few other questions:

    - Is this on customer hardware or a TI development board?

    - What is the RTDX mode (JTAG, HSRTDX,?)

    - Is it possible that the CPU is so heavily loaded that the display is showing a flat line at approximately 100%?

    - Are all other RTA transfers working as expected, it is just the CPU load display that is not?

    Thanks,
    Scott

  • scott, 

    answer to A few other questions :

    - it is a customer hardware and the hardware is good which is used in the market。
    - the RTDX mode  is JTAG。
    - I am sure the CPU is not heavily, even maybe very 'idle'.

    - At least the Execute graph works and update fine,  and also CPU load display nothing.

      meanwhile, I can not post the .tcf to you, because the company need.

      another information is that my emulator is XDS560 PCI, can it give you some tips, or may be you can give me some example can show cpu load graph, do you?

      thank you.

  • Thomas,

    OK, thanks.

    The reason I’d asked for the tcf file was to verify that the DSP/BIOS configuration settings made sense.  Without knowing the configuration used it may be very difficult to resolve this.  

    I don’t remember hearing of a case where other RTA views were working but only the CPU load graph was not. 

    As far as examples, I think they should be able to run any of the standard DSP/BIOS examples, and then open the CPU load graph and other RTA displays.   

    A few more questions:

    1) Can you clarify that “showing nothing forever” means the CPU load graph view is shown, but is just always empty?

    2) Can you confirm that the .tcf file has not turned off IDL loop calibration?  That is, bios.IDL.AUTOCALCULATE is “true”.  This is described in the IDL module section (section 2.13) of the C6000 API guide (http://www.ti.com/lit/ug/spru403s/spru403s.pdf).
     
    3) Can you list any other functions configured to run in the IDL loop?  Do any of them block execution of the IDL loop for an extended period of time?  Is there anything unusual about any of these IDL functions?

    Thanks,
    Scott

  • scott,

    thanks,I will confirm these question。

     

    thomas

  • scott,

    thank you.

    a good news and a bad news.

    a good news is that the cpu load graph works and update well and the bad news is I do not exactly understand why.what happens as follow: in my .tcf file, there is a IDL function iterm during Schecule, right click will show a diaglox which have one selection configure and one edit box configure, the selection is auto calculate idle loop instructions count and the configuration is selected, and the edit box means "idle loop instruction count" and the value is 0; the configuration above is the bios .tcf file default configuration and meanwhile cpu load graph does not work.

    Today I change "idle loop instruction count"  edit box value from 0 to 4, and run the new program the cpu load graph works well and the max is 4%.

    I do not understand why it happens, and also "4" is a reasonable value whether or not? scott , what do you think?

     

  • Thomas,

    I’m glad to hear about the good news.  But I don’t have an explanation for the '4' result you are now seeing.  I’ll have to ask some others about this…

    Scott

  • scott。

    thanks.

    it is a mistake, 4 is not mean the cpu load peak,and what I mean is that how to certify the reasonable value for .tcf file edit box "idle loop instruction count", which default 0 and I change it to 4 for funny and made cpu load graph work.

    so what is your advise?

    thomas.

  • Thomas,

    OK, thanks for clarifying the “4%”.

    If you turn off the IDL loop auto-calibration you’ll need to compute the number of cycles for one pass thru the IDL loop (it will certainly be more that “4”), and enter the value there.  This is noted under the description of “Idle Loop Instruction Count” in the API guide.  You might add a special function to the IDL loop and set breakpoints next to each other, and look at the CPU cycles spent from the second breakpoint until the function is run again and hits the first breakpoint.  You can look at the C64x+ timestamp counter (TSC) in the CCS register view to read cycle counts.  The number of cycles can vary based upon code and data structure placement in memory, cache and wait state configuration, etc.

    I think it would be easiest to switch back to the auto-calibrate mode and use that.  Have you tried eliminating application-provided IDL functions (highlighted in green below, in a snippet from the API guide) to see what difference that makes?
     
    "Auto calculate idle loop instruction count. When this property is
    set to true, the program runs the IDL functions one or more times at
    system startup to get an approximate value for the idle loop
    instruction count. This value, saved in the global variable
    CLK_D_idletime, is read by the host and used in the CPU load
    calculation. By default, the instruction count includes all IDL
    functions, not just LNK_dataPump, RTA_dispatcher, and
    IDL_cpuLoad. You can remove an IDL function from the calculation
    by setting the "Include in CPU load calibration" property for an IDL
    object to false.

    Remember that functions included in the calibration are run before
    the main() function runs. These functions should not access data
    structures that are not initialized before the main() function runs. In
    particular, functions that perform any of the following actions should
    not be included in the idle loop calibration:

    ■ enabling hardware interrupts or the SWI or TSK schedulers
    ■ using CLK APIs to get the time
    ■ accessing PIP objects
    ■ blocking tasks
    ■ creating dynamic objects"

    Also, have you made sure the constraints described above (in yellow) are being followed in the application-provided IDL functions?

    Thanks,
    Scott

  • scott, thank.

    now I understand in my .tcf file, system will run IDL functions one or more times before my main function runs, and then get the reasonable value for idle loop instruction count, and host use it for cpu load calibration.

    That is also a mistake, Auto calculate idle loop instruction count, I set true and aslo I manually set idle loop instruction count edit box value 4, and then cpu load graph

    works well.I never set Auto calculate idle loop instruction count FALSE.

    but I also have some question after read you reply. 

    first,You said "you can remove an IDL function from the calculation by setting the "Include in CPU load calibration" property for an IDL object to false."  confused me, because the three IDL function configure all by .tcf file, I do not add any one of the three manual, so how can I remove one of them?

    second, ,what is its purpose?

    at last the reasonable value was get before my main function run(the system does not run my function on the time and I do not control the system), and configure by .tcf file, so how can I configure my system to certify the constraints (highlighted in yellow) or maybe the DSP/BIOS will certify them auto? or maybe you can tell me which datasheet or guide file I should read.

    thank you very much.

    thomas.

  • Thomas,

    If you did not set AUTOCALCULATE to false then you should not have been able to set LOOPINSTCOUNT.  There is an internal constraint in the configuration code that the LOOPINSTCOUNT field is writable only when AUTOCALCULATE is false.  You should get a build error if you set LOOPINSTCOUNT in the .tcf file without first setting AUTOCALCULATE to false.  

    If you try this in the GCONF graphical tool you should see the “Idle Loop Instruction Count” entry box as grayed-out when auto-calibration is enabled.  Only when you uncheck “Auto calculate idle loop instruction count” should you be able to enter anything in the instruction count field.  

    Since you can’t send the .tcf file… can you double check, and thoroughly search for all instances of AUTOCALCULATE and LOOPINSTCOUNT in the .tcf file?  It is possible that somewhere in the file AUTOCALCULATE is temporarily disabled and then later re-enabled before the end of the file.  If this is not the case, it seems something is broken in the CCS or DSP/BIOS installation.

    Regarding setting the “Include in CPU load calculation” for IDL functions… if the only three functions in your IDL loop are those provided by DSP/BIOS for RTA (IDL_cpuLoad, LNK_dataPump, RTA_dispatcher) then this step doesn’t apply.  It is only for application-provided IDL functions that you will have an option to exclude them from the calibration.  And yes, these three functions adhere to the necessary constraints for calibration as listed in the API description.

    Scott

  • Thanks Scott

         I will double check, and aslo there is a information I did not enable the RTDX int in my program , but when the program runs, I modify IER to enable the RTDX int, did it ok?

  • Thomas,

    You should not need to enable the RTDX interrupt.  Where in your code are you doing this?

    Thanks,
    Scott

  •  a good news, The CPU load now works well, Beacause I enable the high resolution timer in CLK module. I did not notice this ago.

     thanks scott for your long time help!