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.

RTOS/66AK2G12: UIA, System Analyzer: Use UIA without NDK

Part Number: 66AK2G12
Other Parts Discussed in Thread: SYSBIOS

Tool/software: TI-RTOS

Hello,

I am working on an application that uses Linux on the ARM core and RTOS on the c66x.  For my application, I have to have Linux running in order for the DSP to be doing much of anything.  I am trying to do some profiling on the DSP to see what my utilization is looking like, but I can only get the legacy "load" tool working.

My version numbers:
Bios version 6.52.00.12
UIA Version 2.21.02.07
IPC Version 3.47.00.00
PDK K2G Version 1.0.8
PSDK RTOS K2G Version 4.02.00.09
XDC Tools 3.50.03.33_core

I first attempted to add the UIA module.  I enabled the product in Properties->CCS General->Products, then added it through XGConf.  I enabled Logging Setup, Service Mgr, RTA, and Logger Stop Mode, hoping to do basic stop mode JTAG profiling.  This would not build because it required the NDK.  I added the NDK and started to run into a bunch of memory map issues (running out of memory, etc).  I then learned I could build UIA without the NDK support, so I did that.  Now when I try to build, the linker cannot find some symbols: 

Undefined reference to 'ti_uia_sysbios_Adaptor_clockFxn__E'
Undefined reference to 'ti_uia_sysbios_Adaptor_Module_startup__E'
Undefined reference to 'ti_uia_sysbios_Adaptor_rxTaskFxn__E'
Undefined reference to 'ti_uia_sysbios_Adaptor_transferAgentTaskFxn__E'

The recommended solution (by the tools) is to add "var ti_uia_sysbios_Adaptor = xdc.useModule('ti.uia.sysbios.Adaptor');" to my cfg, but even with that addition the problems still remain.

After wrestling with this for a day, I removed all of this and used the sysbios load tool.  That gave me a basic load percentage, which is useful, but it would be nice to have the full set of UIA tools.

Any guidance that can be provided is appreciated.

Jeff

  • Hi Jeff,
    I see that you use the correct versions of BIOS, IPC & XDC Tools. However, can you verify the following:
    C6x version 8.1.2 or later
    ARM version 16.9.0 or later
    ARM gcc-arm-none-eabi-6-2017-q1-update or later

    Also can you try building with the latest Processor SDK RTOS version (4.03), if possible?

    Best Regards,
    Yordan
  • I have:
    ti-cgt-c6000_8.2.2
    ti-cgt-arm_16.9.3
    gcc-arm-none-eabi-6-2017-q1-update

    I did not specify the codegen for the ARM when rebuilding UIA since I am not running RTOS on the ARM. I rebuilt only with the c6x codegen specified.

    I will attempt to install the new version of RTOS and see what results I get.

    Jeff
  • Hi Jeff,

    Do you have any result from your tests?

    Best Regards,
    Yordan
  • Yordan,

    I have yet to install the new SDK. It took the better part of a day to download, so hopefully I can get it going today.

    Jeff
  • New products don't want to install on my version of CCS, so I'm installing a fresh copy of 7.4
  • Hi,

    I've notified the design team to elaborate here.

    Best Regards,
    Yordan
  • Jeff,

    I believe adding the line:

       var ti_uia_sysbios_Adaptor = xdc.useModule('ti.uia.sysbios.Adaptor');

    to your .cfg file should have done the trick.

    Can you share the resulting "linker.cmd" file that got generated after rebuilding with the above change?

    You can find the linker.cmd file in your project's "Debug" or "Release" directory within the "configPkg" directory.

    This file should contain a line that includes the Adaptor library in the link.

    Would you please also provide your .cfg file?

    Alan

  • Alan,

    Thank you for your response.

    Some findings:

    I recently installed RTOS SDK 4.3 and have ported my application.  I removed the "load" module, added LoggingSetup, Rta, ServiceMgr, LoggerStopMode.  I created an instance of LoggerStopMode and set the ServiceMgr Transport Type to TransportType_FILE.  Apart from that, I did not make any changes.  The software built without errors, but when I initialized UIA and tried to start data collection, I got errors reporting that there was no valid transport.

    I found it odd that I had a different result, so I opened the old copy of the program that used the old install of the SDK(4.2).  I got the same errors as before, even with the same cfg file.  I then determined that it may be due to compiling UIA myself, so I compiled the copy of UIA that came with the new install of the SDK.  The compiler now reports the same errors as before.

    Looking at the linker script, there is no mention of the Adaptor library, nor am I certain that it got rebuilt when I rebuilt the UIA library.  The instructions I followed for the rebuild are located at the end of spruh43f.pdf located in the docs section of the source.

    As requested, attached are linker.cmd and app.cfg.  I have also added my modified uia.mak.  I have tried building with and without IPC, but always without NDK.

    JefffilesForForum.zip

  • Jeff,

    I checked with the local UIA expert.
    It appears that you should NOT have to rebuild UIA.
    But you should make the following modifications to your app.cfg file:

    // Remove the following 3 lines:
    var Rta = xdc.useModule('ti.uia.services.Rta');
    var ServiceMgr = xdc.useModule('ti.uia.runtime.ServiceMgr');
    var ti_uia_sysbios_Adaptor = xdc.useModule('ti.uia.sysbios.Adaptor');

    // The following 3 lines are unnecessary. LoggingSetup will create
    // the LoggerStopMode object for you.
    var loggerStopMode0Params = new LoggerStopMode.Params();
    loggerStopMode0Params.instance.name = "loggerStopMode0";
    Program.global.loggerStopMode0 = LoggerStopMode.create(loggerStopMode0Params);

    // Remove ServiceMgr configuration:
    ServiceMgr.transportType = ServiceMgr.TransportType_FILE;

    Hopefully this resolved the issue.

    Alan
  • It Works! I guess I just needed to try to do less.