gpt4 book ai didi

c - 我应该为 FreeRTOS 系统上的程序选择什么调度?

转载 作者:行者123 更新时间:2023-11-30 19:26:27 25 4
gpt4 key购买 nike

我有一个用 FreeRTOS 制作的项目(2 人游戏)。游戏有3个任务(游戏渲染、操纵杆任务和 PC 串行通信)。

共享资源包括:

  • 玩家 1 和玩家 2 位置/坐标。它们分别由串行任务和操纵杆任务操纵。游戏渲染器读取这两个位置并显示它们。 (玩家 1 的位置与游戏渲染器共享,玩家 2 的位置与游戏渲染器共享)。
  • 在游戏渲染和串行任务之间共享的队列(发送数据和获取确认);队列在所有写入操作上都受到互斥体的保护。

我的问题是这两种调度中哪一个更适合这个项目:速率单调还是截止日期单调?

这些任务不是以串行通信使用 ack 的方式独立的吗?我认为它应该是截止日期单调但不完全确定?

最佳答案

要在 DMS 和 RMS 之间进行选择,您需要了解每项任务的周期和截止日期。根据我的经验,最好首先关注良好的整体设计,然后衡量和调整优先级以实现最佳响应时间。

我遇到过的良好设计原则的最佳总结是 this 。在你的情况下,我会将这两名玩家表示为 ' active objects ' 具有自己的输入事件队列。从串行任务甚至直接从 ISR 向玩家发送事件。游戏渲染也将是 AO从玩家或受互斥锁保护的资源接收事件 - 这取决于渲染输出是什么(主要需要多长时间)。串行输入和串行输出应被视为两个独立的事物 - 在大多数情况下,将两者混为一谈是没有意义的。

Here是另一个可能有用的链接 - 请参阅“1.4 “Fly ‘n’ Shoot”游戏的设计’

此外,xQueueSend 不需要互斥锁,而对于从 ISR 发送,您只需要使用 xQueueSendFromISR

关于c - 我应该为 FreeRTOS 系统上的程序选择什么调度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57244634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com