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、系统分析器:使用不带 NDK 的 UIA

Guru**** 2558250 points
Other Parts Discussed in Thread: SYSBIOS

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/700819/rtos-66ak2g12-uia-system-analyzer-use-uia-without-ndk

器件型号:66AK2G12
Thread 中讨论的其他器件:SYSBIOS

工具/软件:TI-RTOS

您好!

我正在研究一个在 ARM 内核上使用 Linux 的应用程序和在 c66x 上使用 RTOS 的应用程序。  对于我的应用、我必须运行 Linux 才能使 DSP 执行大量操作。  我正在尝试对 DSP 进行一些评测、以了解我的利用率是什么样子、但我只能使传统的"加载"工具正常工作。

我的版本号:
BIOS 版本6.52.00.12
UIA 版本2.21.02.07
IPC 版本3.47.00.00
PDK K2G 版本1.0.8
PSDK RTOS K2G 版本4.02.00.09
XDC 工具3.50.03.33_CORE

我首先尝试添加 UIA 模块。  我在 Properties->CCS Generation->Products 中启用了该产品,然后通过 XGConf 将其添加。  我启用了日志记录设置、服务管理器、RTA 和记录器停止模式、希望执行基本的停止模式 JTAG 分析。  这将不会生成、因为它需要 NDK。  我添加了 NDK、并开始遇到一系列存储器映射问题(内存不足等)。  然后、我了解到可以在没有 NDK 支持的情况下构建 UIA、所以我做到了这一点。  现在、当我尝试构建时、链接器无法找到一些符号:  

未定义对"ti_UIA_SYSBIOS_Adaptor_clockFxn__E"的引用
未定义对"ti_UIA_SYSBIOS_Adaptor_Module_Started_E_E"的引用
未定义对"ti_UIA_SYSBIOS_Adaptive_rxTaskFxn__E"的引用
未定义对"ti_UIA_SYSBIOS_Adaptive_transferAgentTaskFxn__E"的引用

建议的解决方案(通过工具)是将"var ti_UIA_SYSBIOS_Adaptor = xdc.useModule('ti.uia.sysbios.Adaptor');"添加到我的 cfg 中、但即使添加了该项、问题仍然存在。

在一天的努力之后、我删除了所有这些内容并使用了 SYSBIOS 加载工具。  这为我提供了一个基本的负载百分比、这很有用、但最好拥有一整套 UIA 工具。

我们非常感谢您提供的任何指导。

Jeff

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Jeff:
    我看到您使用的是 BIOS、IPC 和 XDC 工具的正确版本。 但是、您能否验证以下内容:
    C6x 版本8.1.2或更高版本
    ARM 版本16.9.0或更高版本
    arm gcc-arm-none-eabi-6-2017-q1-update 或更高版本

    如果可能、您还可以尝试使用最新的 Processor SDK RTOS 版本(4.03)进行构建吗?

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我有:
    TI-CGT-C6000_8.2.2
    TI-CGT-ARM_16.9.3
    GCC-ARM-NONE - eabi-6-2017-Q1-update

    我在重建 UIA 时没有为 ARM 指定代码生成、因为我没有在 ARM 上运行 RTOS。 我仅使用指定的 C6x 代码生成重建。

    我将尝试安装新版本的 RTOS 并查看我获得的结果。

    Jeff
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Jeff:

    您的测试是否有任何结果?

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Yordan、

    我还需要安装新的 SDK。 下载花了一天的时间、因此我希望今天可以开始。

    Jeff
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    新产品不想安装在我的 CCS 版本上、因此我要安装新版7.4
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我已通知设计团队在此进行详细介绍。

    此致、
    Yordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Jeff、

    我相信添加以下内容:

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

    您的.cfg 文件中应该已经完成了技巧。

    您能否共享在重新生成上述更改后生成的"linker.cmd"文件?

    您可以在项目的"Debug"或"Release"目录中的"configPkg"目录中找到 linker.cmd 文件。

    此文件应包含链接中包含适配器库的行。

    您是否还会提供.cfg 文件?

    Alan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Alan、

    感谢您的回答。

    一些发现:

    我最近安装了 RTOS SDK 4.3并移植了我的应用。  我删除了"load"模块、添加了 LoggingSetup、RTA、ServiceMgr、LoggerStopMode。  我创建了 LoggerStopMode 的实例,并将 ServiceMgr 传输类型设置为 TransportType_file。  除此之外、我没有做任何更改。  软件构建过程没有错误、但当我初始化 UIA 并尝试启动数据收集时、我收到错误报告、指出没有有效的传输。

    我发现我有不同的结果是很奇怪的、因此我打开了使用 SDK (4.2)旧安装的程序的旧副本。  我遇到了与以前相同的错误、即使是使用相同的 cfg 文件也是如此。  然后我确定可能是由于自己编译 UIA、因此我编译了随 SDK 新安装一起提供的 UIA 副本。  编译器现在报告的错误与以前相同。

    查看链接器脚本、没有提到适配器库、我也不确定在我重建 UIA 库时它是否已重建。  我在重建过程中遵循的说明位于源文件的 docs 部分中 spruh43f.pdf 的末尾。

    根据要求、所附的是 linker.cmd 和 app.cfg。  我还添加了修改后的 UIA.Mak。  我已经尝试使用和不使用 IPC 进行构建、但始终没有 NDK。

    Jeffe2e.ti.com/.../filesForForum.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Jeff、

    我咨询了当地的 UIA 专家。
    您似乎不必重建 UIA。
    但是、您应该对 app.cfg 文件进行以下修改:

    //删除以下3行:
    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');

    //以下3行是不必要的。 LoggingSetup 将创建
    //适合您的 LoggerStopMode 对象。
    var logerStopMode0Params =新 LoggerStopMode.Params();
    loggerStopMode0Params.instance.name ="loggerStopMode0";
    program.global.logerStopMode0 = LoggerStopMode.create (logerStopMode0Params);

    //删除 ServiceMgr 配置:
    ServiceMgr.transportType = ServiceMgr.TransportType_file;

    希望这解决了这个问题。

    Alan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    它工作正常! 我想我只需要尝试减少工作。