0

我正在了解任务计划程序功能。例如,我正在开发 32 位英飞凌 Aurix Tricore 控制器,其任务调度程序设计为 5 毫秒。现在,如果我设计在 10 毫秒任务调度程序功能而不是 5 毫秒上运行我的应用程序,我应该考虑什么样的数据?

比如对 CPU 运行时间的影响、CPU 负载分析等?

就像我在低级代码中更改任务调度程序如何影响代码执行一样。

4

2 回答 2

0

如果您将整个调度程序更改为在 10ms 而不是 5ms 上运行,则应考虑 SW 是否能够及时检测到系统中的更改(例如,如果您有环境温度传感器等传感器,则概率5ms 内的值变化极为罕见。但另一方面,如果您检测到诸如车轮速度之类的东西,10ms 可能会很慢)。同样,您是否可以控制执行器以在系统中产生所需的响应也应该考虑。如果考虑到这两件事并且提供任务执行时间(而不是频率)在限制范围内,CPU 负载将不是问题。

注意:如果您的应用程序的代码在假设任务在 5 毫秒内运行的情况下计算延迟,则需要更改此设置

另一方面,如果您在 5ms 任务之外添加 10ms 任务,那么您应该考虑以下事项

1.添加新的时间片会增加额外的上下文切换操作,这会增加延迟。

2.同样基于任务的优先级和抢占/合作行为,一个任务可以在一段时间内阻塞另一个任务,这可能会导致功能滞后或导致其故障,但这只是一种可能性,不一定会发生,因为出色地 。

3.上下文拼接还意味着您现在需要使用比以前更多的堆栈区域,根据您的项目利用率,这可能会导致问题

您需要分析您的 SW 才能得出第 2 点和第 3 点的结论。我给出了一些有助于分析的示例

Ex1:如果 10ms 任务的执行时间(不是频率)与 5ms 任务的执行时间相比可以忽略不计,那么更好的选择是将这个功能也安排在 5ms 内,因为这样可以节省上下文切换时间以及堆栈大小.

Ex2:如果你的 10ms 任务的执行时间比较长,并且它的优先级低于 5ms 的优先级(并且可以被 5ms 任务抢占),那么最好在 10ms 任务中拥有该功能,因为这将有助于 5ms 任务完成它的执行在下一个切片之前。

于 2019-12-06T08:41:33.370 回答
0

简而言之,任务切片时间越小,多任务处理在用户面前就会越流畅。另一方面,更多的任务切换会增加切换任务而不是运行它们所花费的时间。

许多任务的较长时间意味着长时间重新访问相同的任务(例如,更生涩的行为)。

(注意:我通常在非常低端的 MCU 上使用 1ms 任务开关,结果非常好,总共大约 5-10 个任务。)

于 2019-03-29T08:54:08.597 回答