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/TMS320C6745:C6745 HWI

Guru**** 2540610 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/572220/rtos-tms320c6745-c6745-hwi

器件型号:TMS320C6745

工具/软件:TI-RTOS

您好、香榭丽舍

在本例中、我正在调查 PWM 上定义 INT_4的意外脉冲

实际上、当我们查看示波器时、"H"项有时会比预期的更长。

因此、当我们为 HWI_INT4 (GPIO 中断)在中断屏蔽上设置"All"时、这种现象已得到修复。

为了调查此问题、我们希望禁用另一个硬件中断。

实际上,在我们的用例中,我们将 GPIO_Int 和 UART_int 设置为 HWI。

但是、当我们在.tcf 文件中查看另一个 HWI 类别时、系统会自动分配、

HWI_IN11 (_HSRTDX_xmt)、HWI_12 (_HSRTDX_rec)、HWI_RESERVED1、HWI_INT14 (CLK_F_ISR)。

我们尝试禁用这些中断,无法选择“不可”。

您知道如何禁用.tcf 文件保留中断的 HWI 吗?

此致、

KAZ

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

    [引用用户="Kz777"]

    但是、当我们在.tcf 文件中查看另一个 HWI 类别时、系统会自动分配、

    HWI_IN11 (_HSRTDX_xmt)、HWI_12 (_HSRTDX_rec)、HWI_RESERVED1、HWI_INT14 (CLK_F_ISR)。

    我们尝试禁用这些中断,无法选择“不可”。

    您知道如何禁用.tcf 文件保留中断的 HWI 吗?

    [/报价]

    您是否启用了 RTDX?

    如果是、它可能会强制使用 HWI_INT11和 HWI_INT12。

    此致、

    - Rob

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

    尊敬的 Rob:

    谢谢。 首先,我将尝试使用下面的 API 屏蔽 INT4上的另一个 HWI。

     

    bios.HWI_INT4.interruptBitMask

     

    如果我们仍有问题、我会再次向您提出。

     

    此致、

    Kz777

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

    尊敬的 Rob:

    很抱歉我迟到了。

    实际上、当我们设置到下面的模式时、这个问题得到了解决

    bios.HWI_INT4.interruptMask ="全部";

    但是、当我深入检查时、这个问题是由 INT4处理期间的一些 INT14嵌套引起的。

    当我检查 HWI_INT14 (CLK_F_ISR)时、这个 INT 控制 BIOS 定时器。

    是否能够在 INT 4处理期间禁用此 INT14嵌套?

    它是否影响任何系统时钟延迟?

     

    此致、

    KAZ

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

    [报价用户="Kz777"] bios.HWI_INT4.interruptMask ="全部";[/quot]

    您是说 BIOS.HWI_INT4.iIntrMask ="All";?

    我看不到任何名为"interruptMask"的 HWI 字段。

    [报价用户="Kz777"]是否能够在 INT 4处理过程中禁用此 INT14嵌套?[/quot]

    是的。

    您的"All"设置应禁用任何中断来中断 INT4、包括防止 INT14。

    如果要禁用*仅* INT14,请设置:

       BIOS.HWI_INT4.iIntrMask ="位掩码";
       BIOS.HWI_INT4.IntrMask = 0x4000;

    [报价用户="Kz777"]是否影响任何系统时钟延迟?

    由于 INT14是 BIOS CLK 中断、因此如果在屏蔽时触发、屏蔽它将导致处理延迟。  但它会赶上来、因此不应随着时间的推移而出现任何时钟偏差。

    此致、

    - Rob

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

    尊敬的 Rob:

    感谢您的意见。 很抱歉、我错过了输入命令。 您的观点是"收集"。 我只是通过你的直方方式。

    此外、我测试0x4000位掩码方法。

    我们刚才关注的是 INT14掩码对系统的影响。 我将根据您的意见与 IT 客户进行讨论。

    此致、

    kz777

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

    尊敬的 Rob:
    很抱歉、我想再次询问有关 INT14 (BIOS 计时器)的更多详细信息。
    这个 INT14的正确名称是 HWI_INT14 (CLK_F_ISR)。 根据您的估计,该计时器延迟应在屏蔽期间。 之后、它将赶上整个系统。 因此、我想了解更多有关 CLK_F_ISR 详细信息。 您是否有此文档?
    此致、
    Kz777

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

    [引用 USER="Kz777]SO、我想了解 CLK_F_ISR 详细信息。 您是否有此文档?

    否、没有 CLK_F_ISR 的架构文档。

    如您所见、CLK_F_ISR 是 CLK 模块周期性计时器中断的 ISR。  它的主要任务是递增 CLK_R_TIME 变量、这是 CLK 模块的"节拍"时间。  它在运行时不启用中断。

    在递增 CLK_R_TIME 变量后、它会调用 HWI 调度程序、该调度程序运行一个为 CLK 对象提供服务的函数。  其中一个对象是允许跟踪 KNL 节拍并运行基于超时的处理(例如唤醒具有已过期的 SEM_pend()超时的 TSK)的 KNL 对象。  由于 HWI 调度程序被调用、中断被启用以运行配置到 HWI 矢量中的函数。

    如果中断被禁用的时间超过 CLK 节拍周期(通常为1ms)、那么 CLK 节拍就会丢失、从而使 CLK 保持的显示时钟时基偏斜。  但是、如果您的应用正在禁用大于1ms 的中断、那么它最有可能遭受的不仅仅是错过的 CLK 中断。

    此致、

    - Rob

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

    尊敬的 Rob:

    感谢您的意见。 我想对以下内容进行确认、

    >如果中断被禁用的时间超过 CLK 节拍周期(通常为1ms),那么 CLK 节拍就会丢失,从而使 CLK 保持的>显示壁时钟时基偏移。  但是,如果您的应用程序禁用中断的时间超过1ms,那么它最有可能遭受的不仅仅是>错过的 CLK 中断。

    我们的应用用例 INT4 GPIO HWI 的设置为每20微秒。 如果 我们屏蔽 INT14 (CLK_F_ISR)、在每个20usec 项期间将禁用。

    您提到的1毫秒节拍周期是平均值、这是20微秒周期中的每一个? 如果是、我们的应用周期小于1ms (=20usec)。

    请检查此图片图像。

    此致、

    Kz777

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

    [引用 user="Kz777">您提到的1毫秒节拍周期平均值,这是20微秒的每一个术语? 如果是、我们的应用周期小于1ms (=20usec)。

    我不是很理解您的问题。  您的 BIOS CLK 节拍每隔1毫秒出现一次(除非您已更改)。  如果您的 GPIO HWI 花费20 μ s、并且您在该持续时间内屏蔽 CLK HWI、则 CLK 节拍 HWI 可能会延迟20 μ s。  发生这种情况时、之后的下一个 CLK 周期将在固定的1ms 边界上发生(除非该周期也因中断屏蔽而延迟)。

    例如、如果 正常 CLK HWI 出现在1000 μ s、2000 μ s、3000 μ s 等频率下(每1毫秒)、并且 GPIO HWI 出现在999 μ s、屏蔽 CLK HWI 达20 μ s、则 CLK HWI 将以1019而不是正常的1000提供服务。  但下一个 CLK HWI 将在2000、3000等时发生、从而保持实时。

    如果您对 CLK HWI 进行了某种屏蔽、使其达到1100微秒、并且该屏蔽以999微秒开始、则1000微秒 CLK HWI 直到2009微秒才会发生、因此缺少1000微秒的周期、并且它不会赶上、因此 CLK 的实时性会发生偏差。 1毫秒。

    希望这有助于您回答您的问题。

    此致、

    - Rob

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Rob:
    感谢您的回复。 我想确保时钟偏差有更多点。 我把它发送给您。
    我们要检查 BIOS CLK 在哪里标记为1msec。 您能告诉我们如何设置它吗?

    我想确保它。

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

    [引用 user="Kz777">我们要检查 BIOS CLK 在哪里标记为1msec。 您能告诉我们如何设置此项吗?

    自从我使用 DSP/BIOS 以来已经有一段时间了、但是在查看源代码时、我认为您需要设置:
       clk.microseconds = 1000;
    以实现1ms CLK 周期。  应该有一些 DSP/BIOS 文档涉及这一点、但我不记得文档的形式。

    您也可以通过 CLK.PRD =来设置它 ,其中 是进入 PRD 寄存器的实际值。  当以这种方式设置时、CLK 中断的实际时间(以秒为单位)将基于计时器的频率。

    此致、

    - Rob