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/PROCESSOR-SDK-AM335X: Labels of objects are not shown in the ROV window.

Part Number: PROCESSOR-SDK-AM335X

Tool/software: Code Composer Studio

Hello,

This  (the task name does NOT show up in the ROV):

https://e2e.ti.com/support/legacy_forums/embedded/tirtos/f/355/t/167143

I've already done everything it tells me.  It's "closed" as solved, but it's not.

I am on Windows 10, 64 bit,  Using CCS 7.2, and XDC 3_32_02_25   (the post claims it was fixed in XDC 3_25...  )

I just blindly did this, whatever it is (because finding doc on this Java stuff in the CFG is nearly impossible)

Task.common$.namedInstance = true;

Defaults.common$.namedInstance = true;

But that doesn't work either.

The code to create the task is:

Int main() {
    Task_Handle flashtask;
    Task_Params flashParams;
    Error_Block flashErrorBlock;

    char flashTaskName[12] = "Flash";

    Error_init(&flashErrorBlock);
    Task_Params_init(&flashParams);
    flashParams.priority = 6;
    flashParams.instance->name = flashTaskName;
    flashtask = Task_create(FlashTask, &flashParams, &flashErrorBlock);
    if (flashtask == NULL) {
        UARTprintf("Network Task_create() failed!\n");
        BIOS_exit(0);
    }

So the string "flashTaskName" is persistent (never goes out of scope).  But I never get a label.

There is a member flashParams.instance->_size   but I have no idea what it is.  I can't find anything on it.  Is it supposed to be a string size?  No one else is using it.

Ultimately, this project has over a dozen tasks, many created dynamically, so the "CFG" file is is of no value anyway.

When will this be fixed?  Or documented correctly so we can know what to do?

  • Hi Christopher,

    Please try the following

        Error_init(&flashErrorBlock);
        Task_Params_init(&flashParams);
        flashParams.priority = 6;
        flashParams.instance->name = "flash";
        flashtask = Task_create(FlashTask, &flashParams, &flashErrorBlock);
    
    
    When BIOS_start is called, the stack is reset and used for the Hwi/Swi system stack. Since flashTaskName is a local variable for main() is it over-written.
    Todd
  • As an update...  do further research with these code fragments (and leaving the CFG settings in place, whatever they are)

    This does NOT work.

    Int main() {
        Task_Handle flashtask;
        Task_Params flashParams;
        Error_Block flashErrorBlock;
    
        char flashTaskName[12] = "Flash";
    
        Error_init(&flashErrorBlock);
        Task_Params_init(&flashParams);
        flashParams.priority = 6;
        flashParams.instance->name = flashTaskName;
        flashtask = Task_create(FlashTask, &flashParams, &flashErrorBlock);
        if (flashtask == NULL) {
            UARTprintf("Network Task_create() failed!\n");
            BIOS_exit(0);
        }

    But apparently this does.

    char flashTaskName[12] = "Flash";
    
    Int main() {
        Task_Handle flashtask;
        Task_Params flashParams;
        Error_Block flashErrorBlock;
        Error_init(&flashErrorBlock);
    
        Task_Params_init(&flashParams);
        flashParams.priority = 6;
        flashParams.instance->name = flashTaskName;
        flashtask = Task_create(FlashTask, &flashParams, &flashErrorBlock);
        if (flashtask == NULL) {
            UARTprintf("Network Task_create() failed!\n");
            BIOS_exit(0);
        }

    Alternately, this also works:

    Int main() {
        Task_Handle flashtask;
        Task_Params flashParams;
        Error_Block flashErrorBlock;
    
    static char flashTaskName[12] = "Flash";
    
        Error_init(&flashErrorBlock);
        Task_Params_init(&flashParams);
        flashParams.priority = 6;
        flashParams.instance->name = flashTaskName;
        flashtask = Task_create(FlashTask, &flashParams, &flashErrorBlock);
        if (flashtask == NULL) {
            UARTprintf("Network Task_create() failed!\n");
            BIOS_exit(0);
        }

    So, I have no idea why this would be designed that one would work, and the other doesn't. One is on the stack, one is on the heap, the third is also in the heap) but both never go out of scope.

    The implications of dynamically declaring a C++ object on the stack vs "new"-ing off the heap creates all kinds of problems.  No one thinks these things through?? 

    On the other hand,  I can only get the "classic" ROV to work anyway.  For the "other" (the one that is a grid icon) ROV, I get this:

    I did a search, and there is NO file named "xdc.rov.monserver" anywhere in the XDC_3_32...  directories.  So apparently TI won't give you one.  

    I downloaded and installed packages per the tutorials that are on-line.  So I have no idea where it would be.

    Where do I get this file?  Did TI even make one for this version of XDC? 

    (Do I mark this as "resolved my issue"?   I guess so.  I'll have to solve the ROV problem somewhere else)

  • Todd,

    See my post that crossed paths with yours.  This is not a friendly design.  It creates issues as I described (which then people spend hours or days trying to figure out what's going on)

  • The newer Runtime Object View requires XDCtools 3.50 or higher. Please note, that moving to a newer XDCtools will require that you use a newer SYS/BIOS.

    Todd

  • Todd,

    Yeah... no.  The existing project is way to big to just arbitrarily change the XDC, RTOS, etc...

    I am trying to profile a test version of what I am integrating into the main project.  I imported a simplelink library and it doesn't perform at rated speed.  I want to see the execution graph (Which, 3 years ago, I saw one of Scott's tutorials for the TIVA...  and have long since forgotten how to find the settings)

    In the classic viewer I can't view an execution graph.  Apparently I have to hack the CFG file to enable UIA.  Well, the only doc I can find it 6+ years old, and doesn't identify which versions of anything is applies to (but it is clearly NOT compatible with CCS 7, and the version of XDC we are using, because it crashes the build).

    And I'll bet any other doc I can find will be too new for my environment as well.

  • Hi Christopher,

    I'd recommend you open a new thread about Execution Graph. We try to keep a thread about a single issue to make them easier to read.

    Todd