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/TMDSEVM6678:如何控制 IPC 所用 SWI 的优先级?

Guru**** 2614265 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/614005/rtos-tmdsevm6678-how-to-control-priority-of-swi-used-for-ipc

器件型号:TMDSEVM6678

工具/软件:TI-RTOS

我在内核0和1上运行 SYS/BIOS (6.46.4.53)、并使用 IPC (3.44.1.01)在这两个内核之间进行通信。 我正在使用编译器 TI v8.1.3和 XDCtools 3.32.1.22_core。

IPC 的 SWI 似乎以最大 SWI 优先级(15)运行、因为我的其他 SWI 之一 Swi.Servo_vSwi ()也处于优先级15、并且显然不能抢占 IPC SWI (请参阅下面的执行分析屏幕截图)。  这会导致我的高优先级 Swi.Servo_vSwi ()上出现明显的"抖动"、而我的应用无法容忍这种抖动。  因此、我假设我需要降低 IPC SWI 的优先级。

有什么建议吗?

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

    我已将此事转发给 IPC 专家。 他们的反馈应发布在此处。

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

    Eric、

    您是否尝试通过更新 packages/ti/sdo/ipc/transports/TransportShm.c 中的 TransportShm_instance_init ()来降低 TransportShm_swifxn 任务? 例如

      Swi_Params_init (&swiParams);

      swiParams.arg0 =(UARg) obj;

      swiParams.priority = 14;

      Swi_constructure (swi_struct (swiHandle)、

            (SWI_FuncPtr) TransportShm_swifxn、

            swiParams、EB);

    此致、Garrett

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

    您好、Garrett、

    感谢您的建议!  我找到了您提到的代码并进行了更改。  遗憾的是、我无法成功重建 IPC 库(在此之前、我从未尝试过重建任何 SDK)。  我会继续尝试。

    此致、Eric

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我仍然无法重建 IPC 库。 以下是我对 IPC products.mak 文件的修改。

    返厂维修= C:/ti
    平台= C6678
    destdir = C:/Temp/Temp
    XDC_INSTALL_DIR =$(返厂维修)/xdctools_3_32_02_25_core
    BIOS_install_DIR =$(depot)/BIOS_6_46_04_53
    TI.targets.elf.c66 =$(depot)/ccsv7/tools/compiler/ti-cgt-C6000-8.1.3

    然后、根据安装指南、使用以下命令开始构建:

    C:\ti_min\ipc_3_44_01_01>make -f IPC-BIOS.mak all

    然后、它输出大约580行状态、但随后完全停止、最后几行输出为:

    从 package/cfg/instrumented_pe66.cfg 配置 instrumented.pe66 ...
    正在生成自定义 ti.sdo.ipc 库 makefile....
    正在开始构建库源...

    是否有任何关于这可能会出现什么问题的想法?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Eric、

    您是否尝试使用 xdctools_3_32_01_22_core (来自 Processor SDK 3.3版本)而不是 xdctools_3_32_02_25_core?

    PRSDK 3.3组件版本可在 processors.wiki.ti.com/index.php 上找到

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

    根据您的建议、我设置 XDC_INSTALL_DIR =$(depot)/xdctools_3_32_01_22_core

    我运行了"make -f IPC-BIOS.mak clean"、然后运行"make -f IPC-BIOS.mak all"

    遗憾的是,make 文件仍然挂起在同一输出行“正在开始构建库源...”

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

    >C:\ti_min\ipc_3_44_01_01

    您是否在 Windows 计算机中构建库? 请在 Linux 上试用。

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

    您好、Garret、

    感谢您的建议。 我们在这里几乎是一家 Windows 商店。 我的 Linux 经验相对较少、我在 Linux 上使用 TI 的经验是 zilch。 但我将研究如何尝试在 Linux 上构建 IPC。

    真正令人愉快的是、拥有 IPC 模块的优秀人员可以创建一个新的 XDC 属性来控制这种情况、其内容如下:

    VAR IPC = xdc.useModule('ti.sdo.ipc.Ipc');
    IPC.swiPriority = 14;

    文件中。

    此致、Eric

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

    帮助!  我仍然非常渴望解决这个问题!

    我有一台新 PC、一台新的操作系统(Win10 Enterprise)、并更新了处理器 SDK 和 CG 工具...

     IPC 3.4.0.0

     BIOS 6.52.00.12

     XDCTOOLS 3.50.03.33内核

     TI-CGT-C6000_8.2.2

    但在 Windows 下构建 IPC 仍然失败。  它仍然在同一输出行"开始构建库源..."处"挂起"

    正如 Garrett 建议的那样,我尝试了 Linux,但我甚至没有错误地完成 Processor SDK 安装:-(

      REF: 支持/DSP/C6000_multi-core_DSP/f/639/t/633182

    那么、我回到 Windows。  还有人是否曾使用 Windows 成功重建 IPC?

    我附加了一个.zip 文件、其中包含 products.mak 文件以及构建的控制台输出。

    e2e.ti.com/.../1205.Files.zip

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

    尊敬的 Eric:

    我成功地使用您的 products.mak 文件清理和构建了 IPC 我确实注意到"开始构建库源"这一步骤需要大约5分钟、因此请确保您有足够的时间来完成、尤其是在您的计算机上运行多个程序/进程时。

    此外、我注意到在日志文件中、您正在从以下目录运行 gmake:C:\ti\ipc_3_47_00>\ti\xdctools_3_50_03_33_core\

    最后、我按如下方式设置了我的目录:
    C:\ti\xdctools_3_50_03_33_core
    C:\ti\ipc_3_47_00_00

    我正在运行 IPC_3_47_00_00文件夹中的 gmake 命令。

    我建议像我一样设置目录、并从 IPC 文件夹中再次运行构建。 我不相信这会导致这种情况发生、但值得一试。

    此致、
    Sahin

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

    谢谢、您的参与非常接近!

    >我建议像我一样设置您的目录
    >在我的末尾,我按如下方式设置了目录:
    > C:\ti\xdctools_3_50_03_33_core
    > C:\ti\ipc_3_47_00_00

    我的文件夹是相同的。 我的工作文件夹是 C:\ti\ipc_3_47_00_00、我正在调用 C:\ti\xdctools_3_50_03_33_core 文件夹中的 gmake.exe。 然后、我将 gmake.exe 复制到 IPC 文件夹中并从该文件夹运行、但这并没有改善任何效果。

    但是、然后我意识到、我仍然在路径中有 MinGW 函数(我之前一直在将 MinGW\make 用于我的编译)。 因此、我启动了一个新的 shell、路径中没有 MinGW 函数、现在 IPC-BIOS.mak 的 gmake 编译完成了、没有任何障碍!

    感谢您向我介绍 gmake、因为它让我想到了 MinGW 实用程序!

    因此、明天我将测试此修改后的 IPC 是否会实际降低我的 SWI 优先级、如果是、则会在解决后关闭此问题。

    再次感谢,Sahin!

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

    我现在已成功修改了 IPC SWI 的优先级(感谢 Garrett Ding)、并成功重建了 IPC 库(感谢 Sahin Okur)。

    经验教训(Windows):

      1) 1)路径中没有任何 MinGW / MSYS 函数、

      2) 2)始终使用 XDCTOOLS 随附的 gmake.exe 来构建库

    再次感谢 Garrett 和 Sahin!

    最后、我仍然希望有一个 XDC 配置变量来控制这一点、这样我就不必构建和维护自定义 IPC 库。

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

    很高兴听到这个问题得到解决!

    此致、
    Sahin