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.

[参考译文] TDA4VE-Q1:C7x 上的 FreeRTOS

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1658309/tda4ve-q1-freertos-on-c7x

器件型号: TDA4VE-Q1

您好、

我将在 j721s2 C7x 上使用 TI 移植的 FreeRTOS (ti-processor-sdk-rtos-j721s2-evm-11_02_00_06)。  我目前正在检查它的性能。  我制作了一个小的测试文件,可以在一个循环中从 RTOS 任务中运行一个代码示例,也可以简单地从 main() 函数中的粗软件计时器中运行(完全没有操作系统)
在示例代码中 、#define NO_OS_TEST define 用于切换模式。

C71_1_MAIN_TEST.c

在没有操作系统的情况下、从 main() 函数运行测试代码大约 820 个周期。  在几小时的测试过程中、测试代码记录的最高周期计数为 869、在典型时间内大约为 50 个周期。
使用 FreeRTOS 任务时、示例代码将以 820 个周期运行、但经常出现延迟的直通、周期计数最终在 1800 到 2000 以上的任何范围内。

问题只是什么原因导致了这种情况、为什么?  可以避免吗?   我想使用 FreeRTOS 任务来进行高优先级、时间敏感型计算(优先级为 configMAX_PRIORITY - 1)、但似乎经常被其他任务超越。

谢谢、
马特

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

    尊敬的 Matt:
    与裸机相比、使用 FreeRTOS 时的周期数预计会增加。 任务被抢占的原因可能是硬件中断、如节拍中断。 当触发硬件中断时、会调用 Hwi_disp_always_asm 文件、以保存寄存器的当前上下文、发生中断、然后在任务恢复之前恢复上下文。
    此致、
    Ben

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

    谢谢、
    基于此,我发现添加 taskEnter_Critical () 将保护测试代码不被操作系统中断,因此这是合理的。  

    因此、如果 在关键任务期间发生/正在发生此操作系统硬件中断或中断、可以安全地假设运行 ISR 的时间将是稳定的吗?  换言之、我们是否可以按照上面所述计划中断最大 1000~1200 μ s 周期,或者这是否会增加,并且可能会随着系统复杂性的增加而变 — 增加更多任务/OS 元素等?  

    谢谢、
    马特

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

    尊敬的 Matt:
    硬件中断开销保持不变、但我们不能保证随着任务大小的增加、总周期数保持不变。
    此致、
    Ben

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

    感谢您的答复、Ben。  马特已经去度假了下周。 我相信当他回来时、这将继续下去。

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

    您好 Joe、

    感谢您的更新。  

    此致、

    Ben