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.

[参考译文] AM6548:ICSSG PRU 任务管理器

Guru**** 2553260 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/882551/am6548-icssg-pru-task-manager

器件型号:AM6548

您好!

我们正在尝试使用新的任务管理器来抢占另一个 ICSSG 模块的一个 PRU。

我们设置了一个中断(例如主机2或主机12)、可以在任务管理器上以事件128或136的形式接收中断。

接收到的中断显示在接收 PRU 模块中的任务管理器的 GLOBAL_STATUS 寄存器中、不过没关系。

GLOBAL_CFG 寄存器使能子任务并将模式设置为2 (通用)。

但 PRU 的 PC (程序计数器)不变。 Global_status 显示任务1或任务2已激活、但程序计数器不反映这一点。

我尝试了 ICSSG 模块上的所有4个任务管理器(PRU0/RTU0/PRU1/RTU1以确保手册中的地址不是错误的)、没有任何其他影响。

XIN 252或 xchg 253 (实际上应该由硬件完成)也没有任何影响。

PRU 控制寄存器中的 TS_ENABLE (任务交换)位为0。 由于它是只读的、因此无法使用该寄存器激活任务交换。

我找不到任务管理器的有效示例代码。 你可以帮帮我吗?

此致、

Sebastian

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

    塞巴斯蒂安

    我正在查看相关文档/示例、并将很快返回给您。

    此致、

    Dave

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

    您好、Dave、

    您是否找到了有关使用 PRU 任务管理器的任何信息?

    此致、

    Sebastian

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

    Sebastien、

    是的、我为您提供了一些指导。 您是否在 PRU 内核中启用了任务切换? 这是 TSEN 1 指令 (TSEN 0禁用)。  您可以使用以下宏:

    ;启用

    M_PRU_TM_ENABLE .macro

      字0x32800000

      ;tsen 1.

      endm

    ;禁用

    M_PRU_TM_disable .macro

      字0x32000000

      ;tsen 0

      endm

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

    塞巴斯蒂安

    请告诉我您是否能够获得此查询的其他信息。

    此致、

    Dave

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

    谢谢、Dave!

    有了这些宏、任务管理器现在就开始工作了!

    有关其他论坛用户使用任务管理器的更多提示

    • 在将任务例程地址放入任务管理器寄存器之前、必须将其除以4
    • 第二个切片(PRU1)显示了 Code Composer Studio 寄存器视图中第一个切片(PRU0)的任务管理器(CCS 中存在错误);由于两个切片都使用相同的中断、请小心、您正在使用哪一个任务管理器
    • 在 ICSSG 之间链接中断控制器时、如果接收 ICSSG 的中断设置为脉冲类型、则事件更容易处理
    • 任务管理器将本地中断作为脉冲中断处理、因此在激活任务管理器时、在开始时清除所有挂起的中断(或者、如果任务管理器应对这些中断做出反应、则禁用并启用这些中断)
    • 任务管理器需要一个 xin 252命令来生成执行。 由于任务可以随时运行、xin 252命令不能使用寄存器、否则程序可以使用该寄存器;编译长度为0的 xin、但实际上长度为128、具有奇怪的副作用。 一个更好的变通办法似乎是读入"&R31.B3, 1"、它不会创建事件、因为位5未设置;替代办法是保留一个寄存器、仅用于生成任务(它似乎总是由 xin 填充为0)

    此致、

    Sebastian