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/TMDXIDK5718:定时器6从 DSP 不工作

Guru**** 2601915 points
Other Parts Discussed in Thread: SYSBIOS, AM5718

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/646087/rtos-tmdxidk5718-timer-6-not-working-from-dsp

器件型号:TMDXIDK5718
Thread 中讨论的其他器件:SYSBIOSAM5718

工具/软件:TI-RTOS

你(们)好

我在 IDK5718上为 C66 DSP 创建了一个小型 SYSBIOS (V6.46.5.55)程序。 我使用的是 CCS 7.3。

它使用一个任务和一个计时器来运行 TimerFunction()。
每次 TimerFunction()由计时器 A 计数器递增调用。

可用的定时器为 Timer5和 Timer6 (可用性掩码= 0x0030)。
当我使用定时器5运行 TimerFunction()时,计数器递增,但 Task_sleep()永远不会返回。
另一方面,我使用定时器6运行 TimerFunction(),然后 Task_sleep()返回,但计数器保持为0。

在这两种情况下,我都可以看到 SYSBIOS 同时使用两个计时器(5和6),一个用于 TimerFunction(),另一个用于 ti_SysBIOS_KNL_Clock_dotick__i.
结果表明、计时器6不会生成中断。

然后、我看一下计时器6配置:
定时器在溢出模式中启动(TCLR 寄存器= 0x0000'0003);定时器5在这里具有相同的设置。 这似乎是正确的。
当计数器寄存器 TCRR 保持为0时、我检查了计时器输入时钟:

对于计时器5至8、这些计时器通过 IPU_L3_GICLK 和 TIMERj_GCLK (j=5...8)进行配置。

寄存器值为:

CM_IPU_CLKSTCTRL (地址0x4A00 5540):0x00003F02、看起来正确
CM_IPU_TIMER6_CLKCTRL (地址0x4A00 5560):0x0000'0002、这也是正确的(根据芯片勘误表建议 i874、避免出现"TIMER5/6/7/8中断未传播"错误)

附件您找到了我的项目。
您能确认这种行为吗?
计时器6还可以阻止运行什么?

此致、
Markus

e2e.ti.com/.../C66-on-IDK5718-_2D00_-Timer-6-not-working.zip

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    RTOS 团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我在 AM572x GP EVM 上使用 SYSBIOS 6.46.5.55尝试了您的测试项目。 对于计时器5、对于 timerISR 计数器增量、我没有任何问题、并且任务睡眠完成。 我选择该平台作为 evmAM572X。 对于计时器6、计时器不可用。

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

    你(们)好 Eric

    SYSBIOS 使用了哪些计时器?

    此致
    Markus

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

    你(们)好 Eric

    您说您已尝试我的测试项目。
    您如何同时将计时器5用于 TimerFunction()和 SYSBIOS 内核使用(Task_sleep)?

    正如您所说、计时器6不可用;在平台上运行项目时、会使用哪些计时器? (请参阅 ROV 查看器->计时器)

    此致、
    Markus

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

    您好!

    随附了具有预构建文件的测试项目。 我看到定时器中断计数器(定时器 ID 5、GP 定时器6)增加了并且 TaskSleep ()返回(定时器 ID 4、GP 定时器5)。

    此致、Eric

    e2e.ti.com/.../2330.temp.zip


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

    你(们)好 Eric

    我看到您稍微更改了配置文件、但这没有帮助。

    同时、我尝试了不同的设置和调试策略。
    突然我意识到它是有效的,但首先不能弄清楚我做了什么不同。

    经过一些测试后、我发现:

    设置1)当我像这样进行调试时,它“不*起作用:

    - IDK 完全断电/上电
    -启动目标配置
    -连接到 A15 ->执行 GEL 文件(以使 C66脱离复位状态)
    -连接到 C66
    -加载程序
    -程序在 main 暂停且不起作用("counter"保持为0、Task_sleep 返回)

    Setup2)当我执行以下操作时、它会起作用:

    - IDK 完全断电/上电
    -启动目标配置
    -连接到 A15 ->执行 GEL 文件(以使 C66脱离复位状态)
    -选择菜单"Run / Debug As / Code Composer Studio Debug Session"
    -程序在 main 暂停并且运行("counter"递增计数、Task_sleep 返回)

    您能不能给我一个提示:安装程序2上的不同操作是什么?

    此致、
    Markus

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

    我的测试基于设置1)唯一的区别是我使用的是 GP EVM。 我不理解您的设置2)、如何连接到 C66以及何时加载代码?

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

    1)使用设置2) Code Composer Studio 创建并启动调试配置。
    启动后、调试配置会自动连接到 C66并加载程序。
    之后,程序在 main()处停止。

    之后、新创建的调试配置会显示在调试配置列表中。
    从那时起、此调试配置可以手动启动、并且也可以正常工作。

    这对我来说是一个黑盒;我不知道 Code Composer Studio 在幕后做了什么。
    我认为它以某种方式配置某些寄存器(通过 GEL 文件?)、因为设置1和2中使用的程序代码)是
    完全相同。
    我希望您(或 TI 的其他人)能够对这种行为有所了解。

    您可能必须使用相同的 IDK (AM5718)才能重现我的结果。

    此致、
    Markus