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.

[参考译文] TMS320F28075:动态定时器 SYS/BIOS 定时不可靠

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1469546/tms320f28075-dynamic-timer-sys-bios-not-reliable-on-timing

器件型号:TMS320F28075
Thread 中讨论的其他器件:SYSBIOS

工具与软件:

亲爱的大家好

我们在使用 TMS320F28075S、并且检测到了一些时序问题。 不过、我们只是通过切换一些 GPIO 来研究 ISR 持续时间、并使用逻辑分析仪测量这些时间。

我们发现了几个问题,这将需要太长的时间来描述所有,我只列出最重要的一个:-)

我们将使用 SYS/BIOS (6.83.0.18)、并动态创建计时器中断(而不是在.cfg 文件中)、并在硬件 ISR 中布置 Swi、因此主工作负载在 SWI 上下文中完成、而不是在 HWI 上下文中完成。

然而、我们正面临这样的问题、即计时器 HWI 不会被 调用、如下所执行的操作。 只有在调用 ECAN0INTB_ISR HWI 时、才会发生这种情况。

Timer_create 函数基于 C2000 MCU 系列中的外设、并在硬件中断上下文中被调用。 它基于哪个外设? 一个 CPU 计时器还是一个 PWM? Timer_create 的第一个参数是逻辑 id。 它的用途是什么?
那么、它会具有 PIE 表中的哪一个优先级?

令我们感到惊讶的是、因为 CAN SWI 与计时器 ISR 完全不同。

您是否建议在 HWI 中发布 SWI 是一个好的做法。 根据我对 SYS/BIOS 手册的理解、我建议使用这样的方法。 但是、这会产生更多上下文切换、因此会降低效率。

如果我们在.cfg 文件中创建某些计时器或时钟、如何知道优先级?
TI RTOS 有一些中断。 我们如何知道他们的称呼、时间和时长?

白色:XINT HWI ISR (优先级120)

红色:XINT SWI ISR (由白色发布)

黄色:计时器 SWI (发布者:绿色)

绿色定时器 HWI ISR (优先级:不知道/请参见上面的问题)

蓝色:CAN HWI (优先级:102)

紫色:CAN SWI ISR (由蓝色发布)

Timer_Params timerParams;
Error_Block 错误块;
error_init (&errBlock);
Timer_Params_(&timerParams);
timerParams.period = 200u;
timerParams.periodType = Timer_Period microsec;
timerParams.arg = 1;
Timer_Handle Timer1 = Timer_create (1、TIMER1INT_ISR、&timerParams、&errBlock);

Timer_start (Timer1);//可能是伪代码…… :-)

感谢您发送编修

Robert

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

    尊敬的 Robert:

    感谢您的耐心。 您是否能够在调试此问题方面取得任何进展?

    Unknown 说:
    您认为在 HWI 中发布 SWI 是一个好做法吗?

    我认为这取决于您希望它具有的优先级。 Swi 的优先级低于所有 Hwi、但比任务的优先级更高、因此、如果你希望一直由 Hwi 中断、并且短中断延迟不重要、那么 Swi 会很有用。 它们的优先级也比 Hwi 优先级更有意义、因为 F28x 器件上的中断无法在硬件中配置、默认情况下不支持嵌套。不支持 Hwi_Params 结构中的优先级字段。 您需要 改用屏蔽设置

    Unknown 说:
    TI RTOS 有一些中断。 我们如何知道他们的电话号码、时间和时长?

    由于遗留原因、RTOSINT 被命名为这种方式、但是 SYS/BIOS 实际上并不会将 RTOSINT 用于任何用途。 我相信在使用 TIRTOS 时会突出显示 INT14、这是因为 CPU 计时器2是 SYS/BIOS 用于其时钟计时器的默认 CPU 计时器。 但是、如果您希望时钟模块使用其他某个 CPU 计时器、则时钟模块允许您指定不同的计时器 ID。 时钟模块的工作方式也是从定时器中断中布置一个 Swi、并且 Swi 优先级是可配置的(看起来默认为15)

    您可以在 CCS 中使用 ROV Classic 来查看系统上运行的 Hwi。 时钟模块的定时器中断最可能是一个中断。 我认为时间戳也可以在启用时使用计时器中断。

    惠特尼

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

    感谢您的答复。

    这对我们有很大帮助。

    在 HWI 中发布 SWI 时、我们测得的延迟为1.5us。 我假设、调度程序需要这段时间来唤醒、检查所有任务、检查其优先级以及存储变量和额外的时间。 如何检查调度程序需要多少时间?
    这肯定取决于任务数量和 ISR 被触发的程度。

    此致

    Robert

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

    SYSBIOS 文档提供了一些基准、在这些基准中、您可以了解调度程序执行、上下文切换等预计需要多长时间:

    https://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/bios/sysbios/6_83_00_18/exports/bios_6_83_00_18/packages/ti/sysbios/benchmarks/doc-files/TI_C28_float_ti_platforms_tms320x28_TMS320F280049M_time.html

    惠特尼

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

    谢谢、我不知道、SYS/BIOS 有一个基准