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.

[参考译文] LP-EM-CC1354P10:外部构建的可执行文件、ROV 和 FreeRTOS

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1289079/lp-em-cc1354p10-externally-built-executable-rov-and-freertos

器件型号:LP-EM-CC1354P10
主题中讨论的其他器件:SysConfig
  • CCS 版本12.3.0
  • SDK 版本 simplelink_cc13xx_cc26xx_sdk_7_10_00_98

我与一位在 CCS 外部构建应用程序(不是 CCS 管理项目)的客户合作。 然后、这些连接器手动创建目标配置、并将外部应用程序(ELF 格式的*。out、使用 GCC 构建)加载到 CCS 中连接的目标。

此时、它们打开了 Tools -> Runtime Object View ,只是它不会显示我们期望的所有 FreeRTOS 相关模块。 相反、它显示的就是:

外部构建的工程包含 SysConfig、并且正在生成 SysConfig_c.ROV.xs 文件。 我们随后发现了以下指令:

https://software-dl.ti.com/ccs/esd/documents/rov_guide/html/src / ROV.html#controlling-the-module-list

注意:ROV 通过检查主机上的.ROV.xs 文件来查找模块列表。 在构建 TI-RTOS 应用程序时、该文件会在应用程序配置项目树的子目录中自动生成。 如果在连接到 ROV 时指定了可执行文件的路径(而不是使用当前正在 CCS 中调试的程序)、ROV 会在包含可执行文件的同一目录和 configPkg/packages/cfg 子目录中查找.ROV.xs 文件

但是、这些指令似乎实际上并不起作用。 我们的努力没有成功。 我们缺少什么吗?

谢谢。

斯图尔特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    6105285 说:
    但是,这些说明实际上并不起作用。 我们的努力没有成功。 我们缺少什么吗?

    我当时正在讨论这个问题、但缺少的是 ROV 需要知道正在使用哪个 SDK 以及它在哪里。 在工程调试期间、器件会知道工程通常指定了 SDK。 对于无工程调试(我在这里假设是这样)、它知道 out 文件和 xs 文件在哪里、但不知道 SDK 信息。

    为什么 SDK 信息很重要? 如果打开*。xs 文件、则会看到 SDK 中其他*。js 文件的一组相对路径。 如果 ROV 不知道它使用的是哪种 SDK 以及它在哪里、那么它就找不到这些文件、你就得到了你所看到的问题。

    /*
     *  ======== syscfg_c.rov.xs ========
     *  This file contains the information needed by the Runtime Object
     *  View (ROV) tool.
     *
     *  Specifically, this file names the C-ROV implementation files declared
     *  by the modules that are part of the app's configuration.  In the
     *  future this file will also contain a serialization of corresponding
     *  module configuration parameters which can be used by the ROV provided
     *  views.
     *
     *  DO NOT EDIT - This file is generated by the SysConfig tool.
     */
    var crovFiles = [
        "kernel/freertos/rov/heap.rov.js", /* /freertos/FreeRTOS ROV support */
        "kernel/freertos/rov/helper.rov.js", /* /freertos/FreeRTOS ROV support */
        "kernel/freertos/rov/mutex.rov.js", /* /freertos/FreeRTOS ROV support */
        "kernel/freertos/rov/queue.rov.js", /* /freertos/FreeRTOS ROV support */
        "kernel/freertos/rov/semaphore.rov.js", /* /freertos/FreeRTOS ROV support */
        "kernel/freertos/rov/stack.rov.js", /* /freertos/FreeRTOS ROV support */
        "kernel/freertos/rov/task.rov.js", /* /freertos/FreeRTOS ROV support */
        "kernel/freertos/rov/timer.rov.js", /* /freertos/FreeRTOS ROV support */
        "kernel/freertos/rov/clock.rov.js", /* /freertos/dpl/Settings ROV support */
        "kernel/freertos/rov/exception.rov.js", /* /freertos/dpl/Settings ROV support */
        "kernel/freertos/rov/hwi.rov.js", /* /freertos/dpl/Settings ROV support */
        "kernel/freertos/rov/nvic.rov.js", /* /freertos/dpl/Settings ROV support */
    ];
    


    一种解决方法是手动将所有绝对路径替换为相对路径:

    /*
     *  ======== syscfg_c.rov.xs ========
     *  This file contains the information needed by the Runtime Object
     *  View (ROV) tool.
     *
     *  Specifically, this file names the C-ROV implementation files declared
     *  by the modules that are part of the app's configuration.  In the
     *  future this file will also contain a serialization of corresponding
     *  module configuration parameters which can be used by the ROV provided
     *  views.
     *
     *  DO NOT EDIT - This file is generated by the SysConfig tool.
     */
    var crovFiles = [
        "C:/ti/simplelink_cc13xx_cc26xx_sdk_7_10_01_24/kernel/freertos/rov/heap.rov.js", /* /freertos/FreeRTOS ROV support */
        "C:/ti/simplelink_cc13xx_cc26xx_sdk_7_10_01_24/kernel/freertos/rov/helper.rov.js", /* /freertos/FreeRTOS ROV support */
        "C:/ti/simplelink_cc13xx_cc26xx_sdk_7_10_01_24/kernel/freertos/rov/mutex.rov.js", /* /freertos/FreeRTOS ROV support */
        "C:/ti/simplelink_cc13xx_cc26xx_sdk_7_10_01_24/kernel/freertos/rov/queue.rov.js", /* /freertos/FreeRTOS ROV support */
        "C:/ti/simplelink_cc13xx_cc26xx_sdk_7_10_01_24/kernel/freertos/rov/semaphore.rov.js", /* /freertos/FreeRTOS ROV support */
        "C:/ti/simplelink_cc13xx_cc26xx_sdk_7_10_01_24/kernel/freertos/rov/stack.rov.js", /* /freertos/FreeRTOS ROV support */
        "C:/ti/simplelink_cc13xx_cc26xx_sdk_7_10_01_24/kernel/freertos/rov/task.rov.js", /* /freertos/FreeRTOS ROV support */
        "C:/ti/simplelink_cc13xx_cc26xx_sdk_7_10_01_24/kernel/freertos/rov/timer.rov.js", /* /freertos/FreeRTOS ROV support */
        "C:/ti/simplelink_cc13xx_cc26xx_sdk_7_10_01_24/kernel/freertos/rov/clock.rov.js", /* /freertos/dpl/Settings ROV support */
        "C:/ti/simplelink_cc13xx_cc26xx_sdk_7_10_01_24/kernel/freertos/rov/exception.rov.js", /* /freertos/dpl/Settings ROV support */
        "C:/ti/simplelink_cc13xx_cc26xx_sdk_7_10_01_24/kernel/freertos/rov/hwi.rov.js", /* /freertos/dpl/Settings ROV support */
        "C:/ti/simplelink_cc13xx_cc26xx_sdk_7_10_01_24/kernel/freertos/rov/nvic.rov.js", /* /freertos/dpl/Settings ROV support */
    ];

    这似乎对我有用。  

    如果客户不愿意修改生成的文件、他们也可以创建一个仅用于调试的虚拟 CCS 工程、并将*。out 和*。xs 复制到该工程、然后将 SDK 与工程相关联。  

    总之、这些权变措施不太好、所以我之前和 IDE 团队讨论过、我们有一些想法来改进 ROV 在 CCS Theia 中的工作方式。

    谢谢

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

    Ki:

    这非常有帮助。 我尝试了"虚拟 CCS 项目"的建议。 如果您忽略某些警告并手动启动目标配置、则工作正常。

    我确实认为 IDE 团队应该花些时间来讨论这个无项目的调试方案。 它在某些标准协议栈(Matter、OpenThread 等)中变得越来越常见。 为了将编译环境设置为基于 IDE 外部的命令行(CMake、GNU make、Ninja 等)、因此客户将越来越多地面临此问题。

    谢谢。

    斯图尔特

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我认为 IDE 团队应该花些时间来处理此无项目调试方案

    同意。 我提交了一个 Jira 来跟踪这一努力。 请注意、只有当我们开始(缓慢)离开 CCS Eclipse 时、对 ROV 所做的任何改进才会在 CCS Theia 中实施。