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/66AK2G12: Unable to connect to ROV: "Target Not Responding and May Need to be Reset"

Other Parts Discussed in Thread: 66AK2G12, SYSBIOS

Hi Ki

Thanks for the answers so far.   As my interest is to get some reasonably accurate function/thread/CPU load profiling within a rather large DSP application, I think my ETB-only BlackHawk emulator is not going to do the job.  

I've moved on to looking into using ROV which I understand makes use of facilities within SYS/BIOS to provide overall CPU loading and thread profiling data.   This info would serve me well.   

However, I have not yet been able to get ROV to work with my code.   When I tried this, while I was successfully connected to my target and the images loaded and running, I was unable to successful connect with ROV.  I perused the forum for ROV not connect and found the following thread

https://e2e.ti.com/support/processors/f/791/t/903050?tisearch=e2e-quicksearch&keymatch=ROV%20not%20connect

The picture in this thread that shows the message Target Not Responding and May Need to be Reset is what I am getting.   The end of this thread mentions a bug that Internal teams confirmed and can reproduce.   It is not clear if this is my issue or not.   Do you have any suggestions?  Could I be failing to do some other important step?

I am developing on a 66AK2G12 SoC.  Compiler version is v8.2.7.   CCS Version: 8.3.1.00004.

Below is a screen shot of my attempt to connect to ROV.  

  • Hi Richard, 

    I split your last post to a new thread since it is a different issue. I will bring this thread to the attention of the TI-RTOS experts.

    Thanks

    ki 

  • Hi Richard,

    1. What version of SYS/BIOS and XDCtools are you using?
    2.  Also, can you halt the target and see if you can connect then?
    3. Does ROV Classic work?

    Todd

  • Hi Todd

    Thanks for promptly taking the hand-off from Ki.

    Item 2.   I halted the DSP core but could still not connect with ROV.

    Item 3 and Item 1

    ROV Classic did eventually respond.  It took a little while and I almost gave up.  I suspect the screen shot below from the System Module's XDCPATH shows the SYS/BIOS version and XDCtools versions you requested.  

    As I am interested in thread and CPU profiling info, can I get this from ROV Classic somehow?  Or does this info provided help unlock why new ROV is not connecting?

       

  • Hi Richard,

    ROV Classic and Runtime Object View has the same information, but Runtime Object View has better features (e.g. graphs, multiple views open at once, save data to a file, etc.).

    You can increase the connect time in Runtime Object Value. Look in the Setting->Data Retrieval Settings.

    Also, just to confirm, you are using elf format (and not COFF). ROV Classic supports both, but Runtime Object View only supports elf.

    Todd

  • Hi Todd

    The project properties screenshot below shows elf is used.

    However, I cannot find the button to access the Data Retrieval Settings you refer to.  Below is a screenshot of my GUI.   I cannot access the gear symbol you highlighted in the Runtime Object View tab.   Is there another one somewhere?

  • It is the gear. Let me check to see if there is another way.

  • Hi Todd

    When I cancelled then tried again, I got past the connection issue.  I'm not sure if the connection was fully successful or not.

    Anyway I got the following view.  However, my main interest is CPU loading which is showing blank.   That's the one particular graph I am really interested in.   Can you help?

  • Great! Yes, it is getting connect.

    Based on the list of modules (in the Viewable Modules list), you don't have CPU Load enabled. Try adding the following your .cfg file (and rebuild).

    var Load = xdc.useModule('ti.sysbios.utils.Load');
    
    

    Or if you want a more accurate CPU Load (at the expense of a slight performance overhead)

    var Load = xdc.useModule('ti.sysbios.utils.Load');
    Load.taskEnabled = true;
    Load.swiEnabled = true;
    Load.hwiEnabled = true;

    Todd

  • Hi Todd

    What I'm really after is the data available from the ti.sysbios.utils.Load module.   The Load module reports execution times and load information for threads in a system.  This is exactly the info I need.  I am OK to access this with Classic or advanced view.

    Since the Load module does not appear in the Viewable Modules list, I suspect somehow this module is not enabled in my application.   Do you have any guidance to pass along.

  • Looks like we posted at the same time:) See my previous post.

  • Indeed, our bytes passed each other in the matrix.   

    I'm off to some other business right now.  I'll get back to you tomorrow on this.

    Thanks!

  • Hi Todd

    I am now able to get the CPU loading figures.  

    As a side note, when I first start ROV, I get the can't connect failure.  I cancel that and then connect again and it works.  I think this is repeatable.  

    Now, I want more that just the total CPU loading of the DSP.   I would like to get the loading numbers for each thread in the application so I can diagnose which threads are taking the most time.  I don't see this data in the Load module part of ROV.  Section 9.2 of the SYS/BIOS user's guide suggests this data is available.  Can you point me in the proper direction.

    Thanks.

  • Hi Richard,

    The easiest way to get this is to add a LoggerBuf instance that will receive the Load log records. You can add something like this to your .cfg:

    var Load = xdc.useModule('ti.sysbios.utils.Load');
    Load.taskEnabled = true;
    Load.swiEnabled = true;
    Load.hwiEnabled = true;
    
    BIOS.logsEnabled = true;
    
    var LoggerBuf = xdc.useModule("xdc.runtime.LoggerBuf");
    var Task = xdc.useModule('ti.sysbios.knl.Task');
    var LoggerBufParams = new LoggerBuf.Params();
    LoggerBufParams.numEntries = 256;
    Load.common$.logger = LoggerBuf.create(LoggerBufParams);
    Load.common$.diags_USER4 = Diags.ALWAYS_ON;
    
    

    This enables the Load module and the BIOS logging. It creates and assigns a LoggerBuf to the Load module. It turns on the logging for the Load module also. 

    This produces

    You have to match up the task handles. Then the first number is time spent in the task and the second is the total time of the sample. So 44305125/68355045 = 64.8%. My test only has the task0 running, so the task CPU load should be very close to the CPU Load. The Hwi and Swi have the same two args, so a bit of time is spent there also (e.g. clock ticks, scheduler).

    You can use the UIA product and CCS System Analyzer to get nice graphical CPU charts on CCS. It uses the same idea, but there is the ti.uia.sysbios.LoggingSetup module that does much of the above work for you to set up the logging.

    Todd

  • Thanks Todd.  I am examining my thread stats now.  Your assistance has been invaluable!!